如何使用部署中定义的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
4条答案
按热度按时间iqxoj9l91#
您已经在容器 * 内部 * 创建了一个环境变量。这与容器名称无关。此变量只能在您正在运行的容器中引用,而不能在
.yaml
文件中引用。如果您只想为容器使用特殊名称,请尝试以下操作:
yeotifhr2#
你不能在部署中使用变量来设置值。如果你想这样做,你必须在执行kubectl之前处理文件,看看这个post。最好的选择是使用Helm,它的重点是参数化和标准化部署
vpfxa7rd3#
在这些情况下,我只是在应用yaml之前用正确的值替换yaml中的
$CONT_NAME
。sed -ie "s/\$COUNT_NAME/$COUNT_NAME/g" yourYamlFile.yaml
个eanckbw94#
如果你使用fluxcd,它有能力做变量插值链接