Как вытащить переменные окружения с руля графики
У меня есть мое развертывание.файл 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?
Возможно ли это? Если да, то как мне это сделать?
1 ответ:
Вы можете
exportпеременную и использовать ее во время выполненияhelm install.Перед этим вы должны изменить свою диаграмму так, чтобы значение могло быть
setво время установки.Пропустите эту часть, если вы уже знаете, как настроить поля шаблона.
Поскольку вы не хотите раскрывать данные, поэтому лучше сохранить их в секрете в kubernetes.
Прежде всего, добавьте эти две строки в свой файл
Values, чтобы эти два значения можно было установить из снаружи.Теперь добавьте файлusername: root password: passwordsecret.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