Sie können die eingebettete Harbor-Registrierung als private Containerregistrierung für Images verwenden, die Sie für die vom Tanzu Kubernetes Grid-Dienst bereitgestellten Tanzu Kubernetes-Cluster bereitstellen.

vSphere with Tanzu bettet eine Harbor-Registrierung-Instanz ein, die Sie im Supervisor-Cluster aktivieren und verwenden können, um containerbasierte Arbeitslasten in Tanzu Kubernetes-Clustern bereitzustellen.

Sobald die eingebettete Harbor-Registrierung im Supervisor-Cluster aktiviert ist, wird der Tanzu Kubernetes Grid-Dienst auf dem Tanzu Kubernetes-Clusterknoten mit dem Stammzertifizierungsstelle für die Registrierungsinstanz installiert. Dieses Zertifikat wird sowohl in neuen Clustern als auch in vorhandenen Clustern (über eine Abgleichsschleife) installiert. Von dort aus können Sie Images im Cluster ausführen, indem Sie die private Registrierung in der Arbeitslast-YAML angeben.

Workflow

Verwenden Sie den folgenden Workflow, um sicher auf die private Registrierung von Tanzu Kubernetes-Clusterknoten zuzugreifen und Container-Images abzurufen.
Schritt Aktion Anleitung
0 Überprüfen Sie den Workflow für die Verwendung der eingebetteten Harbor-Registrierung mit Tanzu Kubernetes-Clustern. Weitere Informationen hierzu finden Sie unter Verwenden einer Containerregistrierung für vSphere with Tanzu-Arbeitslasten.
1 Aktivieren Sie die eingebettete Harbor-Registrierung im Supervisor-Cluster. Weitere Informationen hierzu finden Sie unter Aktivieren der eingebetteten Harbor-Registrierung auf dem Supervisor-Cluster.
2 Konfigurieren Sie die kubeconfig für jeden Cluster mit dem geheimen Schlüssel des Registrierungsdienstanbieters. Siehe nachfolgende Anweisungen: Konfigurieren eines Tanzu Kubernetes-Clusters mit dem Geheimschlüssel zum Ziehen von Images für die eingebettete Harbor-Registrierung.
3 Konfigurieren Sie die Arbeitslast-YAML, um die private Containerregistrierung anzugeben. Siehe nachfolgende Anweisungen: Konfigurieren eines Tanzu Kubernetes-Clusters mit dem Geheimschlüssel zum Ziehen von Images für die eingebettete Harbor-Registrierung.
4 Um Images an die eingebettete Harbor-Registrierung weiterzugeben, konfigurieren Sie einen Docker-Client und installieren Sie den vSphere Docker Credential Helper. Weitere Informationen finden Sie unter Konfigurieren eines Docker-Clients mit dem eingebetteten Harbor-Registrierung-Zertifikat und Weitergeben von Images an die eingebettete Harbor-Registrierung.

Konfigurieren eines Tanzu Kubernetes-Clusters mit dem Geheimschlüssel zum Ziehen von Images für die eingebettete Harbor-Registrierung

