2

我在脚本中使用以下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-apppod 执行命令以创建/迁移数据库。目前,这是通过使用initContainer(在引用的 yaml 文件中定义的)来实现的。但我更希望逻辑成为 CI 脚本的一部分 - 所以我不必为生产提供单独的部署文件。

有没有办法做到这一点helm?还是我唯一的选择kubectl exec?如果我使用kubectl exec,是否有一种简单的方法来获取使用的 pod 名称helm

4

1 回答 1

0

这个 GitHub 问题解决了如何kubectl根据标签找出 pod 的名称:

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

于 2017-06-06T14:20:26.943 回答