Vous pouvez utiliser le Registre Harbor intégré comme registre de conteneur privé pour les images que vous déployez sur les clusters Tanzu Kubernetes provisionnés par le Service Tanzu Kubernetes Grid.

vSphere with Tanzu intègre une instance du Registre Harbor que vous pouvez activer sur le Cluster superviseur et utiliser pour déployer des charges de travail basées sur des conteneurs sur des clusters Tanzu Kubernetes.

Une fois que le Registre Harbor intégré est activé sur le Cluster superviseur, le Service Tanzu Kubernetes Grid installe sur les nœuds du cluster Tanzu Kubernetes le certificat d'autorité de certification racine pour l'instance du registre. Ce certificat est installé sur les deux nouveaux clusters et sur les clusters existants (au moyen d'une boucle de rapprochement). À partir de là, vous pouvez exécuter des images sur le cluster en spécifiant le registre privé dans la charge de travail YAML.

Workflow

Utilisez le workflow suivant pour accéder en toute sécurité au registre privé à partir des nœuds de cluster Tanzu Kubernetes et extraire des images de conteneur.
Étape Action Instructions
0 Vérifiez que le workflow utilise le registre Harbor intégré avec les clusters Tanzu Kubernetes. Reportez-vous à la section Utilisation d'un registre de conteneur pour les charges de travail vSphere with Tanzu.
1 Activez le registre Harbor intégré sur le cluster superviseur. Reportez-vous à la section Activez le Registre Harbor intégré sur le Cluster superviseur.
2 Configurez le kubeconfig pour chaque cluster avec le secret du service de registre. Reportez-vous aux instructions ci-dessous : Configurez un cluster Tanzu Kubernetes avec le secret d'extraction d'image pour le Registre Harbor intégré.
3 Configurez le YAML de la charge de travail pour spécifier le registre de conteneur privé. Reportez-vous aux instructions ci-dessous : Configurez un cluster Tanzu Kubernetes avec le secret d'extraction d'image pour le Registre Harbor intégré.
4 Pour transférer des images vers le registre Harbor intégré, configurez un client Docker et installez l'outil d'assistance des informations d'identification Docker vSphere. Reportez-vous aux sections Configurer un client Docker avec le certificat de Registre Harbor intégré et Transférer des images vers le Registre Harbor intégré.

Configurer un cluster Tanzu Kubernetes avec le secret d'extraction d'image pour le Registre Harbor intégré

Configurez votre kubeconfig avec le secret pull d'image pour connecter un cluster Tanzu Kubernetes à un registre de conteneur privé, le Registre Harbor intégré ou un registre privé externe.
  1. Connectez-vous au Cluster superviseur. Reportez-vous à la section Se connecter à Cluster superviseur en tant qu'utilisateur vCenter Single Sign-On.
  2. Changez de contexte pour utiliser l'Espace de noms vSphere dans lequel le cluster Tanzu Kubernetes cible est provisionné.
    kubectl config use-context tkgs-cluster-ns
  3. Obtenez le secret d'extraction d'image pour le Espace de noms vSphere et stockez-le dans un fichier.
    kubectl get secret -n <vsphere-namespace> <vsphere-namespace>-default-image-pull-secret -o yaml > <path>/image-pull-secret.yaml
    Par exemple :
    kubectl get secret -n tkgs-cluster-ns tkgs-cluster-ns-default-image-pull-secret -o yaml > tanzu/image-pull-secret.yaml
  4. Ouvrez image-pull-secret.yaml avec un éditeur de texte. Effectuez au minimum la modification requise et enregistrez le fichier lorsque vous avez terminé.
    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
    
    • OBLIGATOIRE : modifiez la valeur de namespace pour qu'elle corresponde à un espace de noms Kubernetes approprié dans le cluster, par exemple default.
      Note : Pour configurer le secret d’extraction d’image, spécifiez un espace de noms Kubernetes. Si le cluster Tanzu Kubernetes existe déjà, basculez le contexte sur celui-ci et exécutez kubectl get namespaces pour répertorier les espaces de noms Kubernetes disponibles. Si nécessaire, créez l’espace de noms cible avant de continuer. Si le cluster Tanzu Kubernetes n'existe pas, vous pouvez utiliser l'espace de noms default.
    • FACULTATIF : redéfinissez la valeur de name sur une valeur explicite (par exemple, harbor-registry-secret ou private-registry-secret).
  5. Créez un fichier kubeconfig qui peut être utilisé pour accéder au cluster Tanzu Kubernetes.
    kubectl get secret -n <vsphere-namespace> <cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > <path>/cluster-kubeconfig
    
    Remplacez <vsphere-namespace> par le nom du Espace de noms vSphere sur lequel le cluster Tanzu Kubernetes cible est provisionné. Remplacez <cluster-name> par le nom du cluster Tanzu Kubernetes.
    kubectl get secret -n tkgs-cluster-ns tkgs-cluster-5-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tanzu/cluster-kubeconfig
  6. Créez le secret du service de registre dans le cluster Tanzu Kubernetes. Référencez le fichier secret de collecte d'image que vous avez enregistré et mis à jour localement.
    kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <path>/image-pull-secret.yaml
    Par exemple :
    kubectl --kubeconfig=tanzu/cluster-kubeconfig apply -f tanzu/image-pull-secret.yaml
    Vous devez voir que le secret du service de registre a été créé.
    secret/harbor-registry-secret created

Configurer une charge de travail Tanzu Kubernetes pour extraire des images d'un registre de conteneur privé

Pour extraire des images à partir du registre de conteneur intégré pour une charge de travail de cluster Tanzu Kubernetes, configurez le YAML de la charge de travail avec les détails du registre privé.

Cette procédure peut être utilisée pour obtenir des images à partir d'un registre de conteneur privé ou du Registre Harbor. Dans cet exemple, nous créons une spécification d'espace qui utilisera une image stockée dans le Registre Harbor intégré et utilisera le secret d'extraction d'image précédemment configuré.
  1. Créez un exemple de spécification d'espace avec les détails concernant le registre privé.
    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>
    • Remplacez <workload-name> par le nom de la charge de travail de l'espace.
    • Remplacez <kubernetes-namespace> par l'espace de noms Kubernetes dans le cluster où l'espace sera créé. Il doit s'agir du même espace de noms Kubernetes que celui dans lequel le secret d'extraction d'images du service de registre est stocké dans le cluster Tanzu Kubernetes (par exemple, l'espace de noms par défaut).
    • Remplacez <Registry-IP-Address> par l'adresse IP de l'instance de Registre Harbor intégrée exécutée sur le Cluster superviseur.
    • Remplacez <vsphere-namespace> par le Espace de noms vSphere où la Tanzu Kubernetes cible est provisionnée.
    • Remplacez <image-name> par un nom d'image de votre choix.
    • Remplacez <version> par une version appropriée de l'image, telle que « dernière ».
    • Remplacez <registry-secret-name> par le nom du secret d'extraction d'image du service de registre que vous avez créé précédemment.
  2. Créez une charge de travail dans le cluster Tanzu Kubernetes en fonction de la spécification d'espace que vous avez définie.
    kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <pod.yaml>

    L'espace doit être créé à partir de l'image extraite du registre.