Ответ 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 | b64enc }}
username: {{ .Values.username | b64enc }}
Теперь настройте шаблон развертывания 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,
$ 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
Вы можете видеть, что секретные данные имени пользователя изменились на root-user.
Я добавил этот пример в репозиторий github.
В репо kubernetes/helm об этом также идет обсуждение. Вы можете увидеть эту проблему, чтобы узнать обо всех других способах использования переменных среды.