Introduzione
I grafici Helm sono un modo comodo ed efficiente per raccogliere risorse Kubernetes e creare cluster di applicazioni. Possono anche utilizzare variabili di ambiente su macchine locali per definire valori da utilizzare per la tua distribuzione Kubernetes.
Questo tutorial tratterà diversi modi in cui puoi includere variabili di ambiente nella tua distribuzione Kubernetes.
Prerequisiti
- Accesso al terminale/riga di comando
- Minikube installato e configurato (consulta le nostre guide su Come installare Minikube su Ubuntu e Come installare Minikube su CentOS)
- Timone installato e configurato
Come utilizzare le variabili d'ambiente con Helm
Esistono due metodi per utilizzare le variabili di ambiente con i grafici Helm:
- Utilizzo dell'oggetto segreto in Kubernetes per montare le variabili di ambiente in una distribuzione.
- Scrivere un assistente personalizzato in un grafico Helm.
Per questo tutorial, utilizziamo il USERNAME
e PASSWORD
variabili di ambiente.
Montaggio delle variabili d'ambiente in una distribuzione Kubernetes
1. Aggiungi le seguenti righe a values.yaml
file nel tuo grafico Helm:
username: root
password: password
2. Crea un nuovo file chiamato secret.yaml
e aggiungilo al template
cartella. Aggiungi il seguente contenuto al file:
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-auth
data:
password: {{ .Values.password | b64enc }}
username: {{ .Values.username | b64enc }}
3. Modifica l'env
sezione della tua distribuzione Kubernetes per includere le nuove variabili definite in secret.yaml
file:
...
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. Impostare le variabili di ambiente sui valori desiderati. Ad esempio, imposta il USERNAME
variabile in hello_user
:
export USERNAME=hello_user
5. Applicare le variabili al grafico Helm combinandole con helm install
comando:
helm install --set username=$USERNAME [chart name] [chart path]
Dove:
[chart name]
è il nome della carta Helm che stai utilizzando.[chart path]
è il percorso verso la carta di Helm che stai utilizzando.
Se desideri testare le nuove impostazioni prima di applicarle, utilizza il ciclo di prova modalità:
helm install --dry-run --set username=$USERNAME --debug [chart name] [chart path]
Aggiunta di un assistente personalizzato in Helm
1. Usa env
sezione di values.yaml
file per definire variabili sensibili e non sensibili. Usa il normal
e secret
categorie per elencare le variabili appropriate:
secret:
name: app-env-var-secret
env:
normal:
variable1: value1
variable2: value2
variable3: value3
secret:
variable4: value4
variable5: value5
variable6: value6
Usando questo metodo, aggiungiamo quindi il USERNAME
e PASSWORD
variabili al secret
categoria:
…
secret:
USERNAME: [username]
PASSWORD: [password]
Dove:
[username]
è il valore che desideri impostare per USERNAME variabile.[password]
è il valore che desideri impostare per la PASSWORD variabile.
2. Aggiungi il percorso a values.yaml
file in fondo al tuo .gitignore
file:
charts/values.yaml
3. Crea un file chiamato secrets.yaml
nei templates
cartella e aggiungi il seguente contenuto:
apiVersion: v1
kind: Secret
metadata:
name: {{ .Values.secret.name }}
type: Opaque
data:
{{- range $key, $val := .Values.env.secret }}
{{ $key }}: {{ $val | b64enc }}
{{- end}}
4. Trova il helpers.tpl
file nei templates
cartella. Aggiungi quanto segue in fondo al file per scrivere una nuova funzione di supporto:
{{- define "helpers.list-env-variables"}}
{{- range $key, $val := .Values.env.secret }}
- name: {{ $key }}
valueFrom:
secretKeyRef:
name: app-env-secret
key: {{ $key }}
{{- end}}
{{- end }}
5. Chiama l'assistente che hai creato aggiungendo quanto segue al tuo pod.yaml
file:
…
spec:
containers:
- name: mycontainer
image: redis
env:
{{- include "helpers.list-env-variables" . | indent 6 }}
restartPolicy: Never