Verwaltung von TLS und nicht TLS Zertifikaten und Geheimnissen

Hier erfahren Sie, wie Sie Zertifikate und geheime Schlüssel in Ihrem Cluster verwenden.

Erwägen Sie die Verwendung von Secrets Manager zur zentralen Verwaltung und automatischen Aktualisierung Ihrer Geheimnisse.

Verwaltung von TLS Zertifikaten und Geheimnissen mit Ingress

Ihr Ingress TLS Zertifikat wird als Kubernetes Geheimnis gespeichert. Um die TLS-Geheimnisse in Ihrem Cluster zu verwalten, können Sie die Befehlssammlung ibmcloud oc ingress secret verwenden.

Sie können z. B. ein Zertifikat aus Secrets Manager in einen geheimen Kubernetes-Schlüssel in Ihrem Cluster importieren, indem Sie den folgenden Befehl ausführen.

ibmcloud oc ingress secret create --cluster CLUSTER_NAME_OR_ID --cert-crn CRN --name SECRET_NAME --namespace openshift-ingress

Um das Zertifikat mit dem ibmcloud oc ingress secret create Befehl zu importieren, muss eine Secrets Manager Standardinstanz in Ihrem Cluster registriert sein. Wenn Sie keine Instanz von „ Secrets Manager “ haben und Ihre Geheimnisse stattdessen direkt in Ihren Cluster geschrieben werden, haben Ihre Geheimnisse nicht den erforderlichen CRN-Wert und Sie müssen sie manuell mit den Befehlen des oc Plug-ins „ OpenShift “ kopieren.

Führen Sie den folgenden Befehl aus, um alle geheimen Ingress-Schlüssel für TLS-Zertifikate in Ihrem Cluster anzuzeigen.

ibmcloud oc ingress secret ls -c CLUSTER

Einrichten von TLS Geheimnissen für die IBM-bereitgestellte Ingress-Subdomäne

IBM bietet eine Ingress-Subdomain und ein Standardzertifikat TLS, das als Kubernetes secret in Ihrem Cluster gespeichert ist und das Sie in Ihrer Ingress-Ressource angeben können. Von IBM bereitgestellte TLS-Zertifikate sind von LetsEncrypt signiert und werden vollständig von IBM verwaltet.

Der Platzhalter für die von IBM bereitgestellte Ingress-Unterdomäne *.<cluster_name>-<globally_unique_account_HASH>-0000.<region>.containers.appdomain.cloud wird standardmäßig für Ihren Cluster registriert. Das von IBM bereitgestellte TLS-Zertifikat ist ein Platzhalterzertifikat und kann für die Platzhalterunterdomäne verwendet werden.

Führen Sie die Schritte aus, um das Standardzertifikat TLS für die von IBM bereitgestellte Ingress-Subdomäne zu verwenden.

  1. Ermitteln Sie den Namen des Geheimnisses, in dem Ihr Standardzertifikat TLS gespeichert ist. Beachten Sie, dass dies der Name des geheimen Schlüssels ist, den Sie im Abschnitt spec.tls Ihrer Ingress-Ressource angeben.

    ibmcloud oc cluster get -c CLUSTER | grep Ingress
    

    Beispielausgabe

    Ingress Subdomain:      mycluster-<hash>-0000.us-south.containers.appdomain.cloud
    Ingress Secret:         mycluster-<hash>-0000
    
  2. Zeigen Sie die Details des geheimen Schlüssels an und notieren Sie den CRN-Wert. Dies ist die CRN des TLS Zertifikats. Wenn Sie keine Standard [Secrets Manager] instanz in Ihrem Cluster registriert haben, verfügt Ihr Geheimnis über keine CRN. Weitere Details finden Sie in der Anmerkung im folgenden Schritt.

    ibmcloud oc ingress secret get -c CLUSTER --name SECRET_NAME --namespace openshift-ingress
    
  3. Erstellen Sie ein Geheimnis für das Standardzertifikat TLS in jedem Namespace, in dem Ihre Ingress-Ressourcen oder -Apps existieren. Geben Sie die CRN des TLS-Zertifikats mit der Befehlsoption --cert-crn an.

    ibmcloud oc ingress secret create --cluster CLUSTER_NAME_OR_ID --cert-crn CRN --name SECRET_NAME --namespace openshift-ingress
    

    Um das Geheimnis mit dem ibmcloud oc ingress secret create Befehl zu kopieren, muss eine Secrets Manager Standardinstanz in Ihrem Cluster registriert sein. Wenn Sie keine Instanz von „ Secrets Manager “ haben und Ihre Geheimnisse stattdessen direkt in Ihren Cluster geschrieben werden, haben Ihre Geheimnisse nicht den erforderlichen CRN-Wert und Sie müssen sie manuell mit den Befehlen des oc Plug-ins „ OpenShift “ kopieren.

