È possibile utilizzare Registro Harbor incorporato per fungere da registro del contenitore privato per le immagini distribuite nei cluster di Tanzu Kubernetes di cui è stato eseguito il provisioning da Servizio Tanzu Kubernetes Grid.
vSphere with Tanzu integra un'istanza di Registro Harbor che è possibile abilitare nel Cluster supervisore e utilizzare per distribuire carichi di lavoro basati su container in cluster di Tanzu Kubernetes.
Una volta abilitato il Registro Harbor incorporato in Cluster supervisore, Servizio Tanzu Kubernetes Grid installerà nei nodi del cluster di Tanzu Kubernetes il certificato CA radice per l'istanza del registro. Questo certificato viene installato sia nei nuovi cluster che nei cluster esistenti (tramite un ciclo di riconciliazione). Da qui è possibile eseguire immagini nel cluster specificando il registro privato nello YAML del carico di lavoro.
Workflow
Passaggio | Azione | Istruzioni |
---|---|---|
0 | Esaminare il workflow per l'uso del registro Harbor incorporato con i cluster di Tanzu Kubernetes. | Vedere Utilizzo di un registro del contenitore per carichi di lavoro di vSphere with Tanzu. |
1 | Abilitare il registro Harbor incorporato nel cluster supervisore. | Vedere Abilitazione del Registro Harbor incorporato nel Cluster supervisore. |
2 | Configurare kubeconfig per ogni cluster con il segreto del servizio del registro. | Vedere le istruzioni seguenti: configurare un cluster di Tanzu Kubernetes con il segreto del pull dell'immagine per il Registro Harbor incorporato. |
3 | Configurare lo YAML del carico di lavoro per specificare il registro del contenitore privato. | Vedere le istruzioni seguenti: configurare un cluster di Tanzu Kubernetes con il segreto del pull dell'immagine per il Registro Harbor incorporato. |
4 | Per eseguire il push delle immagini nel registro Harbor incorporato, configurare un client Docker e installare vSphere Docker Credential Helper. | Vedere Configurazione di un client Docker con il certificato Registro Harbor incorporato e Eseguire il push delle immagini nel Registro Harbor incorporato. |
Configurazione di un cluster di Tanzu Kubernetes con il segreto del pull dell'immagine per il Registro Harbor incorporato
- Connettersi a Cluster supervisore. Vedere Connessione al Cluster supervisore come utente vCenter Single Sign-On.
- Passare al contesto dello Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster Tanzu Kubernetes di destinazione.
kubectl config use-context tkgs-cluster-ns
- Recuperare il segreto del pull dell'immagine per Spazio dei nomi vSphere e archiviarlo in un file.
kubectl get secret -n <vsphere-namespace> <vsphere-namespace>-default-image-pull-secret -o yaml > <path>/image-pull-secret.yaml
Ad esempio:kubectl get secret -n tkgs-cluster-ns tkgs-cluster-ns-default-image-pull-secret -o yaml > tanzu/image-pull-secret.yaml
- Aprire
image-pull-secret.yaml
con un editor di testo. Apportare almeno la modifica richiesta e salvare il file al termine dell'operazione.apiVersion: v1 data: .dockerconfigjson: ewoJCQkJImF1dGhzJUV2s1ZVZwWVFuWmp... kind: Secret metadata: creationTimestamp: "2020-11-12T02:41:08Z" managedFields: - apiVersion: v1 ... name: harbor-registry-secret #OPTIONAL: Change if desired namespace: default #REQUIRED: Enter the Kuberentes namespace ownerReferences: - apiVersion: registryagent.vmware.com/v1alpha1 ... resourceVersion: "675868" selfLink: /api/v1/namespaces/tkgs-cluster-ns/secrets/tkgs-cluster-ns-default-image-pull-secret uid: 66606b41-7363-4b74-a3f2-4436f83f type: kubernetes.io/dockerconfigjson
- OBBLIGATORIO: modificare il valore di
namespace
in modo che corrisponda a uno spazio dei nomi Kubernetes appropriato nel cluster, ad esempio default.Nota: Per configurare il segreto del pull dell'immagine, specificare uno spazio dei nomi Kubernetes. Se il cluster di Tanzu Kubernetes esiste già, passare a esso il contesto ed eseguirekubectl get namespaces
per elencare gli spazi dei nomi Kubernetes disponibili. Se necessario, creare lo spazio dei nomi di destinazione prima di procedere. Se il cluster di Tanzu Kubernetes non esiste, è possibile utilizzare lo spazio dei nomidefault
. - FACOLTATIVO: sostituire il valore di
name
con qualcosa di significativo, ad esempio harbor-registry-secret o private-registry-secret.
- OBBLIGATORIO: modificare il valore di
- Creare un file kubeconfig che possa essere utilizzato per accedere al cluster di Tanzu Kubernetes.
kubectl get secret -n <vsphere-namespace> <cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > <path>/cluster-kubeconfig
Sostituire <vsphere-namespace> con il nome del Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster di Tanzu Kubernetes di destinazione. Sostituire <cluster-name> con il nome del cluster di Tanzu Kubernetes.kubectl get secret -n tkgs-cluster-ns tkgs-cluster-5-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tanzu/cluster-kubeconfig
- Creare il segreto del servizio del registro nel cluster di Tanzu Kubernetes. Fare riferimento al file del segreto del pull dell'immagine salvato e aggiornato in locale.
kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <path>/image-pull-secret.yaml
Ad esempio:kubectl --kubeconfig=tanzu/cluster-kubeconfig apply -f tanzu/image-pull-secret.yaml
Dovrebbe essere possibile vedere che il segreto del servizio del registro è stato creato correttamente.secret/harbor-registry-secret created
Configurazione di un carico di lavoro di Tanzu Kubernetes per il pull di immagini da un registro ddi container privato
Per eseguire il pull di immagini da un registro di container privato per un carico di lavoro del cluster di Tanzu Kubernetes, configurare il file YAML del carico di lavoro con i dettagli del registro privato.
- Creare una specifica di pod di esempio con i dettagli relativi al registro privato.
apiVersion: v1 kind: Pod metadata: name: <workload-name> namespace: <kubernetes-namespace> spec: containers: - name: private-reg-container image: <Registry-IP-Address>/<vsphere-namespace>/<image-name>:<version> imagePullSecrets: - name: <registry-secret-name>
- Sostituire
<workload-name>
con il nome del carico di lavoro del pod. - Sostituire
<kubernetes-namespace>
con lo spazio dei nomi di Kubernetes nel cluster in cui verrà creato il pod. Deve essere lo stesso spazio dei nomi di Kubernetes in cui il segreto di pull delle immagini del servizio di registro è archiviato nel cluster di Tanzu Kubernetes (ad esempio lo spazio dei nomi predefinito). - Sostituire
<Registry-IP-Address>
con l'indirizzo IP dell'istanza di Registro Harbor incorporata in esecuzione nel Cluster supervisore. - Sostituire <vsphere-namespace> con lo Spazio dei nomi vSphere in cui viene eseguito il provisioning del Tanzu Kubernetes di destinazione.
- Sostituire
<image-name>
con il nome dell'immagine desiderata. - Sostituire
<version>
con una versione appropriata dell'immagine, ad esempio "la più recente". - Sostituire
<registry-secret-name>
con il nome del segreto del pull delle immagini del servizio di registro creato in precedenza.
- Sostituire
- Creare un carico di lavoro nel cluster di Tanzu Kubernetes in base alla specifica del pod definita.
kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <pod.yaml>
Il pod deve essere creato dall'immagine di cui è stato eseguito il pull dal registro.