Fare riferimento a questo argomento per integrare i cluster Servizio TKG con un registro di container privato.
Caso d'uso del registro container privato
I registri di container forniscono una funzione essenziale per le distribuzioni Kubernetes, che funge da repository centralizzato per lo storage e la condivisione delle immagini dei container. Il registro di container pubblico più comunemente utilizzato è Docker Hub . Esistono molti registri di container privati. VMware Harbor è un registro di container privato open source nativo del cloud che viene fornito con Supervisore.
Integrazione del registro di container privato
Per integrare un registro privato con un cluster Servizio TKG, configurare il cluster con uno o più certificati CA autofirmati per il contenuto del registro privato su HTTPS. A tale scopo, nella specifica del cluster includere un campo trust
con il valore additionalTrustedCAs
. È possibile definire un numero qualsiasi di certificati CA autofirmati che il cluster TKGS deve considerare attendibili. Questa funzionalità consente di definire facilmente un elenco di certificati e di aggiornare quelli che devono essere ruotati.
È possibile configurare il certificato del registro privato quando si crea inizialmente il cluster oppure aggiornare un cluster esistente e fornire il certificato del registro privato. Per modificare un cluster esistente e aggiungere il certificato del registro privato, utilizzare il metodo kubectl edit
. Vedere Configurazione di un editor di testo per Kubectl.
Si tenga presente che l'implementazione del campo trust.additionalTrustedCAs
è leggermente diversa tra le API supportate per il provisioning dei cluster TKGS. Per ulteriori dettagli, fare riferimento alle tabelle Campi trust dell'API v1alpha3 e Variabile trust dell'API v1beta1.
Esempio di API v1alpha3
L'esempio seguente illustra come integrare un cluster Servizio TKG sottoposto a provisioning mediante l'API v1alpha3 con un registro di container privato utilizzando il relativo certificato CA.
trust.additionalTrustedCAs
include una o più coppie nome-dati, ognuna delle quali può includere un certificato TLS per un registro privato.
Campo | Descrizione |
---|---|
trust |
Marcatore di sezione. Non accetta alcun dato. |
additionalTrustedCAs |
Marcatore di sezione. Include un array di certificati con i campi name e data per ciascuno. |
name |
Nome definito dall'utente del certificato CA. |
data |
Contenuto del certificato CA (ca.crt ) in formato PEM con doppia codifica base64.
Nota: L'API v1alpha3 richiede che il contenuto del certificato abbia una codifica base64 singola. Se il contenuto non ha una codifica base64 singola, il file PEM risultante non può essere elaborato.
|
- Scaricare il certificato del registro Harbor dall'interfaccia Web di Harbor nella schermata .
Il file del certificato CA viene scaricato come
ca.crt
. - Codificare tramite codifica base64 singola il contenuto del certificato CA.
- Linux:
base64 -w 0 ca.crt
- Windows: https://www.base64encode.org/.
- Linux:
- Includere i campi
trust.additionalTrustedCAs
nella specifica del cluster e popolarli con i valoriname
edata
.#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==
- Per ruotare un certificato, applicare
kubectl edit
alla specifica del cluster e aggiornare il valoretrust.additionalTrustedCAs.data
, quindi avviare un aggiornamento in sequenza.
Esempio di API v1beta1
L'esempio seguente descrive come integrare un cluster Servizio TKG sottoposto a provisioning mediante l'API v1beta1 con un registro di container privato utilizzando il relativo certificato CA.
Campo | Descrizione |
---|---|
trust |
Marcatore di sezione. Non accetta alcun dato. |
additionalTrustedCAs |
Marcatore di sezione. Include un array di certificati con il nome per ciascuno. |
name |
Nome definito dall'utente per il campo della mappa data nel segreto Kubernetes che contiene il certificato CA in formato PEM con doppia codifica base64.
Nota: L'API v1beta1 richiede che il contenuto del certificato abbia una codifica base64 doppia. Se la codifica del contenuto non è base64 doppia, il file PEM risultante non può essere elaborato.
|
- Scaricare il certificato del registro Harbor dall'interfaccia Web di Harbor nella schermata .
Il file del certificato CA viene scaricato come
ca.crt
. - Codificare tramite codifica base64 doppia il contenuto del certificato CA.
- Linux:
base64 -w 0 ca.crt | base64 -w 0
- Windows: https://www.base64encode.org/.
- Linux:
- Creare un file YAML di definizione del segreto Kubernetes con il contenuto seguente.
#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
dove:- Il valore della mappa
data
del segreto è una stringa definita dall'utente che è il nome del certificato CA (additional-ca-1
in questo esempio) il cui valore è un certificato con codifica base64 doppia. - Nella sezione
metadata
, attribuire al segreto il nomeCLUSTER-NAME-user-trusted-ca-secret
, dove CLUSTER-NAME è il nome del cluster. Questo segreto deve essere creato nello stesso Spazio dei nomi vSphere del cluster.
- Il valore della mappa
- Creare il segreto Kubernetes in modo dichiarativo.
kubectl apply -f additional-ca-1.yaml
- Verificare la creazione del segreto.
kubeclt get secret -n tkgs-cluster-ns cluster01-user-trusted-ca-secret NAME TYPE DATA AGE cluster01-user-trusted-ca-secret Opaque 12 2d22h
- Includere la variabile
trust
nella specifica del cluster che fa riferimento al nome della mappa dei dati per il segreto, che in questo esempio èadditional-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
- Per ruotare il certificato, creare un nuovo segreto e modificare la specifica del cluster con il valore appropriato. Verrà attivato un aggiornamento in sequenza del cluster.
Nota: Il sistema non monitora le modifiche apportate a
CLUSTER-NAME-user-trusted-ca-secret
. Se il valore della mappadata
cambia, queste modifiche non vengono riportate nel cluster. Sarà necessario creare un nuovo segreto e il valorename
della mappa dei dati pertrust.additionalTrustCAs
.