Einrichten von TLS Geheimnissen für benutzerdefinierte Subdomains

Wenn Sie eine angepasste Unterdomäne in Ihrer Ingress-Ressource definieren, können Sie Ihr eigenes TLS-Zertifikat zum Verwalten der TLS-Terminierung nutzen. Sie müssen ein Kubernetes Geheimnis erstellen, um das TLS Zertifikat zu speichern, und dieses Geheimnis dann in jeden Namespace importieren, in dem Ihre Anwendungen existieren.

Durch das Speichern von benutzerdefinierten TLS Zertifikaten in Secrets Manager speichern, können Sie Ihre Zertifikate direkt in ein Kubernetes Geheimnis in Ihrem Cluster importieren.

  1. Erstellen oder importieren Sie ein Geheimnis für das TLS Zertifikat in dem Namensraum, in dem Ihre Ingress-Ressource existiert. Sie können zum Beispiel ein Geheimnis von Secrets Manager in Ihren Cluster importieren, indem Sie den folgenden Befehl ausführen. Geben Sie die CRN des TLS Zertifikats mit der Befehlsoption --cert-crn an.

    Um das Zertifikat mit dem ibmcloud oc ingress secret create Befehl zu importieren, muss eine Secrets Manager Standardinstanz in Ihrem Cluster registriert sein. Wenn Sie keine Instanz von „ Secrets Manager “ haben und Ihre Geheimnisse stattdessen direkt in Ihren Cluster geschrieben werden, haben Ihre Geheimnisse nicht den erforderlichen CRN-Wert und Sie müssen sie manuell mit den Befehlen des oc Plug-ins „ OpenShift “ kopieren.

    ibmcloud oc ingress secret create --name SECRET_NAME --cluster CLUSTER_NAME_OR_ID --cert-crn CERTIFICATE_CRN --namespace openshift-ingress
    
  2. Wiederholen Sie den vorherigen Schritt für jeden Namensbereich, in dem Ihre Apps vorhanden sind.

Verwaltung von Geheimnissen (nicht TLS )

Zur Verwaltung von Geheimnissen, die nicht von TLS stammen, können Sie die Befehle ibmcloud oc ingress secret verwenden.

Es gibt 5 Arten von Geheimnissen, die nicht von TLS stammen:

  • Beliebige geheime Schlüssel enthalten einen Zeichenfolgewert.
  • IAM-Berechtigungsnachweise enthalten einen IAM-API-Schlüssel.
  • Geheime Schlüssel für Benutzername und Kennwort enthalten einen Benutzernamen und ein Kennwort als zwei separate Werte.
  • Schlüsselwerte enthalten JSON-Werte.
  • Benutzerdefinierte Anmeldeinformationen enthalten benutzerdefinierte (String-)Werte.

Erfahren Sie, wie Sie Ihre nicht TLS Geheimnisse zentral verwalten können mit IBM Cloud Secrets Manager. Mit Secrets Manager können Sie verwaltete Kubernetes Geheimnisse erstellen, Ihre Geheimnisse automatisch aktualisieren, Geheimgruppen erstellen, die den Zugriff auf die Geheimnisse in Ihrem Cluster steuern, und vieles mehr.

Erstellen eines nicht TLS Geheimnisses in Ihrem Cluster

Erstellen Sie ein Geheimnis ohne TLS, indem Sie die Option --type Opaque im Befehl ibmcloud oc ingress secret create befehl. Beim Typ Opaque können Sie mehrere CRN-Werte einschließen, die keine Zertifikate sind. Wenn die Option --type nicht angegeben wird, wird standardmäßig TLS angewendet. Weitere Informationen und zusätzliche Befehlsoptionen finden Sie in der CLI-Referenz.

Der folgende Beispielbefehl erstellt ein Geheimnis ohne TLS mit dem angegebenen Typ Opaque. Nicht TLS Geheimnisse erfordern mindestens ein Geheimfeld. Beachten Sie, dass die Angabe der Option --field abhängig vom Typ des von Ihnen erstellten geheimen Schlüssels variiert.

ibmcloud oc ingress secret create -c cluster-test --name example-secret --namespace openshift-ingress --field crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa1a11111aaa1a1111aa1aa111:111a1111-11a1 --type Opaque

