Kubectl使用yaml文件配置运行

时间:2016-09-18 14:57:50

标签: docker kubernetes

有一个类似的问题here,但我想我想要不同的东西。 对于那些熟悉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允许我们使用配置文件,其中docker-run不会:

 kubectl run rp2migrate --command -- npm run migrate

这可能会有效,但我需要列出20个环境变量,并且真的不想在命令行中执行此操作..而是我想传递一个标志,指定yaml配置如下:

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

2 个答案:

答案 0 :(得分:2)

编辑:

Kubernetes还获得init containers作为测试版功能(截至目前) - 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指定的环境变量也可用:

  

此外,容器中也可以使用容器定义中的用户定义环境变量,Docker镜像中静态指定的任何环境变量也是如此

答案 1 :(得分:1)

我正在使用kubernetes批处理作业来执行一次命令并使用yaml配置。

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