Anwendungen mit ConfigMaps konfigurieren

KubernetesBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie ConfigMaps in Kubernetes verwenden, um Ihre Anwendungen zu konfigurieren. ConfigMaps bieten eine Möglichkeit, Konfigurationsdaten von Ihrem Anwendungs-Code zu trennen, sodass Sie die Anwendungs-Konfiguration einfach verwalten und aktualisieren können, ohne die Anwendung selbst zu ändern.

Starten Sie das Minikube-Cluster

Bevor Sie Ressourcen erstellen, benötigen Sie einen laufenden Kubernetes-Cluster. Minikube ist eine leichte Kubernetes-Umgebung, die auf Ihrem lokalen Rechner läuft.

  1. Navigieren Sie zu Ihrem Arbeitsverzeichnis:

    Öffnen Sie das Terminal und navigieren Sie zum Standard-Projektordner:

    cd /home/labex/project
    
  2. Starten Sie Minikube:

    Starten Sie Minikube, um einen Kubernetes-Cluster zu initialisieren:

    minikube start
    
    • Dieser Befehl richtet einen Ein-Knoten-Kubernetes-Cluster auf Ihrem lokalen Rechner ein.
    • Minikube kann je nach Leistung Ihres Systems einige Minuten dauern, um zu starten.
  3. Überprüfen Sie, ob Minikube läuft:

    Überprüfen Sie den Status des Minikube-Clusters:

    minikube status
    
    • Suchen Sie nach Komponenten wie kubelet und apiserver, die als Running aufgeführt sind.
    • Wenn der Cluster nicht läuft, führen Sie minikube start erneut aus.

Wenn Sie Probleme beim Starten von Minikube haben, können Sie minikube delete verwenden, um die Umgebung bei Bedarf zurückzusetzen.

Erstellen Sie eine ConfigMap

In diesem Schritt erstellen Sie eine ConfigMap, die die Konfigurationsdaten für Ihre Anwendung enthält.

Erstellen Sie eine Datei mit dem Namen configmap.yaml im Verzeichnis /home/labex/project/ mit folgendem Inhalt:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  DATABASE_URL: postgres://user:password@host:port/dbname

Diese ConfigMap enthält ein einzelnes Schlüssel-Wert-Paar, wobei der Schlüssel DATABASE_URL ist und der Wert eine PostgreSQL-Datenbank-Verbindungszeichenfolge ist.

Um die ConfigMap zu erstellen, führen Sie den folgenden Befehl aus:

kubectl apply -f configmap.yaml

Verwenden Sie die ConfigMap in Ihrer Anwendung

In diesem Schritt verwenden Sie die ConfigMap in Ihrer Anwendung.

Erstellen Sie eine Datei mit dem Namen deployment.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_URL
              valueFrom:
                configMapKeyRef:
                  name: my-config
                  key: DATABASE_URL

Diese Bereitstellung (Deployment) gibt einen einzelnen Container an, der Ihre Anwendung ausführt und die Umgebungsvariable DATABASE_URL verwendet, um sich mit einer PostgreSQL-Datenbank zu verbinden. Der Wert von DATABASE_URL wird aus der ConfigMap my-config abgerufen.

Um die Bereitstellung zu erstellen, führen Sie den folgenden Befehl aus:

kubectl apply -f deployment.yaml

Überprüfen Sie die Konfiguration

In diesem Schritt überprüfen Sie, ob die Konfiguration auf Ihre Anwendung angewendet wurde.

Zuerst finden 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.

Als Nächstes führen Sie 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 Namen des Pods, den Sie zuvor notiert haben.

Sobald Sie in der Shell-Sitzung sind, führen Sie den folgenden Befehl aus, um den Wert der Umgebungsvariable DATABASE_URL auszugeben:

echo $DATABASE_URL

Sie sollten die Datenbank-Verbindungszeichenfolge sehen, die Sie in der ConfigMap festgelegt haben.

Aktualisieren Sie die ConfigMap

In diesem Schritt aktualisieren Sie die ConfigMap und sehen, wie sich dies auf Ihre Anwendung auswirkt.

Aktualisieren Sie die Datei configmap.yaml mit einem neuen Wert für den Schlüssel DATABASE_URL:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  DATABASE_URL: postgres://newuser:newpassword@newhost:newport/newdbname

Dadurch wird der Schlüssel DATABASE_URL auf einen neuen Wert aktualisiert.

Um die ConfigMap zu aktualisieren, führen Sie den folgenden Befehl aus:

kubectl apply -f configmap.yaml

Überprüfen Sie die Aktualisierung

In diesem Schritt überprüfen Sie, ob die Aktualisierung der ConfigMap auf Ihre Anwendung angewendet wurde.

Zuerst finden 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.

Als Nächstes führen Sie 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 Namen des Pods, den Sie zuvor notiert haben.

Sobald Sie in der Shell-Sitzung sind, führen Sie den folgenden Befehl aus, um den Wert der Umgebungsvariable DATABASE_URL auszugeben:

echo $DATABASE_URL

Sie können sehen, dass die Konfiguration nicht wirksam geworden ist, es sind immer noch die gleichen Daten wie zuvor. Sie müssen das Deployment (Bereitstellung) mit dem folgenden Befehl neu starten.

kubectl rollout restart deployment my-app

Wenn das Neustarten abgeschlossen ist, gehen Sie erneut in den Container hinein und verwenden Sie den obigen Befehl, um die Konfiguration zu überprüfen.

Sie sollten die aktualisierte Datenbank-Verbindungszeichenfolge sehen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie ConfigMaps in Kubernetes verwenden, um Ihre Anwendungen zu konfigurieren. Sie haben eine ConfigMap mit Konfigurationsdaten erstellt, die ConfigMap in Ihrer Anwendung genutzt und die ConfigMap aktualisiert, um zu sehen, wie sich dies auf Ihre Anwendung auswirkt. Sie haben auch gelernt, wie Sie überprüfen können, ob die Konfiguration auf Ihre Anwendung angewendet wurde, und wie Sie die im Lab erstellten Ressourcen bereinigen können.