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
É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é
- Connectez-vous au Cluster superviseur. Reportez-vous à la section Se connecter à Cluster superviseur en tant qu'utilisateur vCenter Single Sign-On.
- 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
- 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
- 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écutezkubectl 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 nomsdefault
. - FACULTATIF : redéfinissez la valeur de
name
sur une valeur explicite (par exemple, harbor-registry-secret ou private-registry-secret).
- OBLIGATOIRE : modifiez la valeur de
- 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
- 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é.
- 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.
- Remplacez
- 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.