【问题标题】:Kubectl run using yaml file configKubectl 使用 yaml 文件配置运行
【发布时间】:2017-01-26 07:24:41
【问题描述】:

有一个类似的问题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

【问题讨论】:

    标签: docker kubernetes


    【解决方案1】:

    编辑:

    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 指定的环境变量也将可用:

    此外,来自 pod 定义的用户定义的环境变量也可用于容器,就像在 Docker 映像中静态指定的任何环境变量一样

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-09-30
        • 1970-01-01
        • 1970-01-01
        • 2022-11-05
        • 2016-02-05
        • 2020-05-07
        • 2021-05-28
        • 2021-08-28
        • 1970-01-01
        相关资源
        最近更新 更多