【问题标题】:Kubernetes Deployment - Pass argumentsKubernetes 部署 - 传递参数
【发布时间】:2020-09-08 18:22:14
【问题描述】:

当我使用kubectl 命令应用部署文件时,我想将参数传递给 Kubernetes 部署。

示例:在我的部署 .yaml 中,我有如下参数,我想在使用 kubectl apply - f <my-deployment>.yaml 运行时传递参数值

因此,在下面的示例中,我想在运行上述 kubectl 命令时覆盖 args - 用户 ID 和角色。

spec:
      containers:
        - name: testimage
          image: <my image name>:<tag>
          args:
          - --userid=testuser
          - --role=manager

【问题讨论】:

  • 您可能正在寻找像 Helm 这样的模板工具,或者像 Kustomize 这样可以对 Kubernetes 清单进行更有针对性的修改的工具。如果您控制应用程序,将设置作为环境变量传递比命令行参数更易于管理。
  • 谢谢!我目前不使用 Kustomize。当我运行 kubectl cmd 来部署部署 yaml 时,有没有办法传递参数值?除了 Helm 或 Kustomize 之外,还有其他选择吗?谢谢!

标签: kubernetes kubectl kubernetes-deployment


【解决方案1】:

这应该添加到你的 deployment.yml

spec: 
  containers: 
    - name: testimage 
      image: <my image name>:<tag> 
      args: ["--userid","=","testuser","--role","=","manager"]

【讨论】:

  • 谢谢!你能否让我知道我可以在哪里传递这个参数:上面?我可以作为参数传递给 kubectl cmd 吗?你能举个例子吗?谢谢!
  • 请自行添加部署 yml。规格:容器:-名称:testimage图像:: 参数:[“--userid”,“=”,“testuser”,“--role”,“=”,“经理”]
  • 谢谢!以下内容不起作用,因为我想在应用部署 yaml 时使用 kubectl 命令传递参数的值。下面设置了我相信的值。如何在不更改部署 yaml 的情况下传递不同的值?规格:容器:-名称:testimage图像:: 参数:[“--userid”,“=”,“testuser”,“--role”,“=”,“经理”]
  • @JaskiratSra 您在评论会话中添加的内容实际上是您回答的宝贵意见。别忘了你可以edit你的帖子(这次我做到了)。
【解决方案2】:

简单的答案是。你不能那样做。

kubectl 不是模板引擎。正如一些人提到的,你有 Helm 或 Kustomize 之类的选项可以解决这个问题。我鼓励您研究一下 Helm3,因为它可以通过 helm upgrade --install ... --set userid=xxx --set role=yyy 之类的命令很好地解决您的问题。

如果您只使用 kubectl,您可能希望使用它从标准输入获取 yaml 并首先通过任何类型的模板传递您的 yaml 的能力。 IE。如下:

...
args:
- --userid=$USER
- --role=$ROLE
...
cat resource.yaml | USER=testuser ROLE=manager envsubst | kubectl apply -f -

显然任何其他字符串替换方法都可以(sed、awk 等)

【讨论】:

    猜你喜欢
    • 2020-07-02
    • 2019-06-12
    • 1970-01-01
    • 2021-07-05
    • 2020-11-07
    • 2020-09-08
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多