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.
-
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.tlsIhrer Ingress-Ressource angeben.ibmcloud oc cluster get -c CLUSTER | grep IngressBeispielausgabe
Ingress Subdomain: mycluster-<hash>-0000.us-south.containers.appdomain.cloud Ingress Secret: mycluster-<hash>-0000 -
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 -
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-crnan.ibmcloud oc ingress secret create --cluster CLUSTER_NAME_OR_ID --cert-crn CRN --name SECRET_NAME --namespace openshift-ingressUm das Geheimnis mit dem
ibmcloud oc ingress secret createBefehl 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 desocPlug-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.
-
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-crnan.Um das Zertifikat mit dem
ibmcloud oc ingress secret createBefehl 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 desocPlug-ins „ OpenShift “ kopieren.ibmcloud oc ingress secret create --name SECRET_NAME --cluster CLUSTER_NAME_OR_ID --cert-crn CERTIFICATE_CRN --namespace openshift-ingress -
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.
| 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. |
|
| 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. |
|
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 Befehlibmcloud oc ingress secret createaus und verweisen auf den CRN des Ingress-Standardzertifikats, um das Zertifikat im Namensbereichistio-systemzu spiegeln. Ohne eine Secrets Manager-Instanz wird das Ingress-Standardzertifikat imdefault-Namensbereich automatisch aktualisiert. Sie sind jedoch für die regelmäßige Aktualisierung des Zertifikats im Namensbereichistio-systemmit 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 vonibmcloud ks ingress secret rm.