Konfigurieren Sie Kubeconfig mit dem geheimen Schlüssel zum Abrufen von Images , um einen Tanzu Kubernetes-Cluster mit einer privaten Containerregistrierung zu verbinden, entweder der eingebetteten Harbor-Registrierung oder einer externen privaten Registrierung.
  1. Stellen Sie eine Verbindung mit dem Supervisor-Cluster her. Weitere Informationen hierzu finden Sie unter Herstellen einer Verbindung mit dem Supervisor-Cluster als vCenter Single Sign-On-Benutzer.
  2. Ändern Sie den Kontext in den vSphere-Namespace, in dem der Tanzu Kubernetes-Zielcluster bereitgestellt wird.
    kubectl config use-context tkgs-cluster-ns
  3. Beziehen Sie den Geheimschlüssel zum Ziehen von Images für den vSphere-Namespace und speichern Sie ihn in einer Datei.
    kubectl get secret -n <vsphere-namespace> <vsphere-namespace>-default-image-pull-secret -o yaml > <path>/image-pull-secret.yaml
    Beispiel:
    kubectl get secret -n tkgs-cluster-ns tkgs-cluster-ns-default-image-pull-secret -o yaml > tanzu/image-pull-secret.yaml
  4. Öffnen Sie image-pull-secret.yaml mit einem Texteditor. Nehmen Sie mindestens die erforderliche Änderung vor und speichern Sie die Datei, wenn Sie fertig sind.
    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
    
    • ERFORDERLICH: Ändern Sie den Wert für namespace so, dass er einem geeigneten Kubernetes-Namespace im Cluster entspricht, wie z. B. default.
      Hinweis: Geben Sie zum Konfigurieren des Geheimschlüssels zum Ziehen von Images einen Kubernetes-Namespace an. Wenn der Tanzu Kubernetes-Cluster bereits vorhanden ist, nehmen Sie einen Kontextwechsel zum Cluster vor und führen Sie kubectl get namespaces zum Auflisten der verfügbaren Kubernetes-Namespaces aus. Erstellen Sie gegebenenfalls den Ziel-Namespace, bevor Sie fortfahren. Wenn der Tanzu Kubernetes-Cluster nicht vorhanden ist, können Sie den default-Namespace verwenden.
    • OPTIONAL: Ändern Sie den Wert für name in einen aussagekräftigen Wert, wie z. B. harbor-registry-secret oder private-registry-secret.
  5. Erstellen Sie eine kubeconfig-Datei, die für den Zugriff auf den Tanzu Kubernetes-Cluster verwendet werden kann.
    kubectl get secret -n <vsphere-namespace> <cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > <path>/cluster-kubeconfig
    
    Ersetzen Sie <vsphere-namespace> durch den Namen des vSphere-Namespace, in dem der Tanzu Kubernetes-Zielcluster bereitgestellt wird. Ersetzen Sie <cluster-name> durch den Namen des Tanzu Kubernetes-Clusters.
    kubectl get secret -n tkgs-cluster-ns tkgs-cluster-5-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tanzu/cluster-kubeconfig
  6. Erstellen Sie den geheimen Schlüssel des Registrierungsdiensts im Tanzu Kubernetes-Cluster. Verweisen Sie auf die Datei mit dem Geheimschlüssels zum Ziehen von Images, die sie lokal gespeichert und aktualisiert haben.
    kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <path>/image-pull-secret.yaml
    Beispiel:
    kubectl --kubeconfig=tanzu/cluster-kubeconfig apply -f tanzu/image-pull-secret.yaml
    Die erfolgreiche Erstellung des geheimen Schlüssels des Registrierungsdiensts sollte angezeigt werden.
    secret/harbor-registry-secret created

Konfigurieren einer Tanzu Kubernetes-Arbeitslast zum Extrahieren von Images aus einer privaten Containerregistrierung

Um Images aus einer privaten Containerregistrierung für eine Tanzu Kubernetes-Cluster-Arbeitslast abzurufen, konfigurieren Sie die Arbeitslast-YAML mit den Details der privaten Registrierung.

Mit diesem Verfahren können Images aus einer privaten Containerregistrierung oder aus der eingebetteten Harbor-Registrierung abgerufen werden. In diesem Beispiel erstellen wir eine Pod-Spezifikation, die ein in der eingebetteten Harbor-Registrierung gespeichertes Image verwendet und den zuvor konfigurierten Geheimschlüssel zum Ziehen von Images nutzt.
  1. Erstellen Sie eine Beispiel-Pod-Spezifikation mit den Details zur privaten Registrierung.
    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>
    • Ersetzen Sie <workload-name> durch den Namen der Pod-Arbeitslast.
    • Ersetzen Sie <kubernetes-namespace> durch den Kubernetes-Namespace im Cluster, in dem der Pod erstellt werden soll. Hierbei muss es sich um denselben Kubernetes-Namespace handeln, in dem der Geheimschlüssel zum Ziehen von Images für den Registrierungsdienst im Tanzu Kubernetes-Cluster (z. B. dem Standard-Namespace) gespeichert ist.
    • Ersetzen Sie <Registry-IP-Address> durch die IP-Adresse für die eingebettete Harbor-Registrierung-Instanz, die auf dem Supervisor-Cluster ausgeführt wird.
    • Ersetzen Sie <vsphere-namespace> durch den vSphere-Namespace, in dem der Ziel-Tanzu Kubernetes bereitgestellt wird.
    • Ersetzen Sie <image-name> durch einen Image-Namen Ihrer Wahl.
    • Ersetzen Sie <version> durch eine geeignete Version des Images, z. B. „neueste“.
    • Ersetzen Sie <registry-secret-name> durch den Namen des Ihnen zuvor erstellten Geheimschlüssel zum Ziehen von Images .
  2. Erstellen Sie eine Arbeitslast im Tanzu Kubernetes-Cluster basierend auf der von Ihnen definierten Pod-Spezifikation.
    kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <pod.yaml>

    Der Pod sollte aus dem Image erstellt werden, das aus der Registrierung gezogen wurde.