다음 지침에 따라 vSphere 8.x용 TKr을 실행하는 TKG 서비스 클러스터에 Harbor 컨테이너 레지스트리를 설치합니다.

사전 요구 사항

Harbor 데이터 값 생성

데이터 값 파일을 생성하여 Harbor 설치를 준비합니다.

  1. 저장소에 대한 최신 Harbor 패키지 버전을 가져옵니다.
    tanzu package available get harbor.tanzu.vmware.com -n tkg-system

    또는 kubectl 사용.

    kubectl -n tkg-system get packages | grep harbor
    참고: 일반적으로 요구 사항이 다른 경우가 아니면 최신 버전을 사용해야 합니다.
  2. harbor-data-values.yaml 파일을 생성합니다.
    tanzu package available get harbor.tanzu.vmware.com/2.9.1+vmware.1-tkg.1 --default-values-file-output harbor-data-values.yaml
    형식 설명:
    • 2.9.1+vmware.1-tkg.1은 대상 패키지 버전입니다.
    • harbor-data-values.yaml은 생성할 데이터 값 파일의 이름과 경로입니다.
  3. harbor-data-values.yaml 파일을 편집하고 다음 매개 변수의 값을 업데이트합니다.

    필요에 따라 추가 매개 변수를 구성합니다. Harbor 패키지 참조의 내용을 참조하십시오.

    필드 설명
    hostname Harbor 관리 콘솔 및 레지스트리 서비스에 액세스하기 위한 FQDN입니다. "yourdomain.com"를 고유한 호스트 이름으로 바꿉 있습니다.
    harborAdminPassword 암호를 강력하고 고유한 암호로 변경합니다(설치 후 UI에서 변경할 수도 있음).
    persistence.persistentVolumeClaim.database.storageClass: vSphere 네임스페이스에 대한 vSphere 스토리지 정책의 이름을 입력합니다.
    persistence.persistentVolumeClaim.jobservice.storageClass: vSphere 네임스페이스에 대한 vSphere 스토리지 정책의 이름을 입력합니다.
    persistence.persistentVolumeClaim.redis.storageClass: vSphere 네임스페이스에 대한 vSphere 스토리지 정책의 이름을 입력합니다.
    persistence.persistentVolumeClaim.registry.storageClass: vSphere 네임스페이스에 대한 vSphere 스토리지 정책의 이름을 입력합니다.
    persistence.persistentVolumeClaim.trivy.storageClass: vSphere 네임스페이스에 대한 vSphere 스토리지 정책의 이름을 입력합니다.
    tlsCertificate.tlsSecretLabels: {"managed-by": "vmware-vRegistry"}

Harbor 설치

다음 단계를 완료하여 Harbor 레지스트리를 설치합니다.
  1. Harbor에 대한 네임스페이스를 생성합니다.
    kubectl create ns tanzu-system-registry
  2. Harbor를 설치합니다.
    tanzu package install harbor --package harbor.tanzu.vmware.com --version 2.9.1+vmware.1-tkg.1 --values-file harbor-data-values.yaml --namespace tanzu-system-registry
  3. Harbor 설치를 확인합니다.
    tanzu package installed get harbor --namespace tanzu-system-registry

LoadBalancer 유형의 엔보이 서비스를 사용하여 Harbor용 DNS 구성

엔보이 서비스를 사용하는 사전 요구 사항 Contour가 LoadBalancer를 통해 노출되는 경우 로드 밸런서의 외부 IP 주소를 가져오고 Harbor FQDN에 대한 DNS 레코드를 생성합니다.
  1. LoadBalancer 유형의 엔보이 서비스에 대한 External-IP 주소를 가져옵니다.
    kubectl get service envoy -n tanzu-system-ingress
    반환된 External-IP 주소가 다음과 같이 표시됩니다.
    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
    또는 다음 명령을 사용하여 External-IP 주소를 가져올 수 있습니다.
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. Harbor 확장 설치를 확인하려면 로드 밸런서의 External-IP 주소에 매핑된 Harbor 및 Notary FQDN으로 로컬 /etc/hosts 파일을 업데이트합니다. 예를 들면 다음과 같습니다.
    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
    
  3. Harbor 확장 설치를 확인하려면 Harbor에 로그인합니다.
  4. 엔보이 서비스 로드 밸런서 External-IP 주소를 Harbor FQDN 및 Notary FQDN에 매핑하는 2개의 CNAME 레코드를 DNS 서버에 생성합니다.
  5. 외부 DNS 확장을 설치합니다.

NodePort 유형의 엔보이 서비스를 사용하여 Harbor용 DNS 구성

엔보이 서비스를 사용하는 사전 요구 사항 Contour가 NodePort를 통해 노출되는 경우 작업자 노드의 가상 시스템 IP 주소를 가져오고 Harbor FQDN에 대한 DNS 레코드를 생성합니다.
참고: NodePort를 사용하려면 harbor-data-values.yaml 파일에 올바른 port.https 값을 지정해야 합니다.
  1. 클러스터가 프로비저닝된 vSphere 네임스페이스로 컨텍스트를 전환합니다.
    kubectl config use-context VSPHERE-NAMESPACE
  2. 클러스터의 노드를 나열합니다.
    kubectl get virtualmachines
  3. 작업자 노드 중 하나를 선택하고 다음 명령을 사용하여 설명합니다.
    kubectl describe virtualmachines tkg2-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. 가상 시스템의 IP 주소(예: Vm Ip: 10.115.22.43)를 찾습니다.
  5. Harbor 확장 설치를 확인하려면 작업자 노드 IP 주소에 매핑된 Harbor 및 Notary FQDN으로 로컬 /etc/hosts 파일을 업데이트합니다. 예를 들면 다음과 같습니다.
    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
    
  6. Harbor 확장 설치를 확인하려면 Harbor에 로그인합니다.
  7. 작업자 노드 IP 주소를 Harbor FQDN 및 Notary FQDN에 매핑하는 2개의 CNAME 레코드를 DNS 서버에 생성합니다.
  8. 외부 DNS 확장을 설치합니다.

Harbor 웹 인터페이스에 로그인

Harbor가 설치 및 구성되면 로그인하여 사용을 시작합니다.
  1. Harbor 레지스트리 웹 인터페이스(https://core.harbor.domain) 또는 사용한 호스트 이름에 액세스합니다.

    Harbor 레지스트리 웹 인터페이스입니다.

  2. harbor-data-values.yaml 파일에 입력한 사용자 이름 admin과 생성된 암호를 사용하여 Harbor에 로그인합니다.

    사용자 이름 admin과 생성된 암호가 있는 Harbor 로그인 페이지입니다.

  3. Harbor 사용자 인터페이스에 액세스할 수 있는지 확인합니다.

    로그인한 후 Harbor 사용자 인터페이스의 [프로젝트] 탭이 표시됩니다.

  4. Harbor CA 인증서를 가져옵니다.

    Harbor 인터페이스에서 프로젝트 > 라이브러리를 선택하거나 새 프로젝트를 생성합니다.

    레지스트리 인증서를 클릭하고 Harbor CA 인증서(ca.crt)를 다운로드합니다.

  5. Harbor 레지스트리에서 컨테이너 이미지를 푸시하고 끌어올 수 있도록 Harbor CA 인증서를 Docker 클라이언트의 신뢰 저장소에 추가합니다. TKG 서비스 클러스터에서 개인 레지스트리 사용의 내용을 참조하십시오.
  6. Harbor 사용에 대한 자세한 내용은 Harbor 설명서를 참조하십시오.