【问题标题】:How to use environmental value inisde kubernetes yaml file如何使用环境值inisde kubernetes yaml文件
【发布时间】:2019-10-26 20:01:01
【问题描述】:

我有一个 Kubernetes 部署文件,例如:

我希望在运行 kubectl create -f deployment.yaml 命令时在命令行中传递 image_tag。并假设我执行了导出 IMAGE_TAG=1.4.3 并希望使用该 ENV 变量值插入到图像标签的位置。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
     containers:
     - name: nginx
       image: nginx:{IMAGE_TAG}
    ports:
     - containerPort: 80

【问题讨论】:

标签: docker kubernetes yaml google-kubernetes-engine kubernetes-helm


【解决方案1】:

我这样做:

sed -i "s/{IMAGE_TAG}/${IMAGE_TAG}/" deployment.yml
kubectl apply -f deployment.yml

因为kubectl不支持

【讨论】:

  • 这是我可以做的一种方式,但有没有其他方法可以通过使用 sed 命令实现同样的事情
  • 你可以使用envsubst
【解决方案2】:

最优雅的方式。你需要安装 envsubst 二进制文件

export key1=val1
export key2=val2
envsubst < deployment.yaml | kubectl apply -f -

【讨论】:

    【解决方案3】:

    Kubectl 不支持开箱即用的变量。因为它是基于标签的。对于您想要实现的目标,您有不同的选择。最受欢迎的选项是 Helm,但是,Kustomize,一个新玩家正在从社区中获得很大的吸引力。您还可以使用其他工具,例如 Terraform,我认为这是一个非常不错的选择,但不幸的是被忽略了。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2018-06-26
      • 1970-01-01
      • 2020-05-10
      • 2021-12-07
      • 2018-06-26
      • 2017-11-28
      • 2016-09-03
      • 2019-09-09
      相关资源
      最近更新 更多