-
Notifications
You must be signed in to change notification settings - Fork 550
Description
Describe the bug
Requires/blocked by #2392
k8s:helm-dependency-update https://helm.sh/docs/helm/helm_dependency_update
As an user, I want to create a Helm chart with JKube that has a dependency.
Eclipse JKube version
1.11.0
Component
Kubernetes Maven Plugin
Apache Maven version
other (please specify in additional context)
Gradle version
None
Steps to reproduce
Use my fork of https://github.com/rohankanojia-forks/eclipse-jkube-helm-demo which uses the kubernetes-maven-plugin instead of the openshift-maven-plugin and has a dependency on the wildlfly Helm chart.
git clone https://github.com/jmesnil/eclipse-jkube-helm-demo
cd eclipse-jkube-helm-demo/jkube-helm-maven
mvn clean k8s:resource k8s:helm -Pxml-configuration
helm install -g target/jkube/helm/kubernetes/
Installation of the Helm chart fails with the error:
Error: INSTALLATION FAILED: An error occurred while checking for chart dependencies. You may need to run `helm dependency build` to fetch missing dependencies: found in Chart.yaml, but missing in charts/ directory: wildfly
Content of the Chart.yaml file is correct (with a wildfly dependency):
$ cat target/jkube/helm/kubernetes/Chart.yaml
---
---
apiVersion: v1
name: jkube-helm-maven
home: https://www.eclipse.org/jkube/
sources:
- https://github.com/eclipse/jkube
version: 1.0.0-SNAPSHOT
description: JKube Helm Maven demo Helm Chart (XML)
keywords:
- eclipse
- jkube
- kubernetes
- maven
maintainers:
- name: Maintainer1
email: [email protected]
url: maintainer1.org
- name: Maintainer2
email: [email protected]
url: maintainer2.org
icon: https://helm.sh/img/helm.svg
dependencies:
- name: wildfly
version: 1.3.0
repository: https://docs.wildfly.org/wildfly-charts/
Expected behavior
The Helm Chart is successfully installed.
Runtime
Kubernetes (vanilla)
Kubernetes API Server version
1.25.3
Environment
macOS
Eclipse JKube Logs
[INFO] --- k8s:1.11.0:resource (default-cli) @ jkube-helm-maven ---
[INFO] k8s: Running generator quarkus
[INFO] k8s: quarkus: Using Docker image quay.io/jkube/jkube-java:0.0.17 as base / builder
[INFO] k8s: Using resource templates from /Users/jmesnil/tmp/eclipse-jkube-helm-demo/jkube-helm-maven/src/main/jkube
[INFO] k8s: jkube-controller: Adding a default Deployment
[INFO] k8s: jkube-service: Adding a default service 'jkube-helm-maven' with ports [8080]
[INFO] k8s: jkube-service-discovery: Using first mentioned service port '8080'
[INFO] k8s: jkube-revision-history: Adding revision history limit to 2
[INFO] k8s: validating /Users/jmesnil/tmp/eclipse-jkube-helm-demo/jkube-helm-maven/target/classes/META-INF/jkube/kubernetes/jkube-helm-maven-deployment.yml resource
[INFO] k8s: validating /Users/jmesnil/tmp/eclipse-jkube-helm-demo/jkube-helm-maven/target/classes/META-INF/jkube/kubernetes/jkube-helm-maven-service.yml resource
[INFO]
[INFO] --- k8s:1.11.0:helm (default-cli) @ jkube-helm-maven ---
[INFO] k8s: Creating Helm Chart "jkube-helm-maven" for KubernetesSample Reproducer Project
https://github.com/jmesnil/eclipse-jkube-helm-demo/tree/main/jkube-helm-maven
Additional context
The installation is failing as JKube does not update the dependencies in the Chart directory.
When the Helm chart is generated it contains:
$ tree target/jkube/helm/kubernetes/
target/jkube/helm/kubernetes/
├── Chart.yaml
├── README.md
├── templates
│ ├── jkube-helm-maven-deployment.yaml
│ └── jkube-helm-maven-service.yaml
└── values.yaml
To be able to install the chart with its wildfly dependency, I must run helm dependency update:
$ helm dependency update ./target/jkube/helm/kubernetes
Getting updates for unmanaged Helm repositories...
...Successfully got an update from the "https://docs.wildfly.org/wildfly-charts/" chart repository
Update Complete. ⎈Happy Helming!⎈
Saving 1 charts
Downloading wildfly from repo https://docs.wildfly.org/wildfly-charts/
Deleting outdated charts
The content of the Chart is then correct:
$ tree target/jkube/helm/kubernetes
target/jkube/helm/kubernetes
├── Chart.yaml
├── README.md
├── charts
│ └── wildfly-1.3.0.tgz
├── requirements.lock
├── templates
│ ├── jkube-helm-maven-deployment.yaml
│ └── jkube-helm-maven-service.yaml
└── values.yaml
And I can finally install it:
$ helm install -g target/jkube/helm/kubernetes/ --set wildfly.build.uri=https://github.com/wildfly-up-and-running/wuar-demo --set wildfly.build.enabled=false --set wildfly.deploy.route.enabled=false
NAME: kubernetes-1680096807
LAST DEPLOYED: Wed Mar 29 15:33:27 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
(Don't pay attention to the --set values, they are required by the wildfly Helm Chart to deploy on Kubernetes instead of OpenShift)
At first glance, the code at https://github.com/eclipse/jkube/blob/1b6af6b4f49f25cd0db4df6554df6566a28bf174/jkube-kit/resource/helm/src/main/java/org/eclipse/jkube/kit/resource/helm/HelmService.java#L80 is missing the helm dependency update execution to provide an installable Helm Chart.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status