Um zu überprüfen, ob der geheime Schlüssel erstellt wurde, listen Sie alle geheimen Schlüssel im Namensbereich auf.

kubectl get secret -n default

Das folgende Beispiel zeigt die Ausgabe.

NAME                   TYPE                                  DATA   AGE
all-icr-io             kubernetes.io/dockerconfigjson        1      41h
default-token-8t6xw    kubernetes.io/service-account-token   3      41h
example-secret         Opaque                                        3m

Verwaltung von nicht TLS geheimen Feldern

Ein geheimes Feld ist ein Schlüssel-Wert-Paar, das in einem nicht- TLS Geheimnis gespeichert ist. Anhand der folgenden Beispiele können Sie nicht- TLS geheime Felder anzeigen, hinzufügen, aktualisieren oder entfernen.

Feldwerte anzeigen

Sie können die Werte der Felder eines geheimen Schlüssels anzeigen, indem Sie die Details des geheimen Schlüssels abrufen.

kubectl get secret -n default example-secret -o yaml

Die folgende Beispielausgabe zeigt die Felder für geheime Schlüssel und ihre Werte im Abschnitt data.

apiVersion: v1
data:
  arbitraryFVT: AAAaaAAaAAA1AAAaaAAa
  userCredsFVT_password: aAAaa1aaaA=
  userCredsFVT_username: aAAaaa==
kind: Secret
metadata:
  annotations:
    ingress.cloud.ibm.com/cert-source: ibm
    razee.io/build-url: https://url.com
    razee.io/source-url: https://url.com
  creationTimestamp: "2022-11-08T19:45:05Z"
  name: example-secret
  namespace: default
  resourceVersion: "111111"
  uid: 1aaa1111-1a11-111a-a1a1-11111a1a1a1a
type: Opaque

Sie können die Felder in einem geheimen Schlüssel auch mit den Befehlen ibmcloud oc ingress secret field ls und ibmcloud oc ingress secret get auflisten, aber die Ausgaben enthalten nur den Feldnamen und nicht den zugehörigen Wert.

Feld für geheime Schlüssel hinzufügen

Fügen Sie ein geheimes Feld zu einem nicht- TLS Geheimnis hinzu, indem Sie den ibmcloud oc ingress secret field add befehl mit der Option --field ausführen. Sie können diese Option auch verwenden, um Felder hinzuzufügen, wenn Sie einen geheimen Schlüssel mit dem Befehl ibmcloud oc ingress secret create erstellen. Diese Option wird für TLS-Geheimnisse nicht unterstützt.

Es gibt drei Möglichkeiten, die Option --field anzugeben: Die Auswahl hängt vom Typ des geheimen Schlüssels und davon ab, wie Sie das Feld im geheimen Schlüssel benennen möchten.

Optionen für das Hinzufügen von Feldern zu nicht TLS Geheimnissen
Option Format Beschreibung Unterstützte Typen geheimer Schlüssel
Standard --field <crn> Der Name des hinzugefügten Felds ist der Standardfeldname für den Typ des geheimen Schlüssels des angegebenen CRN. Alle nicht TLS Geheimnistypen
benannt --field <name>=<crn> Verwenden Sie diese Option, um einen Namen für das hinzugefügte Feld anzugeben. Der Name des hinzugefügten Felds ist der für <name> angegebene Wert.
  • Beliebig
    – IAM-Anmeldedaten
Mit Präfix versehen --field prefix=<crn> Der Name des hinzugefügten Felds ist der Standardfeldname für den Typ des geheimen Schlüssels, der durch den angegebenen CRN angegeben wird, mit dem Präfix des Namens des geheimen Schlüssels, der durch den Unterstrich <crn> angegeben wird.
  • IAM-Anmeldedaten
  • Benutzername/Kennwort
  • Schlüssel/Wert
  • Benutzerdefinierte Anmeldedaten

Die Standardfeldnamen sind arbitrary für beliebige Geheimnisse, api_key für IAM-Anmeldeinformationen, username oder password für Benutzeranmeldeinformationen und key für Schlüssel-Wert.

Im folgenden Beispiel werden drei Felder für geheime Schlüssel hinzugefügt-unter Verwendung desselben geheimen IAM-Berechtigungsnachweises mit dem Namen iam-, um zu veranschaulichen, wie sich die unterschiedlichen --field-Optionen auf den resultierenden Feldnamen auswirken. Sie können die Felder anzeigen, die einem geheimen Schlüssel hinzugefügt wurden, indem Sie kubectl get secret ausführen und den Block data der Ausgabe anzeigen.

