Puede utilizar el registro de Harbor integrado para que actúe como registro de contenedor privado de las imágenes que implemente en los clústeres de Tanzu Kubernetes que aprovisiona servicio Tanzu Kubernetes Grid.
vSphere with Tanzu incrusta una instancia del registro de Harbor que puede habilitar en el clúster supervisor y utilizar para implementar cargas de trabajo basadas en contenedores en clústeres de Tanzu Kubernetes.
Una vez que el registro de Harbor integrado esté habilitado en el clúster supervisor, servicio Tanzu Kubernetes Grid instalará en los nodos del clúster de Tanzu Kubernetes el certificado de CA raíz para la instancia del registro. Este certificado se instala en los clústeres nuevos y en los clústeres existentes (a través de un bucle de reconciliación). A partir de ese momento, podrá ejecutar imágenes en el clúster especificando el registro privado en el YAML de carga de trabajo.
Flujo de trabajo
Paso | Acción | Instrucciones |
---|---|---|
0 | Revise el flujo de trabajo para usar el registro de Harbor integrado con clústeres de Tanzu Kubernetes. | Consulte Usar un registro de contenedores para cargas de trabajo de vSphere with Tanzu. |
1 | Habilite el registro de Harbor integrado en el clúster supervisor. | Consulte Habilitar el registro de Harbor integrado en el clúster supervisor. |
2 | Configure kubeconfig para cada clúster con el secreto del servicio de registro. | Consulte las instrucciones a continuación: configure un clúster de Tanzu Kubernetes con el secreto de extracción de imágenes del registro de Harbor integrado. |
3 | Configure el YAML de carga de trabajo para especificar el registro de contenedor privado. | Consulte las instrucciones a continuación: configure un clúster de Tanzu Kubernetes con el secreto de extracción de imágenes del registro de Harbor integrado. |
4 | Para insertar imágenes en el registro de Harbor integrado, configure un cliente de Docker e instale el complemento auxiliar de credenciales de vSphere Docker. | Consulte Configurar un cliente de Docker con un certificado de registro de Harbor integrado y Insertar imágenes en el registro de Harbor integrado. |
Configurar un clúster de Tanzu Kubernetes con el secreto de extracción de imágenes del registro de Harbor integrado
- Conéctese al clúster supervisor. Consulte Conectarse al clúster supervisor como usuario vCenter Single Sign-On.
- Cambie el contexto al espacio de nombres de vSphere donde se aprovisiona el clúster de Tanzu Kubernetes de destino.
kubectl config use-context tkgs-cluster-ns
- Obtenga el secreto de extracción de imágenes para el espacio de nombres de vSphere y guárdelo en un archivo.
kubectl get secret -n <vsphere-namespace> <vsphere-namespace>-default-image-pull-secret -o yaml > <path>/image-pull-secret.yaml
Por ejemplo:kubectl get secret -n tkgs-cluster-ns tkgs-cluster-ns-default-image-pull-secret -o yaml > tanzu/image-pull-secret.yaml
- Abra
image-pull-secret.yaml
con un editor de texto. Como mínimo, realice los cambios necesarios y guarde el archivo cuando haya terminado.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
- OBLIGATORIO: Cambie el valor de
namespace
para que coincida con un espacio de nombres de Kubernetes adecuado del clúster, como default.Nota: Para configurar el secreto de extracción de imágenes, especifique un espacio de nombres de Kubernetes. Si el clúster de Tanzu Kubernetes ya existe, cambie su contexto y ejecutekubectl get namespaces
para enumerar los espacios de nombres de Kubernetes disponibles. Si es necesario, cree el espacio de nombres de destino antes de continuar. Si el clúster de Tanzu Kubernetes no existe, puede utilizar el espacio de nombres dedefault
. - OPCIONAL: cambie el valor de
name
por un nombre que tenga sentido, como harbor-registry-secret o private-registry-secret.
- OBLIGATORIO: Cambie el valor de
- Cree un archivo kubeconfig que se pueda utilizar para acceder al clúster de Tanzu Kubernetes.
kubectl get secret -n <vsphere-namespace> <cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > <path>/cluster-kubeconfig
Reemplace <vsphere-namespace> por el nombre del espacio de nombres de vSphere en el que se aprovisiona el clúster de Tanzu Kubernetes de destino. Reemplace <cluster-name> por el nombre del clúster de Tanzu Kubernetes.kubectl get secret -n tkgs-cluster-ns tkgs-cluster-5-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tanzu/cluster-kubeconfig
- Cree el secreto del servicio de registro en el clúster de Tanzu Kubernetes. Consulte el archivo del secreto de extracción de imágenes que guardó y actualizó en local.
kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <path>/image-pull-secret.yaml
Por ejemplo:kubectl --kubeconfig=tanzu/cluster-kubeconfig apply -f tanzu/image-pull-secret.yaml
Debería ver que el secreto del servicio de registro se creó correctamente.secret/harbor-registry-secret created
Configurar una carga de trabajo de Tanzu Kubernetes para extraer imágenes de un registro de contenedor privado
Para extraer imágenes de un registro de contenedor privado para una carga de trabajo del clúster de Tanzu Kubernetes, configure el YAML de carga de trabajo con los detalles del registro privado.
- Cree un ejemplo de especificación de Pod con los detalles del registro privado.
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>
- Reemplace
<workload-name>
por el nombre de la carga de trabajo del pod. - Reemplace
<kubernetes-namespace>
por el espacio de nombres de Kubernetes del clúster en el que se creará el pod. Debe ser el mismo espacio de nombres de Kubernetes en el que se almacena el secreto de extracción de imágenes del servicio de registro en el clúster de Tanzu Kubernetes (por ejemplo, el espacio de nombres predeterminado). - Reemplace
<Registry-IP-Address>
por la dirección IP de la instancia del registro de Harbor integrado que se ejecuta en el clúster supervisor. - Reemplace <vsphere-namespace> por el espacio de nombres de vSphere en el que se aprovisiona la instancia de Tanzu Kubernetes de destino.
- Reemplace
<image-name>
por el nombre de imagen que desee. - Reemplace
<version>
por una versión adecuada de la imagen (por ejemplo, "más reciente"). - Reemplace
<registry-secret-name>
por el nombre del secreto de extracción de imágenes del servicio de registro que creó anteriormente.
- Reemplace
- Cree una carga de trabajo en el clúster de Tanzu Kubernetes basada en la especificación de pod que definió.
kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <pod.yaml>
El pod se debe crear a partir de la imagen extraída del registro.