So erstellen Sie geheimes TLS in Kubernetes

So Erstellen Sie Geheimes Tls In Kubernetes



Kubernetes ist ein Open-Source-Tool, das zur Ausführung und Verwaltung der Containeranwendung innerhalb des Clusters verwendet wird. Es führt verschiedene Aufgaben zur Kontrolle, Ausführung und Sicherung der Anmeldeinformationen der Anwendung durch geheime und eingehende Daten aus.

Ingress wird zur Verwaltung des eingehenden Anwendungsdatenverkehrs und auch zur SSL-Terminierung verwendet. Im Gegensatz dazu dienen Secrets dazu, vertrauliche Informationen und TLS-Zertifikate für die Anwendung zu speichern.

Dieser Beitrag soll Folgendes veranschaulichen:







Was sind die Kubernetes-Geheimnisse?

Die Secrets sind eine der Kubernetes-Ressourcen, die zum Speichern vertraulicher Informationen wie Benutzeranmeldeinformationen, Schlüssel, Zertifikate oder Token verwendet werden. Die Secrets können einzeln erstellt und zu Pods verbunden werden. Es verhindert, dass der Entwickler vertrauliche Daten im Code bereitstellt, und bietet außerdem eine zusätzliche Sicherheitsebene. Es können verschiedene Arten von Geheimnissen erstellt und verwendet werden. Die am häufigsten verwendeten Geheimnisse sind:



Allgemeines Geheimnis: Die generischen Geheimnisse werden zum Speichern grundlegender Informationen wie Passwörter, Token, API-Schlüssel, OAuth-Schlüssel usw. verwendet.



TLS-Geheimnis: TLS-Geheimnisse werden zum Speichern privater Schlüssel und Zertifikate verwendet, die von der Zertifizierungsstelle signiert werden. Um die Sicherheit von Anwendungen zu gewährleisten, die in Kubernetes ausgeführt werden, und um die Kommunikation innerhalb des Clusters zu sichern, muss der Benutzer normalerweise TLS-Geheimnisse erstellen und in den Pod einbetten.





Docker-Registrierung: Es wird zum Speichern der Docker-Registrierungsanmeldeinformationen verwendet, um die Bilder einfach aus der Registrierung abzurufen.

Voraussetzung: Privaten Schlüssel und Zertifikat generieren

Um das Zertifikat und den privaten Schlüssel zur Verbesserung der Sicherheit zu erstellen, verwenden Sie OpenSSL, das die CSR (Zertifikatsignierungsanforderung) und den privaten Schlüssel erstellt. Verwenden Sie dann CSR, um die selbstsignierten oder CA-Zertifikate zu generieren.



Um die OpenSSL-Befehle unter Windows nutzen zu können, müssen Benutzer Git installieren. Folgen Sie hierzu unserem verlinkten „ Installieren Sie Git unter Windows ” Artikel.

Befolgen Sie nach der Installation von Git die folgenden Anweisungen, um einen privaten Schlüssel und ein signiertes Zertifikat zu generieren.

Schritt 1: Starten Sie das Git Bash-Terminal

Machen Sie eine Suche nach „ Git Bash ” im Startmenü und starten Sie das Terminal:

Um das aktuelle Verzeichnis zu überprüfen, verwenden Sie „ pwd ' Befehl:

pwd

Derzeit arbeiten wir im Verzeichnis %USERPROFILE%:

Schritt 2: Neues Verzeichnis erstellen

Erstellen Sie ein neues Verzeichnis, um die Zertifikate und den privaten Schlüssel zu speichern:

mkdir zert

Navigieren Sie mit der Taste „ in das neu erstellte Verzeichnis. CD ' Befehl:

CD zert

Schritt 3: Privaten Schlüssel generieren

Generieren Sie nun den privaten Schlüssel mit dem angegebenen Befehl. Hier wird der generierte private Schlüssel gespeichert in „ mycert.key ”:

openssl genpkey -Algorithmus RSA -aus mycert.key

Schritt 4: CSR generieren

Um die CSR (Certificate Service Request) zu generieren, um ein signiertes Zertifikat zu erhalten, verwenden Sie den folgenden Befehl:

OpenSSL-Anforderung -neu -Schlüssel mycert.key -aus mycert.csr

