Siga estas instrucciones para instalar Harbor en un clúster de TKG aprovisionado con un TKr para vSphere 7.x.
Requisitos previos
Consulte Flujo de trabajo para instalar paquetes estándar en TKr para vSphere 7.x.
- Si utiliza redes de NSX para Supervisor, cree un servicio Envoy de tipo LoadBalancer.
- Si utiliza redes de vSphere vDS para Supervisor, cree un servicio Envoy de tipo LoadBalancer o NodePort, en función de cuáles sean el entorno y los requisitos.
En la fase de producción, Harbor requiere una zona DNS en un servidor DNS local, como BIND, o en una nube pública, como AWS Route53 o Azure DNS. Una vez que haya configurado DNS, instale la extensión ExternalDNS si desea registrar automáticamente los FQDN de Harbor con un servidor DNS. Consulte Instalar ExternalDNS en TKr para vSphere 7.x.
Instalar Harbor
Para instalar el registro de Harbor mediante el paquete estándar, complete los siguientes pasos.
- Enumere las versiones de Harbor disponibles en el repositorio.
kubectl get packages -n tkg-system | grep harbor
- Cree la especificación
harbor.yaml
.apiVersion: v1 kind: ServiceAccount metadata: name: harbor-sa namespace: tkg-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: habor-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: harbor-sa namespace: tkg-system --- apiVersion: packaging.carvel.dev/v1alpha1 kind: PackageInstall metadata: name: harbor namespace: tkg-system spec: serviceAccountName: harbor-sa packageRef: refName: harbor.tanzu.vmware.com versionSelection: constraints: 2.7.1+vmware.1-tkg.1 #PKG-VERSION values: - secretRef: name: harbor-data-values --- apiVersion: v1 kind: Secret metadata: name: harbor-data-values namespace: harbor-registry stringData: values.yml: | namespace: tanzu-system-registry hostname: <ENTER-HARBOR-FQDN> port: https: 443 logLevel: info tlsCertificate: tls.crt: "" tls.key: "" ca.crt: tlsCertificateSecretName: enableContourHttpProxy: true harborAdminPassword: <ENTER-STRONG-PASSWORD-HERE> secretKey: <ENTER-SECRET-KEY> database: password: <ENTER-STRONG-PASSWORD-HERE> shmSizeLimit: maxIdleConns: maxOpenConns: exporter: cacheDuration: core: replicas: 1 secret: <ENTER-SECRET> xsrfKey: <ENTER-XSRF-KEY-WHICH-IS-AN-ALPHANUMERIC-STRING-WITH-32-CHARS> jobservice: replicas: 1 secret: <ENTER-SECRET> registry: replicas: 1 secret: <ENTER-SECRET> trivy: enabled: true replicas: 1 gitHubToken: "" skipUpdate: false persistence: persistentVolumeClaim: registry: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 50Gi jobservice: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 10Gi database: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 10Gi redis: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 10Gi trivy: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 10Gi proxy: httpProxy: httpsProxy: noProxy: 127.0.0.1,localhost,.local,.internal pspNames: vmware-system-restricted network: ipFamilies: ["IPv4", "IPv6"]
- Personalice el secreto
harbor-data-values
en la especificaciónharbor.yaml
con los valores adecuados para su entorno, incluidos el nombre de host, las contraseñas, los secretos y la clase de almacenamiento.Para obtener más instrucciones, consulte Referencia del paquete de Harbor.
- Instale Harbor.
kubectl apply -f harbor.yaml
- Compruebe la instalación de Harbor.
kubectl get all -n harbor-registry
Configurar DNS para Harbor mediante Envoy LoadBalancer (redes NSX)
- Obtenga la dirección
External-IP
para el servicio Envoy de tipo LoadBalancer.kubectl get service envoy -n tanzu-system-ingress
Debería ver la direcciónExternal-IP
que se devuelve, por ejemplo:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE envoy LoadBalancer 10.99.25.220 10.195.141.17 80:30437/TCP,443:30589/TCP 3h27m
Si lo prefiere, puede obtener la direcciónExternal-IP
mediante el siguiente comando.kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
- Para comprobar la instalación de la extensión Harbor, actualice el archivo
/etc/hosts
local con los FQDN de Harbor y Notary asignados a la direcciónExternal-IP
del equilibrador de carga; por ejemplo:127.0.0.1 localhost 127.0.1.1 ubuntu #TKG Harbor with Envoy Load Balancer IP 10.195.141.17 core.harbor.domain 10.195.141.17 core.notary.harbor.domain
- Para comprobar la instalación de la extensión Harbor, inicie sesión en Harbor.
- Cree dos registros CNAME en un servidor DNS que asignen la dirección
External-IP
del servicio Envoy del equilibrador de carga al FQDN de Harbor y al FQDN de Notary. - Instale la extensión DNS externo.
Configurar DNS para Harbor mediante Envoy NodePort (redes vDS)
port.https
correcto en el archivo
harbor-data-values.yaml
.
- Cambie el contexto a la instancia de espacio de nombres de vSphere en la que se aprovisiona el clúster.
kubectl config use-context VSPHERE-NAMESPACE
- Enumere los nodos del clúster.
kubectl get virtualmachines
- Seleccione uno de los nodos de trabajo y describa el nodo mediante el siguiente comando.
kubectl describe virtualmachines tkg2-cluster-X-workers-9twdr-59bc54dc97-kt4cm
- Busque la dirección IP de la máquina virtual; por ejemplo,
Vm Ip: 10.115.22.43
. - Para comprobar la instalación de la extensión Harbor, actualice el archivo
/etc/hosts
local con los FQDN de Harbor y Notary asignados a la dirección IP del nodo de trabajo; por ejemplo:127.0.0.1 localhost 127.0.1.1 ubuntu #TKG Harbor with Envoy NodePort 10.115.22.43 core.harbor.domain 10.115.22.43 core.notary.harbor.domain
- Para comprobar la instalación de la extensión Harbor, inicie sesión en Harbor.
- Cree dos registros CNAME en un servidor DNS que asignen la dirección IP del nodo de trabajo al FQDN de Harbor y al FQDN de Notary.
- Instale la extensión DNS externo.
Iniciar sesión en la interfaz web de Harbor
- Acceda a la interfaz web del registro de Harbor en
https://core.harbor.domain
o al nombre de host que utilizó. - Inicie sesión en Harbor con el nombre de usuario admin y la contraseña generada que colocó en el archivo
harbor-data-values.yaml
. - Compruebe que puede acceder a la interfaz de usuario de Harbor.
- Obtenga el certificado de CA de Harbor.
En la interfaz de Harbor, seleccione Nuevo proyecto.
o cree unHaga clic en Certificado del registro y descargue el certificado de CA de Harbor (ca.crt).
- Agregue el certificado de CA de Harbor al almacén de confianza del cliente de Docker para poder insertar y extraer imágenes de contenedor al registro de Harbor y desde él. Consulte Uso de registros privados con clústeres Servicio TKG.
- Consulte la documentación de Harbor para obtener más información sobre el uso de Harbor.