Revise cómo instalar y configurar Harbor como un servicio de supervisor. A continuación, podrá utilizar Harbor como registro de cargas de trabajo que se ejecutan en clústeres de Tanzu Kubernetes Grid y pods de vSphere. Harbor necesita a Contour como controlador de entrada, por lo que primero debe instalar el servicio de supervisor de Contour y luego instalar Harbor.

Instalar Harbor como un servicio de supervisor

Harbor se instala como un servicio de supervisor mediante la opción Administración de cargas de trabajo en vSphere Client.

Requisitos previos

  • Compruebe que haya actualizado a vCenter Server 8.0a o una versión posterior. Los servicios de supervisor de Harbor y Contour son compatibles con vCenter Server 8.0a y versiones posteriores.
  • Compruebe que tenga el privilegio Administrar servicios de supervisor en el sistema vCenter Server donde agrega los servicios.
  • Instale Contour como servicio de supervisor en el mismo Supervisor en el que desea instalar Harbor. Consulte Instalar Contour como servicio de supervisor en vSphere IaaS control plane.
  • Designe y utilice un FQDN para acceder a la interfaz de usuario del administrador de Harbor.

Procedimiento

  1. Vaya a la sección Versiones de Harbor del repositorio de Supervisor-Services y descargue los siguientes archivos:
    • La definición del servicio de Harbor, el vínculo se denomina Harbor vX.X.X. Por ejemplo, Harbor 2.5.3
    • El archivo de configuración de Harbor, el vínculo denominado valores para vX.X.X. Por ejemplo, valores 2.5.3
    Los archivos resultantes se ven así:
    • harbor.yml
    • harbor-data-values.yml
  2. En vSphere Client vaya a Administración de cargas de trabajo y seleccione Servicios.
  3. Para implementar el operador de Harbor, haga clic en Agregar nuevo servicio y cargue la definición de servicio harbor.yml.
    Una ventana que muestra la implementación del operador de Harbor
    Una vez que se implementa el operador de Harbor, aparece en la pestaña Servicios: Una ventana que muestra cómo se ven los operadores de Harbor y Contour después de implementarlos
  4. Ahora que el operador de Harbor está implementado, puede instalar el servicio de supervisor en el mismo Supervisor en el que se ejecuta Contour.
    1. Abra el archivo harbor-data-values.yml y edite las propiedades según sea necesario.
      Propiedad Valor Descripción
      hostname: myharbor.com
      
        https: 443
      FQDN Cambie el FQDN que designó para acceder a la interfaz de usuario del administrador de Harbor.
      tlsCertificate:
        tlsSecretLabels: {"managed-by": "vmware-vRegistry"}
      Nota: No cambiar
      Este valor es necesario para que funcione la integración de TKG.
      harborAdminPassword: Harbor12345
      Cambio opcional La contraseña de Harbor que se usa durante la instalación. Puede cambiarla a través de la interfaz de usuario de administrador de Harbor, una vez que se haya instalado el servicio.
      secretKey: 0123456789ABCDEF
      Cadena de 16 caracteres La clave secreta utilizada para el cifrado. Debe ser una cadena de 16 caracteres.
      database:
        password: change-it
      Una contraseña segura Una contraseña inicial usada para la base de datos Postgres.
      core:
        replicas: 
        secret: change-it
        xsrfKey: 0123456789ABCDEF0123456789ABCDEF
      jobservice:
        replicas: 1
        secret: change-it
      registry:
        replicas: 
        secret: change-it
      Cadenas para los secretos y una cadena de clave XSRF de 32 caracteres Cambie para configurar sus propios secretos.
      persistence:
        persistentVolumeClaim:
          registry:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 10Gi
          jobservice:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 1Gi
          database:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 1Gi
          redis:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 1Gi
          trivy:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 5Gi
       
      Nombre de clase de almacenamiento

      Las directivas de almacenamiento que se utilizarán como clases de almacenamiento para aprovisionar PVC en el registro de Harbor, el servicio de trabajo, la base de datos, etc.

      Establezca cada una de las propiedades en función de las directivas de almacenamiento existentes que están disponibles en su entorno. Cambie el nombre de la directiva de almacenamiento por un nombre de clase de almacenamiento válido reemplazando todas las letras mayúsculas por minúsculas, así como reemplazando todos los símbolos y espacios "_" por un guion, "-". Por ejemplo, modifique la directiva de almacenamiento a harbor-storage-policy.

      network:
        ipFamilies: ["IPv4"]
      Nota: No cambiar
      No se admite IPv6.
    2. Vuelva a Administración de cargas de trabajo > Servicios y, en la tarjeta de servicio Harbor, seleccione Acciones > Instalar en supervisores.
    3. Seleccione el Supervisor en el que se ejecuta Contour y, en Configuración de servicio YAML copie y pegue el contenido del archivo harbor-data-values.yml modificado.
    4. Haga clic en Aceptar.
      Una vez que comience la instalación, puede realizar un seguimiento haciendo clic en el campo Supervisores en la tarjeta de servicio de Harbor. Puede que demore unos segundos hasta que el número junto a Supervisores se incremente. El estado del servicio será Configurando hasta que se alcance el estado deseado. Cuando se alcance el estado deseado, el estado del servicio cambiará a En ejecución.

