Zum Inhalt

Lab 12: Konfigurationsdateien mit ConfigMaps ausliefern

Es ist durchaus üblich, kompakte und statische Dateien in ConfigMaps abzulegen und Pods zur Verfügung stellen. In diesem Beispiel nutzen wir eine ConfigMap, um eine Startseite für einen NGINX-Pod auszuliefern. In der Realität könnte dies eine Seite sein, auf die der Readiness-Check prüft.

ConfigMap anlegen

Die ConfigMap mit der HTML-Seite sieht wie folgt aus:

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-index-config
data:
  index.html: |
    <html>
    <head>
        <title>Willkommen bei NGINX</title>
    </head>
    <body>
        <h1>Hallo, Welt!</h1>
        <p>Dies ist eine benutzerdefinierte Startseite für den NGINX-Server.</p>
    </body>
    </html>

Speichere sie in einer Datei ab und wende sie mit kubectl an. Erstelle nun eine YAML-Datei mit einem Pod, welche obige ConfigMap als Volume mountet und als Startseite von NGINX verfügbar macht. Nimm dazu diesen Mount als Vorlage:

volumeMounts:
  - name: nginx-index-volume
    mountPath: /usr/share/nginx/html/index.html
    subPath: index.html

Test: Für Minikube

Erstelle zuletzt einen NodePort-Service namens "nginx-service" der auf den Pod weiterleitet. Verwende folgenden Befehl, um einen Tunnel zum Service zu öffnen und zu testen, ob die HTML-Seite erscheint:

minikube service nginx-service

Test: Für EKS und AKS

Lege einen Service vom Type LoadBalancer an namens "nginx-service", der mittels Labels auf den obigen Pod weiterleitet:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
  type: LoadBalancer

Wichtig: Beachtet, dass der Label-Selector zu den Labels des Pods passt! Ihr könnt im Anschluss die externe IP des LoadBalancers abfragen mittels:

kubectl get svc nginx-service

Es kann eine kurze Weile dauern, bis die externe IP provisioniert ist.