Einführung
Helm-Diagramme sind eine bequeme und effiziente Möglichkeit, Kubernetes-Ressourcen zu sammeln und Anwendungscluster zu erstellen. Sie können auch Umgebungsvariablen auf lokalen Computern verwenden, um Werte für Ihre Kubernetes-Bereitstellung zu definieren.
Diese Anleitung behandelt verschiedene Möglichkeiten, wie Sie Umgebungsvariablen in Ihre Kubernetes-Bereitstellung einbeziehen können.
Voraussetzungen
- Zugriff auf Terminal/Befehlszeile
- Minikube installiert und konfiguriert (lesen Sie unsere Anleitungen zur Installation von Minikube unter Ubuntu und zur Installation von Minikube unter CentOS)
- Helm installiert und konfiguriert
So verwenden Sie Umgebungsvariablen mit Helm
Es gibt zwei Methoden zur Verwendung von Umgebungsvariablen mit Helm-Charts:
- Verwenden des geheimen Objekts in Kubernetes zum Mounten von Umgebungsvariablen in einer Bereitstellung.
- Einen benutzerdefinierten Helfer in ein Helm-Diagramm schreiben.
Für dieses Tutorial verwenden wir den USERNAME
und PASSWORD
Umgebungsvariablen.
Mounting-Umgebungsvariablen in einer Kubernetes-Bereitstellung
1. Fügen Sie der values.yaml
die folgenden Zeilen hinzu Datei in Ihrem Helm-Diagramm:
username: root
password: password
2. Erstellen Sie eine neue Datei namens secret.yaml
und fügen Sie es der template
hinzu Mappe. Fügen Sie der Datei folgenden Inhalt hinzu:
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-auth
data:
password: {{ .Values.password | b64enc }}
username: {{ .Values.username | b64enc }}
3. Bearbeiten Sie die env
Abschnitt Ihrer Kubernetes-Bereitstellung, um die neuen Variablen aufzunehmen, die in secret.yaml
definiert sind Datei:
...
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. Setzen Sie die Umgebungsvariablen auf Ihre gewünschten Werte. Legen Sie beispielsweise den USERNAME
fest Variable zu hello_user
:
export USERNAME=hello_user
5. Wenden Sie die Variablen auf das Helm-Diagramm an, indem Sie sie mit helm install
kombinieren Befehl:
helm install --set username=$USERNAME [chart name] [chart path]
Wo:
[chart name]
ist der Name des Helm-Diagramms, das Sie verwenden.[chart path]
ist der Pfad zu dem von Ihnen verwendeten Helm-Chart.
Wenn Sie die neuen Einstellungen testen möchten, bevor Sie sie anwenden, verwenden Sie den Probelauf Modus:
helm install --dry-run --set username=$USERNAME --debug [chart name] [chart path]
Hinzufügen eines benutzerdefinierten Helfers in Helm
1. Verwenden Sie die env
Abschnitt der values.yaml
Datei zum Definieren sensibler und nicht sensibler Variablen. Verwenden Sie den normal
und secret
Kategorien, um die entsprechenden Variablen aufzulisten:
secret:
name: app-env-var-secret
env:
normal:
variable1: value1
variable2: value2
variable3: value3
secret:
variable4: value4
variable5: value5
variable6: value6
Mit dieser Methode fügen wir dann den USERNAME
hinzu und PASSWORD
Variablen zum secret
Kategorie:
…
secret:
USERNAME: [username]
PASSWORD: [password]
Wo:
[username]
ist der Wert, den Sie für USERNAME festlegen möchten variabel.[password]
ist der Wert, den Sie für das PASSWORT festlegen möchten variabel.
2. Fügen Sie den Pfad zu values.yaml
hinzu Datei am Ende Ihrer .gitignore
Datei:
charts/values.yaml
3. Erstellen Sie eine Datei namens secrets.yaml
in den templates
Ordner und fügen Sie den folgenden Inhalt hinzu:
apiVersion: v1
kind: Secret
metadata:
name: {{ .Values.secret.name }}
type: Opaque
data:
{{- range $key, $val := .Values.env.secret }}
{{ $key }}: {{ $val | b64enc }}
{{- end}}
4. Suchen Sie helpers.tpl
Datei in den templates
Mappe. Fügen Sie am Ende der Datei Folgendes hinzu, um eine neue Hilfsfunktion zu schreiben:
{{- define "helpers.list-env-variables"}}
{{- range $key, $val := .Values.env.secret }}
- name: {{ $key }}
valueFrom:
secretKeyRef:
name: app-env-secret
key: {{ $key }}
{{- end}}
{{- end }}
5. Rufen Sie den von Ihnen erstellten Helfer auf, indem Sie Folgendes zu Ihrer pod.yaml
hinzufügen Datei:
…
spec:
containers:
- name: mycontainer
image: redis
env:
{{- include "helpers.list-env-variables" . | indent 6 }}
restartPolicy: Never