How to add dependency to Helm Chart
Add postgresql chart dependency to helm chart

Search for a command to run...
Add postgresql chart dependency to helm chart

No comments yet. Be the first to comment.
21 great ways to stop procrastinating and get more done in less time

Host helm chart repository on GitHub pages using GitHub Actions

Write helm chart for Spring Boot application and install in Kubernetes cluster

A quick start guide to helm repository, chart

This is continuation to previous article. If you have not followed earlier steps, I would recommend to refer earlier article
In previous step we created chart for usermanagement application which uses built-in H2 database. However, we would like to use production grade database to have data persistence.
In this step we will add existing bitnami/postgresql chart and use it to provide persistence to our usermanagement application.
Let's add postgresql dependencies to existing Chart.yaml
charts/myapp/Chart.yaml
dependencies:
- name: postgresql
version: "10.13.8"
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
Append below values to existing values.yaml file. This configuration is based on postgresql subchart.
Chart.yaml dependencies.If you need to view bitnami/postgresql chart, you can download and unzip on your machine with below command, it creates postgresql charts directory.
You can refer the postgresql/values.yaml to override in your parent chart.
helm pull bitnami/postgresql --untar
charts/myapp/template/values.yaml
postgresql:
enabled: true
global:
postgresql:
postgresqlDatabase: "usersdb"
postgresqlPassword: "Hello@123"
postgresqlUsername: "userservice-pguser"
servicePort: "5432"
UserManagement application uses embedded h2 database with default profile, if external database to be used kyma spring profile needs to be enabled.
kyma expects external database configuration with below environment variablesDB_HOST, DB_NAME, MASTER_PASSWORD, MASTER_USERNAMEcharts/myapp/template/deployment.yaml
env:
{{- if .Values.postgresql.enabled }}
- name: SPRING_PROFILE
value: "kyma"
- name: DB_HOST
value: "{{ .Release.Name}}-postgresql-headless"
- name: DB_NAME
value: {{ .Values.postgresql.global.postgresql.postgresqlDatabase | quote }}
- name: MASTER_PASSWORD
value: {{ .Values.postgresql.global.postgresql.postgresqlPassword | quote }}
- name: MASTER_USERNAME
value: {{ .Values.postgresql.global.postgresql.postgresqlUsername | quote }}
- name: DB_PORT
value: {{ .Values.postgresql.global.postgresql.servicePort | quote }}
{{- end }}
Let's now build dependency to fetch the sub-chart. This command synchronizes between the desired dependencies and the actual dependencies stored in the charts/myapp/charts/ directory.
helm dependency update charts/myapp
Helm downloads the Postgresql chart postgresql-10.13.8.tgz in charts/myapp/chart directory and adds charts/myapp/Chart.lock file
charts/myapp
├── Chart.lock
├── Chart.yaml
├── charts
│ └── postgresql-10.13.8.tgz
...
Let's install helm chart with dependency to Kubernetes cluster. Below command should create postgresql resources along with usermanagement application.
helm install demo2 charts/myapp
You can follow the NOTES shown after installation and access the application using
Let's check all the resources installed with the helm chart. If you have only demo2 helm release then you should see below resources
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/demo2-postgresql-0 2/2 Running 0 11m
pod/demo2-user-service-c6468c69c-f8zqf 2/2 Running 0 11m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/demo2-postgresql ClusterIP 100.71.10.27 <none> 5432/TCP 11m
service/demo2-postgresql-headless ClusterIP None <none> 5432/TCP 11m
service/demo2-user-service ClusterIP 100.71.31.125 <none> 80/TCP 11m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/demo2-user-service 1/1 1 1 11m
NAME DESIRED CURRENT READY AGE
replicaset.apps/demo2-user-service-c6468c69c 1 1 1 11m
NAME READY AGE
statefulset.apps/demo2-postgresql 1/1 11m
As a good practice, let's cleanup the resources with below command
helm uninstall demo2
We saw how we can add sub chart dependency to in your application helm chart. You can try applying to your application by adding other chart dependencies.
In next article, we'll see how we can release the chart so that it can be shared with others and to other Kubernetes cluster environments
You can visit next article on using GitHub Action CI-CD pipeline to package, test, and release helm chart to GitHub pages.