Ответ 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 об этом также идет обсуждение. Вы можете увидеть эту проблему, чтобы узнать обо всех других способах использования переменных среды.