Resultados

Puede ver los espacio de nombres de vSphere y los pods de vSphere creados para Harbor desde la vista Hosts y clúster. Una vista del espacio de nombres de Harbor con todos los pods vSphere que contienen

Asignar el FQDN de Harbor a la dirección IP de entrada de Envoy

Después de que se instale satisfactoriamente Harbor, incluya un registro de la asignación de FQDN de Harbor a la dirección IP de entrada de Envoy en un servidor DNS externo que esté configurado con el Supervisor.

Los clústeres de Tanzu Kubernetes Grid, los pods de vSphere y el Supervisor deben poder resolver el FQDN de Harbor para poder extraer imágenes del registro.

Para localizar la dirección IP de entrada de Envoy, desplácese hasta el espacio de nombres de Contour, seleccione Red y, a continuación, seleccione Servicios:

La captura de pantalla muestra la dirección IP de Envoy.

Establecer la confianza con el servicio de supervisor de Harbor

Una vez que Harbor esté instalado, debe configurar la confianza entre el Supervisor y Harbor para utilizarlo como registro de los pods de vSphere. Los clústeres de Tanzu Kubernetes Grid que están en la misma instancia de Supervisor que Harbor tienen la confianza establecida con Harbor automáticamente. Para utilizar Harbor como registro para clústeres de Tanzu Kubernetes Grid que se ejecutan en diferentes Supervisores, debe configurar la confianza entre Harbor y estos clústeres de Tanzu Kubernetes Grid.

Establecer la confianza entre Harbor y Supervisor

Para establecer la confianza entre Harbor y el Supervisor:
  1. Extraiga la CA de Harbor de la interfaz de usuario de Harbor o mediante el secreto TLS en el plano de control del Supervisor. Puede obtener el archivo ca.cert en la interfaz de usuario del administrador de Harbor en Administración > Configuración > Certificado raíz del registro > Descargar.
  2. Agregue la CA de Harbor al configMap de image-fetcher-ca-bundle en el espacio de nombres kube-system. Debe haber iniciado sesión con una cuenta administrativa de vCenter Single Sing-On y tener permiso para editar image-fetcher-ca-bundle.
    1. Configure la variable de entorno KUBE_EDITOR como se describe aquí:
    2. Edite el ConfigMap mediante el siguiente comando:
      kubectl edit configmap image-fetcher-ca-bundle -n kube-system
    3. Anexe el contenido del archivo de Harbor caca.cert al ConfigMap debajo del certificado de Supervisor existente. Asegúrese de no cambiar el certificado de Supervisor.
      apiVersion: v1
      data:
        ca-bundle: |-
          -----BEGIN CERTIFICATE-----
          MIIC/jCCAeagAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl
          ...
          qB72tWi8M5++h2RGcVash0P1CUZOHkpHxGdUGYv1Z97Wl89dT2OTn3iXqn8d1JAK
          aF8=
          -----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----
          MIIDKDCCAhCgAwIBAgIQBbUsj7mqXXC5XRhqqU3GiDANBgkqhkiG9w0BAQsFADAU
          ...
          5q7y87vOLTr7+0MG4O01zK0dJYx2jVhZlsuduMYpfqRLLewVl0eGu/6vr2M=
          -----END CERTIFICATE-----    
      kind: ConfigMap
      metadata:
        creationTimestamp: "2023-03-15T14:28:34Z"
        name: image-fetcher-ca-bundle
        namespace: kube-system
        resourceVersion: "713"
        uid: 6b7611a0-25fa-40f7-b4f5-e2a13bd0afe3
    4. Guarde las ediciones realizadas en el archivo. Como resultado, kubectl notifica:
      configmap/image-fetch-ca-bundle edit

Establecer la confianza entre Harbor y el clúster de Tanzu Kubernetes Grid que se ejecuta en Supervisores diferentes a Harbor

Los clústeres de Tanzu Kubernetes Grid que se ejecutan en Supervisores diferentes al que tiene instalado Harbor deben tener conectividad de red con Harbor. Estos clústeres de Tanzu Kubernetes Grid deben poder resolver el FQDN de Harbor.

Para establecer la confianza entre Harbor y los clústeres de Tanzu Kubernetes Grid, extraiga la CA de Harbor de la interfaz de usuario de Harbor o mediante el secreto TLS en el plano de control del Supervisor y, a continuación, siga los pasos que se indican en Integrar un clúster de TKG 2 con un registro de contenedor privado.