Informationen zum Integrieren von TKG-Dienst-Clustern in eine private Containerregistrierung finden Sie in diesem Thema.
Anwendungsbeispiel für eine private Container-Registrierung
Container-Registrierungen stellen eine kritische Funktion für Kubernetes-Bereitstellungen zur Verfügung und dienen als zentrales Repository für die Speicherung und Freigabe von Container-Images. Die am häufigsten verwendete Registrierung für öffentliche Container ist Docker Hub. Es gibt viele Private Container-Registrierungsangebote. VMware Harbor ist eine native Cloud-Registrierung mit Open Source und privatem Container, die im Lieferumfang von Supervisor enthalten ist.
Integration der privaten Container-Registrierung
Zur Integration einer privaten Registrierung in ein TKG-Dienst-Cluster konfigurieren Sie den Cluster mit einem oder mehreren selbstsignierten CA-Zertifikaten, um private Registrierungsinhalte über HTTPS abzuwickeln. Hierzu fügen Sie in der Clusterspezifikation ein Feld vom Typ trust
mit dem Wert additionalTrustedCAs
ein. Sie können eine beliebige Anzahl selbstsignierter CA-Zertifikate definieren, denen der TKGS-Cluster vertrauen soll. Mit dieser Funktion können Sie problemlos eine Liste von Zertifikaten definieren und diese Zertifikate bei Bedarf aktualisieren.
Sie können das Zertifikat der privaten Registrierung bei der erstmaligen Erstellung des Clusters konfigurieren. Alternativ können Sie auch einen vorhandenen Cluster aktualisieren und das Zertifikat der privaten Registrierung bereitstellen. Um einen vorhandenen Cluster zu bearbeiten und die Felder für das Zertifikat der privaten Registrierung hinzuzufügen, verwenden Sie die Methode kubectl edit
. Weitere Informationen hierzu finden Sie unter Konfigurieren eines Texteditors für Kubectl.
Beachten Sie, dass sich die Implementierung des Felds trust.additionalTrustedCAs
bei den unterstützten APIs für die Bereitstellung von TKGS-Clustern geringfügig unterscheidet. Weitere Informationen finden Sie in den Tabellen Vertrauenswürdige v1alpha3-API-Felder und Vertrauenswürdige v1beta1-API-Variable.
Beispiel für die v1alpha3-API
Das folgende Beispiel zeigt die Integration eines mit der v1alpha3-API bereitgestellten TKG-Dienst-Clusters in eine private Containerregistrierung mithilfe des zugehörigen CA-Zertifikats.
trust.additionalTrustedCAs
ein oder mehrere Name-Daten-Paare auf, von denen jedes ein TLS-Zertifikat für eine private Registrierung enthalten kann.
Bereich | Beschreibung |
---|---|
trust |
Abschnittsmarkierung. Akzeptiert keine Daten. |
additionalTrustedCAs |
Abschnittsmarkierung. Enthält ein Array von Zertifikaten mit den Feldern name und data für jedes Zertifikat. |
name |
Benutzerdefinierter Name des CA-Zertifikats. |
data |
Inhalt des CA-Zertifikats (ca.crt ) im PEM-Format, das doppelt Base64-codiert ist.
Hinweis: Gemäß der v1alpha3-API muss der Zertifikatsinhalt einzeln Base64-codiert sein. Wenn der Inhalt nicht einzeln Base64-codiert ist, kann die resultierende PEM-Datei nicht verarbeitet werden.
|
- Laden Sie das Harbor-Registrierungszertifikat von der Harbor-Webschnittstelle im Bildschirm herunter.
Die Datei mit dem Zertifizierungsstellenzertifikat wird als
ca.crt
heruntergeladen. - Verwenden Sie für den Inhalt des CA-Zertifikats eine einzelne Base64-Codierung.
- Linux:
base64 -w 0 ca.crt
- Windows: https://www.base64encode.org/.
- Linux:
- Schließen Sie die Felder vom Typ
trust.additionalTrustedCAs
in die Clusterspezifikation ein und befüllen Sie sie mit den Wertenname
unddata
.#tkc-with-trusted-private-reg-cert.yaml apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TanzuKubernetesCluster metadata: name: tkc01 namespace: tkgs-cluster-ns spec: topology: controlPlane: replicas: 3 storageClass: tkgs-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.25.7---vmware.3-fips.1-tkg.1 nodePools: - name: nodepool-01 replicas: 3 storageClass: tkgs-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.25.7---vmware.3-fips.1-tkg.1 settings: storage: defaultClass: tkgs-storage-policy network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: cluster.local trust: additionalTrustedCAs: - name: CompanyInternalCA-1 data: LS0tLS1C...LS0tCg== - name: CompanyInternalCA-2 data: MTLtMT1C...MT0tPg==
- Führen Sie zum Rotieren eines Zertifikats den Befehl
kubectl edit
für die Clusterspezifikation aus und aktualisieren Sie den Werttrust.additionalTrustedCAs.data
. Initiieren Sie anschließend ein paralleles Update.
Beispiel für die v1beta1-API
Im folgenden Beispiel wird die Integration eines mit der v1beta1-API bereitgestellten TKG-Dienst-Clusters in eine private Containerregistrierung mithilfe des zugehörigen CA-Zertifikats beschrieben.
Bereich | Beschreibung |
---|---|
trust |
Abschnittsmarkierung. Akzeptiert keine Daten. |
additionalTrustedCAs |
Abschnittsmarkierung. Enthält ein Array von Zertifikaten mit einem Namen für jedes Zertifikat. |
name |
Der benutzerdefinierte Name für das Zuordnungsfeld data im geheimen Kubernetes-Schlüssel, der das doppelt Base64-codierte CA-Zertifikat im PEM-Format enthält.
Hinweis: Gemäß der v1beta1-API muss der Zertifikatsinhalt doppelt Base64-codiert sein. Wenn der Inhalt nicht doppelt Base64-codiert ist, kann die resultierende PEM-Datei nicht verarbeitet werden.
|
- Laden Sie das Harbor-Registrierungszertifikat von der Harbor-Webschnittstelle im Bildschirm herunter.
Die Datei mit dem Zertifizierungsstellenzertifikat wird als
ca.crt
heruntergeladen. - Verwenden Sie für den Inhalt des CA-Zertifikats eine doppelte Base64-Codierung.
- Linux:
base64 -w 0 ca.crt | base64 -w 0
- Windows: https://www.base64encode.org/.
- Linux:
- Erstellen Sie eine YAML-Datei für die geheime Kubernetes-Definition mit den folgenden Inhalten.
#additional-ca-1.yaml apiVersion: v1 data: additional-ca-1: TFMwdExTMUNSGlSzZ3Jaa...VVNVWkpRMEMwdExTMHRDZz09 kind: Secret metadata: name: cluster01-user-trusted-ca-secret namespace: tkgs-cluster-ns type: Opaque
Dabei gilt:- Bei dem Wert der
data
-Zuordnung des geheimen Schlüssels handelt es sich um eine benutzerdefinierte Zeichenfolge, die den Namen des CA-Zertifikats darstellt (in diesem Beispieladditional-ca-1
), dessen Wert ein doppeltes Base64-codiertes Zertifikat ist. - Versehen Sie den geheimen Schlüssel im Abschnitt
metadata
mit dem NamenCLUSTER-NAME-user-trusted-ca-secret
, wobei CLUSTER-NAME als Name des Clusters fungiert. Dieser geheime Schlüssel muss im selben vSphere-Namespace wie der Cluster erstellt werden.
- Bei dem Wert der
- Erstellen Sie den geheimen Kubernetes-Schlüssel deklarativ.
kubectl apply -f additional-ca-1.yaml
- Überprüfen Sie die Erstellung des geheimen Schlüssels.
kubeclt get secret -n tkgs-cluster-ns cluster01-user-trusted-ca-secret NAME TYPE DATA AGE cluster01-user-trusted-ca-secret Opaque 12 2d22h
- Schließen Sie die Variable
trust
in die Clusterspezifikation ein, die auf den Namen der Datenzuordnung für den geheimen Schlüssel verweist, d. h. in diesem Beispiel aufadditional-ca-1
.#cluster-with-trusted-private-reg-cert.yaml apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: cluster01 namespace: tkgs-cluster-ns spec: clusterNetwork: services: cidrBlocks: ["198.52.100.0/12"] pods: cidrBlocks: ["192.101.2.0/16"] serviceDomain: "cluster.local" topology: class: tanzukubernetescluster version: v1.26.5+vmware.2-fips.1-tkg.1 controlPlane: replicas: 3 workers: machineDeployments: - class: node-pool name: node-pool-01 replicas: 3 variables: - name: vmClass value: guaranteed-medium - name: storageClass value: tkgs-storage-profile - name: defaultStorageClass value: tkgs-storage-profile - name: trust value: additionalTrustedCAs: - name: additional-ca-1
- Erstellen Sie zum Rotieren des Zertifikats einen neuen geheimen Schlüssel und bearbeiten Sie die Clusterspezifikation mit dem entsprechenden Wert. Auf diese Weise wird ein paralleles Update des Clusters ausgelöst.
Hinweis: Änderungen am
CLUSTER-NAME-user-trusted-ca-secret
werden vom System nicht überwacht. Änderungen am Wert derdata
-Zuordnung spiegeln sich nicht im Cluster wider. Sie müssen einen neuen geheimen Schlüssel erstellen, dessen Angaben eine Zuordnung vonname
zutrust.additionalTrustCAs
beschreiben.