Как вытащить переменные окружения с руля графики



У меня есть мое развертывание.файл yaml в каталоге шаблонов диаграмм Helm с несколькими переменными окружения для контейнера, который я буду запускать с помощью Helm.



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



Как мне передать это и заставить helm захватить переменные среды локально, когда я использую Helm для запуска приложения?



Вот некоторая часть моего развертывания.и YAML файл



...
...
spec:
restartPolicy: Always
containers:
- name: sample-app
image: "sample-app:latest"
imagePullPolicy: Always
env:
- name: "USERNAME"
value: "app-username"
- name: "PASSWORD"
value: "28sin47dsk9ik"
...
...


Как я могу извлечь значение USERNAME и PASSWORD из локальных переменных среды, когда я запускаю helm?



Возможно ли это? Если да, то как мне это сделать?

503   1  

1 ответ:

Вы можете export переменную и использовать ее во время выполнения helm install.

Перед этим вы должны изменить свою диаграмму так, чтобы значение могло быть set во время установки.

Пропустите эту часть, если вы уже знаете, как настроить поля шаблона.


Поскольку вы не хотите раскрывать данные, поэтому лучше сохранить их в секрете в kubernetes.

Прежде всего, добавьте эти две строки в свой файл Values, чтобы эти два значения можно было установить из снаружи.

username: root
password: password
Теперь добавьте файл secret.yaml в папку template. и скопируйте этот фрагмент кода в этот файл.
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-auth
data:
  password: {{ .Values.password }}
  username: {{ .Values.username }}

Теперь настройте свой шаблон развертывания yaml и внесите изменения в раздел env, как это

...
...
    spec:
      restartPolicy: Always
      containers:
        - name: sample-app
          image: "sample-app:latest"
          imagePullPolicy: Always
          env:          
          - name: "USERNAME"
            valueFrom:
              secretKeyRef:
                key:  username
                name: {{ .Release.Name }}-auth
          - name: "PASSWORD"
            valueFrom:
              secretKeyRef:
                key:  password
                name: {{ .Release.Name }}-auth
...
...

Если вы правильно изменили шаблон для флага --set , вы можете установить это с помощью переменной окружения.

$ export USERNAME=root-user

Теперь используйте эту переменную при запуске helm install,

$ helm install --set username=$USERNAME ./mychart

Если вы запустите этот helm install в режиме dry-run, вы может проверить изменения,

$ helm install --dry-run --set username=$USERNAME --debug ./mychart
[debug] Created tunnel using local port: '44937'

[debug] SERVER: "127.0.0.1:44937"

[debug] Original chart version: ""
[debug] CHART PATH: /home/maruf/go/src/github.com/the-redback/kubernetes-yaml-drafts/helm-charts/mychart

NAME:   irreverant-meerkat
REVISION: 1
RELEASED: Fri Apr 20 03:29:11 2018
CHART: mychart-0.1.0
USER-SUPPLIED VALUES:
username: root-user

COMPUTED VALUES:
password: password
username: root-user

HOOKS:
MANIFEST:

---
# Source: mychart/templates/secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: irreverant-meerkat-auth
data:
  password: password
  username: root-user
---
# Source: mychart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: irreverant-meerkat
  labels:
    app: irreverant-meerkat
spec:
  replicas: 1
  template:
    metadata:
      name: irreverant-meerkat
      labels:
        app: irreverant-meerkat
    spec:
      containers:
      - name: irreverant-meerkat
        image: alpine
        env:
        - name: "USERNAME"
          valueFrom:
            secretKeyRef:
              key:  username
              name: irreverant-meerkat-auth
        - name: "PASSWORD"
          valueFrom:
            secretKeyRef:
              key:  password
              name: irreverant-meerkat-auth

        imagePullPolicy: IfNotPresent
      restartPolicy: Always
  selector:
    matchLabels:
      app: irreverant-meerkat

Вы можете видеть, что данные username in secret изменились на root-user.

Я добавил этот пример в репозиторий github.

Существует также некоторое обсуждение в Kubernetes/helm repo по этому поводу. Вы можете посмотреть этот вопрос , чтобы узнать обо всех других способах использования переменных окружения.

Comments

    Ничего не найдено.