Как переменные в конвейерах Azure могут использоваться непосредственно в коде NodeJS контейнера? - PullRequest
0 голосов
/ 22 января 2019

Я попытался установить переменные в выпуске конвейеров Azure, которые можно использовать с помощью командного задания в выпуске, чтобы заменить значения переменных в файле Docker Kubernetes .yaml.

Это прекрасно работает для меня, но мне нужно подготовить несколько командных задач для замены переменных по одной.

Например, я установил переменную TESTING1_ (значение: Test1), TESTING2_ (значение: Test2) и TESTING3_ (значение: Test3) в выпуске конвейеров. Тогда я использовал командную задачу только для замены TESTING1_ на $ (TESTING1_) в файле Docker Kubernetes .yaml. Ниже приведены исходные настройки среды в файле .yaml:

spec:
  containers:
  - name: devops
      env:
      - name: TESTING1
        value: TESTING1_
      - name: TESTING2
        value: $(TESTING2_)

После запуска выпуска конвейеров распечатайте результаты в NodeJS:

console.log (process.env.TESTING1); -> Test1

console.log (process.env.TESTING2); -> $ (TESTING2 _)

console.log (process.env.TESTING3); -> undefined

1 Ответ

0 голосов
/ 22 января 2019

Я думаю, вы должны использовать карты конфигурации для этого (возможно, обновить значения в картах конфигурации). Вы не должны обновлять контейнеры напрямую. это дает вам гибкость и управление. Пример:

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

и затем, если какое-либо значение изменяется, вы обновляете карту конфигурации, и все модули, которые ссылаются на эту карту конфигурации, получают новое значение.

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

...