使用yaml文件configuration运行Kubectl

这里有一个类似的问题,但我想我想要不同的东西。 对于那些熟悉docker-compose的人来说,有一个很棒的命令,它在容器中运行一次命令,这有助于在每次部署之前启动迁移:

docker-compose -f docker-compose.prod.yml run web npm run migrate 

另外,因为这是一个单行命令,所以对于自动化目的来说很舒服:就像使用Makefile或ansible / chef / saltstack。

我唯一发现的是kubectl run ,它更类似于docker run 。 但docker-compose run允许我们使用configuration文件,其中docker运行不:

  kubectl run rp2migrate --command -- npm run migrate 

这可能会工作,但我需要列出20个环境variables,真的不想这样做在命令行中,而是我想通过一个标志,将指定yamlconfiguration像这样:

  kubectl run rp2migrate -f k8s/rp2/rp2-deployment.yaml --command -- npm run migrate 

编辑:

Kubernetes还将init containers作为betafunction(截至目前) – http://kubernetes.io/docs/user-guide/production-pods/#handling-initialization


您应该利用Kubernetes PostStart挂钩。 如下所示:

 lifecycle: postStart: exec: command: - "npm" - "run" - "migrate" 

http://kubernetes.io/docs/user-guide/container-environment/

为您的Pod指定的环境variables也将可用:

另外,容器中也可以使用来自pod定义的用户定义的环境variables,就像在Docker镜像中静态指定的任何环境variables一样

我正在使用kubernetes批处理作业执行一个时间命令,并有一个yamlconfiguration。

http://kubernetes.io/docs/user-guide/jobs/