Есть что-то вроде `helm exec`?

Я использую следующие команды helm (2.4.2) в своем сценарии gitlab-ci.yml:

- 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}"

Это часть развертывания в моей среде подготовки/проверки. После выполнения вышеуказанных команд я хотел бы выполнить команды для модуля my-app для создания/переноса базы данных. На данный момент это достигается за счет использования initContainer (определенного в указанном файле yaml). Но я бы предпочел, чтобы логика была частью сценария CI, поэтому мне не нужно иметь отдельный файл развертывания для производства.

Есть ли способ сделать это с помощью helm? Или мой единственный вариант использовать kubectl exec? Если я использую kubectl exec, есть ли простой способ получить имя модуля с помощью helm?


person Mitkins    schedule 06.06.2017    source источник


Ответы (1)


Эта проблема GitHub касается того, как вы можете использовать kubectl, чтобы узнать имя модуля на основе метки:

https://github.com/kubernetes/kubernetes/issues/8876

Я реализовал следующее:

- export POD_NAME=`kubectl get pod -l "app=myapp-web-chart" -o jsonpath='{.items[0].metadata.name}'`
- kubectl exec $POD_NAME -- mix ecto.migrate

Тем не менее, было бы гораздо лучше, если бы существовал способ сделать это с помощью helm

person Mitkins    schedule 06.06.2017