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

时间:2019-01-22 17:52:44

标签: docker kubernetes environment-variables azure-pipelines azure-pipelines-release-pipeline

我试图在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); ->未定义

1 个答案:

答案 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都会获得新值。

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