这里有一个类似的问题,但我想我想要不同的东西。对于那些熟悉 docker-compose 的人来说,有一个出色的命令可以在容器中运行命令一次,这对于在每次部署之前启动迁移非常有帮助:
docker-compose -f docker-compose.prod.yml run web npm run migrate
Run Code Online (Sandbox Code Playgroud)
另外,因为这是一个单行命令,所以它很适合自动化目的:就像使用 Makefile 或 ansible/chef/saltstack 一样。
我唯一发现的是kubectl run
哪个更类似于docker run
. 但docker-compose run
允许我们使用配置文件,而 docker-run 则不允许:
kubectl run rp2migrate --command -- npm run migrate
Run Code Online (Sandbox Code Playgroud)
这可能会起作用,但我需要列出 20 个环境变量,并且真的不想在命令行中执行此操作。相反,我想传递一个标志来指定 yaml 配置,如下所示:
kubectl run rp2migrate -f k8s/rp2/rp2-deployment.yaml --command -- npm run migrate
Run Code Online (Sandbox Code Playgroud)
编辑:
Kubernetes 还获得了init containers
Beta 功能(截至目前) - http://kubernetes.io/docs/user-guide/product-pods/#handling-initialization
您可能应该利用 Kubernetes PostStart 挂钩。像下面这样:
lifecycle:
postStart:
exec:
command:
- "npm"
- "run"
- "migrate"
Run Code Online (Sandbox Code Playgroud)
http://kubernetes.io/docs/user-guide/container-environment/
为您的 pod 指定的环境变量也将可用:
此外,pod 定义中的用户定义的环境变量也可用于容器,就像 Docker 映像中静态指定的任何环境变量一样
归档时间: |
|
查看次数: |
7979 次 |
最近记录: |