Vous pouvez export
de la variable et de l'utiliser lors de l'exécution d' helm install
.
Avant cela, vous devez modifier votre graphique de sorte que la valeur peut être set
lors de l'installation.
Sauter cette partie, si vous le savez déjà, la façon de configurer les champs de modèle.
Comme vous ne voulez pas exposer les données, il est donc préférable de l'avoir sauvé secrets de kubernetes.
Tout d'abord, ajoutez ces deux lignes dans votre Values
le fichier, de sorte que ces deux valeurs peuvent être définies à partir de l'extérieur.
username: root
password: password
Maintenant, ajoutons une secret.yaml
le fichier à l'intérieur de votre template
le dossier. et, de copier ce bout de code dans ce fichier.
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-auth
data:
password: {{ .Values.password | b64enc }}
username: {{ .Values.username | b64enc }}
Maintenant modifier votre déploiement yaml modèle et de faire des changements en env
section, comme ceci
...
...
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
...
...
Si vous avez modifié votre modèle correctement pour --set
drapeau,
vous pouvez définir à l'aide de cette variable d'environnement.
$ export USERNAME=root-user
Maintenant utiliser cette variable lors de l'exécution de la barre d'installer,
$ helm install --set username=$USERNAME ./mychart
Si vous exécutez cette helm install
en dry-run
mode, vous pouvez vérifier les modifications,
$ 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
Vous pouvez voir que les données de nom d'utilisateur dans le secret, a changé d' root-user
.
J'ai ajouté cet exemple dans le dépôt github.
Il y a aussi des discussions en kubernetes/barre pensions à ce sujet. Vous pouvez voir cette question de savoir à propos de toutes les autres façons d'utiliser les variables d'environnement.