Aus dem Kurs: Kubernetes lernen

Was ist ein Secret? – Tutorial zu Kubernetes

Aus dem Kurs: Kubernetes lernen

Was ist ein Secret?

Was ist eine Secret-Komponente? In diesem Beispiel-Setup haben wir eine Node.js-Anwendung, welche durch das MongoDB-Service mit der MongoDB-Datenbank kommuniziert. Dazu muss die Node.js-Anwendung die Serviceadresse auch kennen und diese haben wir im ConfigMap definiert. Für die Verbindung benötigt Node.js allerdings auch die Anmeldedaten, also Benutzername und Passwort von MongoDB. Diese Werte müssen daher auch in der Node.js-Anwendung von außen konfiguriert werden, entweder als Umgebungsvariablen übergeben oder als eine Konfigurationsdatei. Theoretisch könnten wir diese Anmeldedaten auch im ConfigMap definieren und von außen mitgeben. Allerdings sind Zugangsdaten, vor allem das Passwort, sensible Informationen, welche nicht im Klartext, also unverschlüsselt, im Cluster erstellt, gespeichert und auch übertragen werden sollen. Und für diesen Anwendungsfall gibt es die Kubernetes-Komponente Secret. Gleich wie beim ConfigMap können wir in Secret sowohl einzelne Werte wie Benutzername, Passwort etc. als auch ganze Konfigurationsdateien definieren. Wenn später die Zugangsdaten geändert und die Secret-Komponente angepasst wird, müssen wir den Anwendungscode selbst nicht anpassen und die Anwendung neu bauen, sondern es reicht, wenn wir die Anwendung einfach neu starten. Beim Neustart wird das angepasste Secret mit den neuen Werten hineingereicht. Ein weiterer Vorteil von Secret ist auch folgender. Wenn Sie zum Beispiel drei Anwendungen haben, welche alle die gleiche Datenbank nutzen, dann müssen Sie das Secret nur einmal erstellen und kann dann in alle drei Anwendungen übergeben werden. In dem Fall, wenn sich die Zugangsdaten ändern, müssen Sie nicht in allen drei Anwendungen die Werte anpassen, sondern nur an einer Stelle, und zwar im Secret.

Inhalt