Container 的 NodeJS 代码中如何直接使用 Azure Pipelines 中的变量?

How variables in Azure Pipelines be used in Container's NodeJS code directly?

我尝试在 Azure Pipelines 的 Release 中设置变量,可以使用 Release 中的 Command Task 将变量值替换为 Docker Kubernetes 的 .yaml 文件。

它对我来说很好,但我需要准备几个命令任务来一个一个地替换变量。

例如,我在Pipelines的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); --> undefined

我认为您应该为此使用配置映射(也许更新配置映射中的值)。你不应该直接更新容器。这为您提供了灵活性和管理能力。示例:

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

然后,如果某些值发生变化,您将更新配置映射,所有引用此配置映射的 pods 都会获得新值。

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-container-environment-variables-using-configmap-data