在Kubernetes中使用yaml部署文件内的env变量

gjmwrych  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(4)|浏览(602)

如何使用部署中定义的env变量?例如,在下面的yaml文件中,我尝试使用env CONT_NAME设置容器名称,但没有成功。您能帮助我吗?如何操作?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: $CONT_NAME
        image: nginx:1.7.9
        env:
        - name: CONT_NAME
          value: nginx
        ports:
        - containerPort: 80
iqxoj9l9

iqxoj9l91#

您已经在容器 * 内部 * 创建了一个环境变量。这与容器名称无关。此变量只能在您正在运行的容器中引用,而不能在.yaml文件中引用。
如果您只想为容器使用特殊名称,请尝试以下操作:

spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
yeotifhr

yeotifhr2#

你不能在部署中使用变量来设置值。如果你想这样做,你必须在执行kubectl之前处理文件,看看这个post。最好的选择是使用Helm,它的重点是参数化和标准化部署

vpfxa7rd

vpfxa7rd3#

在这些情况下,我只是在应用yaml之前用正确的值替换yaml中的$CONT_NAME
sed -ie "s/\$COUNT_NAME/$COUNT_NAME/g" yourYamlFile.yaml

eanckbw9

eanckbw94#

如果你使用fluxcd,它有能力做变量插值链接

相关问题