I use the following helm
(2.4.2) commands in my gitlab-ci.yml
script:
- helm upgrade --install myapp-db --wait --set postgresUser=postgres,postgresPassword=postgres,postgresDatabase=myapp stable/postgresql
- helm upgrade --install myapp-web ./myapp-chart --wait --set env.DATABASE_URL="${DATABASE_URL}"
It's part of a deployment to my staging/review environment. After the above commands complete, I would like to execute commands against the my-app
pod to create/migrate the database. At the moment this is achieved through the use of an initContainer
(defined in the referenced yaml file). But I would prefer the logic to be part of the CI script - so I don't have to have a separate deployment file for production.
Is there a way to do this with helm
? Or is my only option to use kubectl exec
? If I use kubectl exec
, is there an easy way to get the name of the pod using helm
?
This GitHub issue addresses how you might use kubectl
to find out the name of a pod based on a label:
https://github.com/kubernetes/kubernetes/issues/8876
I implemented the following:
- export POD_NAME=`kubectl get pod -l "app=myapp-web-chart" -o jsonpath='{.items[0].metadata.name}'`
- kubectl exec $POD_NAME -- mix ecto.migrate
Still, it would be much nicer if there was a way to do this with helm