Einführung
In diesem Lab lernen Sie, wie Sie Kubernetes Secrets verwenden, um sensible Informationen wie Passwörter, API-Schlüssel und andere vertrauliche Daten sicher zu verwalten. Sie erstellen ein Secret, verwenden es in Ihrer Anwendung und überprüfen, ob die Anwendung korrekt konfiguriert ist. Jeder Schritt baut auf dem vorherigen auf, also stellen Sie sicher, dass Sie sorgfältig mitarbeiten.
Den Minikube Cluster starten
Bevor Sie Ressourcen erstellen, benötigen Sie einen laufenden Kubernetes-Cluster. Minikube ist eine leichtgewichtige Kubernetes-Umgebung, die auf Ihrem lokalen Rechner läuft.
Navigieren Sie zu Ihrem Arbeitsverzeichnis:
Öffnen Sie das Terminal und navigieren Sie zum Standard-Projektordner:
cd /home/labex/projectStarten Sie Minikube:
Starten Sie Minikube, um einen Kubernetes-Cluster zu initialisieren:
minikube start- Dieser Befehl richtet einen Single-Node-Kubernetes-Cluster auf Ihrem lokalen Rechner ein.
- Minikube kann je nach Leistung Ihres Systems einige Minuten zum Starten benötigen.
Überprüfen Sie, ob Minikube läuft:
Überprüfen Sie den Status des Minikube-Clusters:
minikube status- Achten Sie auf Komponenten wie
kubeletundapiserver, die alsRunningaufgeführt sind. - Wenn der Cluster nicht läuft, führen Sie
minikube starterneut aus.
- Achten Sie auf Komponenten wie
Wenn Sie Probleme beim Starten von Minikube haben, verwenden Sie minikube delete, um die Umgebung bei Bedarf zurückzusetzen.
Ein Secret erstellen
In diesem Schritt erstellen Sie ein Kubernetes Secret, das ein Datenbankpasswort enthält.
Erstellen Sie eine Datei namens my-secret.yaml im Verzeichnis /home/labex/project mit folgendem Inhalt:
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
data:
password: dXNlcm5hbWU6cGFzc3dvcmQ=
In dieser Datei geben wir den Namen des Secrets (my-secret), den Typ der enthaltenen Daten (Opaque) und die eigentlichen Daten im Base64-codierten Format an.
Wenden Sie das Secret auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:
kubectl apply -f my-secret.yaml
Überprüfen Sie, ob das Secret erstellt wurde, indem Sie den folgenden Befehl ausführen:
kubectl get secrets
Sie sollten das Secret my-secret aufgelistet sehen.
Verwenden des Secrets in Ihrer Anwendung
In diesem Schritt ändern Sie Ihre Anwendung, um das Secret my-secret zur Abfrage des Datenbankpassworts zu verwenden.
Erstellen Sie eine Datei namens my-app.yaml im Verzeichnis /home/labex/project mit folgendem Inhalt:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: password
In dieser Datei geben wir den Namen des Deployments (my-app), das zu verwendende Image (my-image) und die festzulegende Umgebungsvariable (DATABASE_PASSWORD) an. Wir verwenden auch eine secretKeyRef, um den Schlüssel password aus dem Secret my-secret abzurufen.
Wenden Sie das Deployment auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:
kubectl apply -f my-app.yaml
Überprüfen Sie, ob das Deployment erstellt wurde, indem Sie den folgenden Befehl ausführen:
kubectl get deployments
Sie sollten das Deployment my-app aufgelistet sehen.
Konfiguration überprüfen
In diesem Schritt überprüfen Sie, ob Ihre Anwendung korrekt mit dem Datenbankpasswort aus dem Secret my-secret konfiguriert wurde.
Ermitteln Sie den Namen des Pods, der Ihre Anwendung ausführt, indem Sie den folgenden Befehl ausführen:
kubectl get pods -l app=my-app
Sie sollten einen einzelnen Pod sehen, der Ihre Anwendung ausführt. Notieren Sie sich den Namen des Pods.
Führen Sie als Nächstes den folgenden Befehl aus, um eine Shell-Sitzung im Container zu öffnen, der Ihre Anwendung ausführt:
kubectl exec -it pod-name -- /bin/sh
Ersetzen Sie <pod-name> durch den tatsächlichen Namen des Pods, den Sie sich zuvor notiert haben.
Sobald Sie sich in der Shell-Sitzung befinden, führen Sie den folgenden Befehl aus, um den Wert der Umgebungsvariablen DATABASE_PASSWORD auszugeben:
echo $DATABASE_PASSWORD
Sie sollten das Datenbankpasswort sehen, das aus dem Secret my-secret abgerufen wurde.
Secret als Volume in einem Pod mounten
Nachdem wir das Secret erstellt haben, können wir es als Volume in einem Pod einbinden. Wir erstellen einen einfachen Pod, der den Secret-Wert aus dem eingebundenen Volume liest und ihn auf der Konsole ausgibt.
Erstellen Sie eine Datei namens pod.yaml im Verzeichnis /home/labex/project mit folgendem Inhalt:
apiVersion: v1
kind: Pod
metadata:
name: secret-pod
spec:
containers:
- name: secret-container
image: nginx
volumeMounts:
- name: secret-volume
mountPath: /etc/secret-volume
volumes:
- name: secret-volume
secret:
secretName: my-secret
Wenden Sie die Pod-Konfiguration an:
kubectl apply -f pod.yaml
Überprüfen des Secrets als Volume in einem Pod
In diesem Schritt überprüfen Sie, ob Ihre Anwendung korrekt mit dem Datenbankpasswort aus dem Secret my-secret konfiguriert ist.
Führen Sie zunächst den folgenden Befehl aus, um eine Shell-Sitzung in dem Container zu öffnen, in dem Ihre Anwendung ausgeführt wird:
kubectl exec -it secret-pod -- sh
Sobald Sie sich in der Shell-Sitzung befinden, führen Sie den folgenden Befehl aus, um den Wert auszugeben:
cat /etc/secret-volume/password
Die Ausgabe sollte der Wert des Secrets sein.
Zusammenfassung
In diesem Lab haben wir gelernt, wie man Kubernetes Secrets zur Speicherung sensibler Informationen verwendet und wie man sie in einem Pod einsetzt. Secrets bieten eine sichere Möglichkeit, sensible Informationen zu verwalten und sollten nach Möglichkeit verwendet werden, um zu vermeiden, dass Secrets im Klartext offengelegt werden.


