我试图在Azure Pipelines的Release中设置变量,该变量可用于Release中的Command Task,以将变量的值替换为Docker Kubernetes的.yaml文件。
对我来说很好,但是我需要准备几个命令任务来逐一替换变量。
例如,我在管道的Release中设置了变量TESTING1_(value:Test1),TESTING2_(value:Test2)和TESTING3_(value:Test3)。然后我仅使用Command Task将Docker Kubernetes的.yaml文件中的TESTING1_替换为$(TESTING1_)。以下是.yaml文件中的原始环境设置:
spec:
containers:
- name: devops
env:
- name: TESTING1
value: TESTING1_
- name: TESTING2
value: $(TESTING2_)
运行Pipelines发布后,在NodeJS中打印出的结果是:
console.log(process.env.TESTING1); -> Test1
console.log(process.env.TESTING2); -> $(TESTING2 _)
console.log(process.env.TESTING3); ->未定义
答案 0 :(得分:1)
我认为您应该为此使用配置映射(也许更新配置映射中的值)。您不应该直接更新容器。这为您提供了灵活性和管理能力。例如:
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.how
,然后,如果某些值发生更改,则您将更新配置映射,并且引用此配置映射的所有pod都会获得新值。