È 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

Utilizzare il workflow seguente per accedere in modo sicuro al registro privato dai nodi del cluster di Tanzu Kubernetes ed estrarre le immagini dei container.
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

Configurare kubeconfig con il segreto del pull dell'immagine per connettere un cluster di Tanzu Kubernetes a un registro del contenitore privato, ovvero il Registro Harbor incorporato o un registro privato esterno.
  1. Connettersi a Cluster supervisore. Vedere Connessione al Cluster supervisore come utente vCenter Single Sign-On.
  2. 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
  3. 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
  4. 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 eseguire kubectl 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 nomi default.
    • FACOLTATIVO: sostituire il valore di name con qualcosa di significativo, ad esempio harbor-registry-secret o private-registry-secret.
  5. 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
  6. 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.

Questa procedura può essere utilizzata per eseguire il pull delle immagini da un registro di container privato o da Registro Harbor incorporato. In questo esempio viene creata una specifica di pod che utilizza un'immagine archiviata nel Registro Harbor incorporato e viene usato il segreto di pull delle immagini configurato in precedenza.
  1. 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.
  2. 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.