ibmcloud oc ingress secret field add --cluster example-cluster --name example-iam-secret --namespace openshift-ingress  --field crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa-1a11-111a-aa1a-1111aa1aa111:secret:111a1111-11a1-11aa-a1a1-111aa12345aa --field custom_iam_name=crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa-1a11-111a-aa1a-1111aa1aa111:secret:111a1111-11a1-11aa-a1a1-111aa12345aa --field prefix=crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa-1a11-111a-aa1a-1111aa1aa111:secret:111a1111-11a1-11aa-a1a1-111aa12345aa

Beispielfelder, die im Block data der Details des geheimen Schlüssels aufgelistet sind.

data:
  api_key: bmZrUHR1VS1fNVpMOExsTmIxeTdQcXFTSENMc2pTUjRsNTQyTzZkZ2ZQMkk=  # Default field type using the default `api_key` field name
  custom_iam_name: bmZrUHR1VS1fNVpMOExsTmIxeTdQcXFTSENMc2pTUjRsNTQyTzZkZ2ZQMkk=  # Named field type using the specified `custom_iam_name` field name.
  iam_api_key: bmZrUHR1VS1fNVpMOExsTmIxeTdQcXFTSENMc2pTUjRsNTQyTzZkZ2ZQMkk= # Prefixed field type using the `iam` name in Secrets Manager followed by the `api_key` default name.

Felder für geheime Schlüssel aktualisieren

Führen Sie den Befehl ingress secret update aus, um die Werte eines Felds für geheime Schlüssel zu aktualisieren. Beachten Sie, dass der CRN dadurch nicht aktualisiert wird. Weitere Informationen und Befehlsoptionen finden Sie in der CLI-Referenz.

ibmcloud oc ingress secret update --cluster example-cluster --name example-secret --namespace openshift-ingress

Feld für geheime Schlüssel entfernen

Sie können ein Geheimfeld aus einem nicht- TLS Geheimnis entfernen. Weitere Informationen und Befehlsoptionen finden Sie in der CLI-Referenz.

ibmcloud oc ingress secret field rm -c example-cluster --name example-secret --namespace openshift-ingress --field-name example-Field

Sie können überprüfen, ob das Feld entfernt wurde, indem Sie den Block data der Details des geheimen Schlüssels überprüfen.

kubectl get secret -n default example-secret -o yaml

Geheime Schlüssel-FAQ

Lesen Sie die Antworten auf häufig gestellte Fragen zur Verwaltung geheimer Schlüssel in Ihrem Cluster.

Werden meine geheimen Schlüssel automatisch aktualisiert, wenn ich keine Secrets Manager-Instanz erstelle und registriere?
Wenn Sie keine Secrets Manager-Instanz in Ihrem Cluster registrieren, werden Ihre standardmäßigen geheimen Ingress-Schlüssel alle 90 Tage automatisch aktualisiert und auf Ihren Cluster angewendet. Alle geheimen Schlüssel, die Sie erstellt haben und die auf den standardmäßigen geheimen Ingress-Schlüssel verweisen, werden jedoch nicht automatisch aktualisiert.
Beispielszenario: Sie haben ein Ingress-Standardzertifikat im Namensbereich default. Sie führen den Befehl ibmcloud oc ingress secret create aus und verweisen auf den CRN des Ingress-Standardzertifikats, um das Zertifikat im Namensbereich istio-system zu spiegeln. Ohne eine Secrets Manager-Instanz wird das Ingress-Standardzertifikat im default-Namensbereich automatisch aktualisiert. Sie sind jedoch für die regelmäßige Aktualisierung des Zertifikats im Namensbereich istio-system mit den **kubectl**-Befehlen oder einer anderen Rotationsmethode verantwortlich.
Ich habe geheime Schlüssel erstellt, die auf das Ingress-Standardzertifikat verweisen, aber ich habe keine Secrets Manager-Instanz erstellt und registriert. Wie verwalte ich meine Geheimnisse?
Wenn Sie keine Secrets Manager-Instanz registrieren, aktualisiert Red Hat OpenShift on IBM Cloud automatisch nur den standardmäßigen geheimen Ingress-Schlüssel. Sie sind für die Verwaltung aller anderen geheimen Schlüssel mit kubectl-Befehlen oder einer anderen Rotationsmethode verantwortlich. Wenn Ihre geheimen Schlüssel auf das Ingress-Standardzertifikat verweisen, entfernen Sie sie mithilfe von ibmcloud ks ingress secret rm.