Présentation
Les chartes Helm sont un moyen pratique et efficace de collecter des ressources Kubernetes et de créer des clusters d'applications. Ils peuvent également utiliser des variables d'environnement sur des machines locales pour définir les valeurs à utiliser par votre déploiement Kubernetes.
Ce didacticiel couvrira différentes manières d'inclure des variables d'environnement dans votre déploiement Kubernetes.
Prérequis
- Accès au terminal/ligne de commande
- Minikube installé et configuré (consultez nos guides sur Comment installer Minikube sur Ubuntu et Comment installer Minikube sur CentOS)
- Helm installé et configuré
Comment utiliser les variables d'environnement avec Helm
Il existe deux méthodes d'utilisation des variables d'environnement avec les chartes Helm :
- Utiliser l'objet secret dans Kubernetes pour monter des variables d'environnement dans un déploiement.
- Écrire un assistant personnalisé dans un graphique Helm.
Pour ce tutoriel, nous utilisons le USERNAME
et PASSWORD
variables d'environnement.
Montage des variables d'environnement dans un déploiement Kubernetes
1. Ajoutez les lignes suivantes au values.yaml
fichier dans votre charte Helm :
username: root
password: password
2. Créez un nouveau fichier appelé secret.yaml
et ajoutez-le au template
dossier. Ajoutez le contenu suivant au fichier :
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-auth
data:
password: {{ .Values.password | b64enc }}
username: {{ .Values.username | b64enc }}
3. Modifiez le env
section de votre déploiement Kubernetes pour inclure les nouvelles variables définies dans le secret.yaml
fichier :
...
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: "USERNAME"
valueFrom:
secretKeyRef:
key: username
name: {{ .Release.Name }}-auth
- name: "PASSWORD"
valueFrom:
secretKeyRef:
key: password
name: {{ .Release.Name }}-auth
...
4. Définissez les variables d'environnement sur les valeurs souhaitées. Par exemple, définissez le USERNAME
variable à hello_user
:
export USERNAME=hello_user
5. Appliquez les variables au graphique Helm en les combinant avec le helm install
commande :
helm install --set username=$USERNAME [chart name] [chart path]
Où :
[chart name]
est le nom de la charte Helm que vous utilisez.[chart path]
est le chemin d'accès au graphique Helm que vous utilisez.
Si vous souhaitez tester les nouveaux paramètres avant de les appliquer, utilisez le essai d'essai mod :
helm install --dry-run --set username=$USERNAME --debug [chart name] [chart path]
Ajout d'un assistant personnalisé dans Helm
1. Utilisez le env
section du values.yaml
fichier pour définir les variables sensibles et non sensibles. Utilisez le normal
et secret
catégories pour répertorier les variables appropriées :
secret:
name: app-env-var-secret
env:
normal:
variable1: value1
variable2: value2
variable3: value3
secret:
variable4: value4
variable5: value5
variable6: value6
En utilisant cette méthode, nous ajoutons ensuite le USERNAME
et PASSWORD
variables au secret
catégorie :
…
secret:
USERNAME: [username]
PASSWORD: [password]
Où :
[username]
est la valeur que vous souhaitez définir pour le USERNAME variables.[password]
est la valeur que vous souhaitez définir pour le MOT DE PASSE variables.
2. Ajoutez le chemin au values.yaml
fichier au bas de votre .gitignore
fichier :
charts/values.yaml
3. Créez un fichier appelé secrets.yaml
dans les templates
dossier et ajoutez le contenu suivant :
apiVersion: v1
kind: Secret
metadata:
name: {{ .Values.secret.name }}
type: Opaque
data:
{{- range $key, $val := .Values.env.secret }}
{{ $key }}: {{ $val | b64enc }}
{{- end}}
4. Trouvez le helpers.tpl
fichier dans les templates
dossier. Ajoutez ce qui suit au bas du fichier pour écrire une nouvelle fonction d'assistance :
{{- define "helpers.list-env-variables"}}
{{- range $key, $val := .Values.env.secret }}
- name: {{ $key }}
valueFrom:
secretKeyRef:
name: app-env-secret
key: {{ $key }}
{{- end}}
{{- end }}
5. Appelez l'assistant que vous avez créé en ajoutant ce qui suit à votre pod.yaml
fichier :
…
spec:
containers:
- name: mycontainer
image: redis
env:
{{- include "helpers.list-env-variables" . | indent 6 }}
restartPolicy: Never