Schritt 5: Zertifikat generieren

Erstellen Sie abschließend mit dem generierten privaten Schlüssel und der CSR ein Zertifikat und speichern Sie es im Ordner „ mycert.crt ' Datei. Führen Sie dazu den folgenden Befehl aus:

OpenSSL x509 -req -In mycert.csr -signkey mycert.key -aus mycert.crt -Tage 365

Nach der Generierung der TLS-Zertifikate kann der Benutzer das geheime TLS erstellen, indem er dem folgenden Abschnitt folgt.

Wie erstelle ich geheimes TLS in Kubernetes?

Um die Anwendungssicherheit und sichere Kommunikation innerhalb und außerhalb des Kubernetes-Clusters zu gewährleisten, sind die TLS-Zertifikate (Transport Layer Security) unerlässlich, die bei der Datenverschlüsselung verwendet werden. Das Kubernetes-Geheimnis ermöglicht es uns, das TLS-Zertifikat über geheimes TLS in laufende Pods einzubetten. Um ein geheimes TLS in Kubernetes zu erstellen, befolgen Sie die folgenden Anweisungen.

Schritt 1: Starten Sie den Minikube-Cluster

Um den Minikube-Cluster zu starten, starten Sie zunächst Windows PowerShell als Administrator. Erstellen Sie anschließend den Cluster und führen Sie ihn aus, indem Sie „ minikube start ' Befehl:

minikube start

Schritt 2: Knoten abrufen

Greifen Sie auf den Kubernetes-Knoten zu, um zu überprüfen, ob der Cluster gestartet ist oder nicht:

Minikube erhält Knoten

Schritt 3: Erstellen Sie geheimes TLS

Erstellen Sie das TLS-Geheimnis in Kubernetes mit „ kubectl erstellt Geheimnis –cert= –key= ' Befehl. Hier kann der Geheimtyp „ generisch ',' TLS ', oder ' Docker-Registrierung “. Um ein TLS-Geheimnis zu erstellen, haben wir den Geheimtyp auf „tls“ festgelegt:

kubectl erstellt geheimes TLS-Demo-Geheimnis --cert =C:\Benutzer\Dell\cert\mycert.crt --Schlüssel =C:\Benutzer\Dell\cert\mycert.key

Schritt 4: Geheimnisse abrufen

Listen Sie zur Bestätigung das Kubernetes-Geheimnis mit dem angegebenen Befehl auf:

Kubectl bekommt ein Geheimnis

Hier können Sie sehen, dass wir effektiv ein „ Demo-Geheimnis ' das beinhaltet ' 2 ” Datenwerte:

Schritt 5: Beschreiben Sie das Geheimnis

Um zu sehen, wie Daten im Geheimen angezeigt oder gespeichert werden, beschreiben Sie das Geheimnis mit „ kubectl beschreibt das Geheimnis ' Befehl:

kubectl beschreibt das geheime Demo-Geheimnis

Sie können sehen, dass Werte in Bytes gespeichert werden und im Gegensatz zu Kubernetes ConfigMaps nicht direkt angezeigt werden können:

Wie erstelle ich ein geheimes TLS über eine Yaml-Datei?

Um ein geheimes TLS über eine Yaml-Datei zu erstellen, erstellen Sie zunächst eine „ geheim.yml ”-Datei, fügen Sie die hinzu TLS Base64-codiertes Zertifikat im ' tls.crt ”-Taste und fügen Sie die hinzu Base64-codierter Schlüssel im ' tls.key “.

Befolgen Sie zur Demonstration die aufgeführten Schritte.

Schritt 1: Yaml-Datei erstellen

Erstellen Sie eine Datei mit dem Namen „ geheim.yml ” und fügen Sie den angegebenen Code ein:

apiVersion : v1

Daten
:

tls.crt
: „Base64-codiertes Zertifikat“

tls.key
: „Base64-codierter Schlüssel“

Art
: Geheimnis

Metadaten
:

Name
: Mytls-Geheimnis

Namensraum
: Standard

Typ
: kubernetes.io/tls

Ersetzen Sie im obigen Snippet die Schlüsselwerte „tls.crt“ und „tls.key“ durch Ihr ursprüngliches Zertifikat und die Schlüsselwerte:

Schritt 2: Erstellen Sie ein Geheimnis

