Is there something like `helm exec`?

6/6/2017

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?

-- Mitkins
kubectl
kubernetes
kubernetes-helm

1 Answer

6/6/2017

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

-- Mitkins
Source: StackOverflow