added helm-chart
This commit is contained in:
4
example-app-helm-chart/example-app/Chart.yaml
Normal file
4
example-app-helm-chart/example-app/Chart.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
name: example-app
|
||||
version: 1.0.0-SNAPSHOT
|
||||
apiVersion: v2
|
||||
17
example-app-helm-chart/example-app/README.md
Normal file
17
example-app-helm-chart/example-app/README.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# example-app
|
||||
|
||||
## Configuration
|
||||
|
||||
The following table lists the configurable parameters and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| --- | --- | --- |
|
||||
| `app.image` | The container image to use. | docker.io/root/example-app:1.0.0-SNAPSHOT |
|
||||
| `app.ports.http` | The http port to use for the probe. | 8080 |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
||||
```
|
||||
$ helm install --name chart-name -f values.yaml .
|
||||
```
|
||||
> **Tip**: You can use the default [values.yaml](values.yaml)
|
||||
72
example-app-helm-chart/example-app/templates/NOTES.txt
Normal file
72
example-app-helm-chart/example-app/templates/NOTES.txt
Normal file
@@ -0,0 +1,72 @@
|
||||
# Quarkus Helm Notes
|
||||
|
||||
To access the Helm annotations or properties you just need to have the following dependency in your
|
||||
class path:
|
||||
|
||||
<dependency>
|
||||
<groupId>io.quarkiverse.helm</groupId>
|
||||
<artifactId>quarkus-helm</artifactId>
|
||||
<version>{quarkus-helm-version}</version>
|
||||
</dependency>
|
||||
|
||||
Build the project using:
|
||||
|
||||
mvn clean package
|
||||
|
||||
You can find the generated Helm artifacts under: `target/helm/kubernetes/<chart name>/` that should look like:
|
||||
- Chart.yaml
|
||||
- values.yaml
|
||||
- templates/*.yml the generated resources by Quarkus Helm
|
||||
|
||||
**Note**: The `<chart name>` is set from either the property `quarkus.helm.name` or the `@HelmChart` annotation or the Quarkus application.
|
||||
|
||||
# Requirements
|
||||
|
||||
- Have installed [the Helm command line](https://helm.sh/docs/intro/install/)
|
||||
- Have connected/logged to a kubernetes cluster
|
||||
- Configure your Quarkus application to use any of the Quarkus Kubernetes extensions like Quarkus Kubernetes, Quarkus OpenShift or Quarkus Knative.
|
||||
- Configure your Quarkus application to use any of [the Quarkus Container Image extensions](https://quarkus.io/guides/container-image) - This example uses `container-image-docker`.
|
||||
|
||||
# How can it be used?
|
||||
|
||||
You can run the following Maven command in order to generate the Helm artifacts and build/push the image into a container registry:
|
||||
|
||||
```shell
|
||||
mvn clean package -Dquarkus.container-image.build=true -Dquarkus.container-image.push=true -Dquarkus.container-image.registry=<your container registry> -Dquarkus.container-image.group=<your container registry namespace>
|
||||
```
|
||||
|
||||
This command will push the image to a container registry and will become available when a pod or container is created.
|
||||
|
||||
Finally, let's use Helm to deploy it into the cluster:
|
||||
|
||||
```shell
|
||||
helm install helm-example ./target/helm/kubernetes/<chart name>
|
||||
```
|
||||
|
||||
The above command will deploy a chart using the default values (as defined within the `values.yaml` file). We can override the default values to use your `values.dev.yaml` file by executing the following command:
|
||||
|
||||
```shell
|
||||
helm install helm-example ./target/helm/kubernetes/<chart name> --values ./target/helm/<chart name>/kubernetes/values.dev.yaml
|
||||
```
|
||||
|
||||
How can I update my deployment?
|
||||
|
||||
- Via the `upgrade` option of Helm command line:
|
||||
|
||||
After making changes to your project and regenerating the Helm resources and the application container image, then you need to upgrade your deployment:
|
||||
|
||||
```shell
|
||||
helm upgrade helm-example ./target/helm/kubernetes/<chart name>
|
||||
```
|
||||
|
||||
- Via the `set` option of Helm command line:
|
||||
|
||||
```shell
|
||||
helm upgrade helm-example ./target/helm/kubernetes/<chart name> --set <app name>.replicas=1
|
||||
```
|
||||
|
||||
How can we delete my deployment?
|
||||
|
||||
```shell
|
||||
helm uninstall helm-example
|
||||
```
|
||||
43
example-app-helm-chart/example-app/templates/deployment.yaml
Normal file
43
example-app-helm-chart/example-app/templates/deployment.yaml
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
app.quarkus.io/quarkus-version: 3.22.3
|
||||
app.quarkus.io/build-timestamp: 2025-05-26 - 06:36:42 +0000
|
||||
labels:
|
||||
app.kubernetes.io/name: example-app
|
||||
app.kubernetes.io/version: 1.0.0-SNAPSHOT
|
||||
app.kubernetes.io/managed-by: quarkus
|
||||
name: example-app
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: example-app
|
||||
app.kubernetes.io/version: 1.0.0-SNAPSHOT
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
app.quarkus.io/quarkus-version: 3.22.3
|
||||
app.quarkus.io/build-timestamp: 2025-05-26 - 06:36:42 +0000
|
||||
labels:
|
||||
app.kubernetes.io/managed-by: quarkus
|
||||
app.kubernetes.io/name: example-app
|
||||
app.kubernetes.io/version: 1.0.0-SNAPSHOT
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: {{ .Values.app.secret }}
|
||||
containers:
|
||||
- env:
|
||||
- name: KUBERNETES_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
image: {{ .Values.app.image }}
|
||||
imagePullPolicy: Always
|
||||
name: example-app
|
||||
ports:
|
||||
- containerPort: {{ .Values.app.ports.http }}
|
||||
name: http
|
||||
protocol: TCP
|
||||
22
example-app-helm-chart/example-app/templates/service.yaml
Normal file
22
example-app-helm-chart/example-app/templates/service.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
app.quarkus.io/quarkus-version: 3.22.3
|
||||
app.quarkus.io/build-timestamp: 2025-05-26 - 06:36:42 +0000
|
||||
labels:
|
||||
app.kubernetes.io/name: example-app
|
||||
app.kubernetes.io/version: 1.0.0-SNAPSHOT
|
||||
app.kubernetes.io/managed-by: quarkus
|
||||
name: example-app
|
||||
spec:
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
protocol: TCP
|
||||
targetPort: {{ .Values.app.ports.http }}
|
||||
selector:
|
||||
app.kubernetes.io/name: example-app
|
||||
app.kubernetes.io/version: 1.0.0-SNAPSHOT
|
||||
type: ClusterIP
|
||||
25
example-app-helm-chart/example-app/values.schema.json
Normal file
25
example-app-helm-chart/example-app/values.schema.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"$schema" : "https://json-schema.org/draft-07/schema#",
|
||||
"properties" : {
|
||||
"app" : {
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"image" : {
|
||||
"description" : "The container image to use.",
|
||||
"type" : "string"
|
||||
},
|
||||
"ports" : {
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"http" : {
|
||||
"description" : "The http port to use for the probe.",
|
||||
"type" : "integer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title" : "Values",
|
||||
"type" : "object"
|
||||
}
|
||||
6
example-app-helm-chart/example-app/values.yaml
Normal file
6
example-app-helm-chart/example-app/values.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
app:
|
||||
image: docker.io/root/example-app:1.0.0-SNAPSHOT
|
||||
ports:
|
||||
http: 8080
|
||||
secret: nexus-secret
|
||||
Reference in New Issue
Block a user