Wenden Sie nun die geheime Yaml-Datei über „ kubectl apply -f ' Befehl:

kubectl anwenden -F geheim.yml

Die Ausgabe zeigt, dass wir das „ Mytls-Geheimnis ” unter Verwendung der Yaml-Datei:

Hinweis: TLS-Zertifikat und privaten Schlüssel anzeigen

Um das Base64-codierte Zertifikat anzuzeigen und in der Yaml-Datei zu verwenden, führen Sie den Befehl „ aus. cat | base64 ”-Befehl im Git-Bash-Terminal:

Katze mycert.crt | base64

Um den Base64-codierten Schlüssel anzuzeigen, verwenden Sie „ cat | base64 ' Befehl:

Katze mycert.key | base64

Wie bette ich geheimes TLS in einen Kubernetes-Pod ein?

Nachdem das geheime TSL erstellt wurde, kann der Benutzer es in den Kubernetes-Pod einbetten. Benutzen Sie dazu die folgende Anleitung.

Schritt 1: Yaml-Datei erstellen

Erstellen Sie eine Datei mit dem Namen „ pod.yml ”-Datei und fügen Sie den folgenden Ausschnitt in die Datei ein:

APIVersion: v1

Art: Pod

Metadaten:

Name: Demo-Pod

Spezifikation:

Behälter:

- Name: html-cont

Bild: rafia098 / html-img: 1,0

envVon:

- SecretRef:

Name: Demo-Geheimnis

Im obigen Ausschnitt:

  • Art Der Schlüssel „gibt die Kubernetes-Ressource an, die der Benutzer erstellt.
  • Name Mit der Taste „“ wird der Pod-Name festgelegt.
  • Behälter Mit der Taste „Speichern“ werden die Containerinformationen gespeichert.
  • Name Mit der Taste „“ unter der Taste „Container“ wird der Containername festgelegt.
  • Bild Der Schlüssel „stellt das Anwendungs- oder Container-Image bereit, um die Anwendung im Container zu erstellen und zu starten.
  • envFrom Mit dem Schlüssel „“ wird die Umgebungsvariable von anderen Kubernetes-Ressourcen festgelegt. Hier, um das geheime TLS in einen Pod einzubetten: „ SecretRef „wird verwendet, um eine geheime Referenz bereitzustellen. Um das obige geheime TLS einzubetten, geben Sie den Namen des Geheimnisses im Schlüssel „Name“ an.

Schritt 2: Erstellen oder aktualisieren Sie den Pod

Öffnen Sie als Nächstes den Ordner, in dem sich „ pod.yml „Datei wird erstellt:

CD C:\Benutzer\Dell\Dokumente\Kubernetes\Secret

Wenden Sie die Yaml-Datei an, um den Pod zu erstellen oder neu zu konfigurieren, indem Sie „ kubectl anwenden ' Befehl:

kubectl anwenden -F pod.yml

Schritt 3: Greifen Sie auf Kubernetes-Pods zu

Listen Sie zur Überprüfung die Kubernetes-Pods auf:

kubectl holt Pod

Hier können Sie sehen, dass wir das „ Demo-Pod ' erfolgreich:

Schritt 4: Beschreiben Sie den Pod

Um zu überprüfen, ob der Pod das geheime TLS eingebettet hat oder nicht, beschreiben Sie den Pod mit dem folgenden Befehl:

kubectl beschreibt den Pod-Demo-Pod

Die folgende Ausgabe zeigt, dass wir das TLS-Geheimnis erfolgreich in den Pod eingebettet haben:

Wir haben erläutert, wie man geheimes TLS erstellt und es in die im Pod ausgeführte Kubernetes-Anwendung einbettet.

Abschluss

Um das geheime TLS in Kubernetes zu erstellen, erstellen Sie zunächst das TLS-signierte Zertifikat und den privaten Schlüssel. Starten Sie anschließend den Kubernetes-Cluster und führen Sie „ kubectl erstellt Geheimnis –cert= –key= ' Befehl. Benutzer können das geheime TLS auch mithilfe des Yaml-Manifests erstellen. In diesem Beitrag wurde erläutert, wie Sie das geheime TLS erstellen und das Geheimnis in eine laufende Anwendung oder einen laufenden Pod einbetten.