Harbor를 감독자 서비스로 설치하고 구성하는 방법을 알아봅니다. 그런 다음 Harbor를 Tanzu Kubernetes Grid 클러스터 및 vSphere 포드에서 실행되는 워크로드에 대한 레지스트리로 사용할 수 있습니다. Harbor에는 Contour가 수신 컨트롤러로 필요하므로 먼저 Contour 감독자 서비스를 설치한 다음 Harbor를 설치합니다.

Harbor를 감독자 서비스로 설치

vSphere Client의 워크로드 관리 옵션을 통해 Harbor를 감독자 서비스로 설치합니다.

사전 요구 사항

  • vCenter Server 8.0a 이상으로 업그레이드했는지 확인합니다. Contour 및 Harbor 감독자 서비스vCenter Server 8.0a 이상에서 지원됩니다.
  • 서비스를 추가하는 vCenter Server 시스템에 대한 감독자 서비스 관리 권한이 있는지 확인합니다.
  • Harbor를 설치하려는 동일한 감독자에 Contour를 감독자 서비스로 설치합니다. vSphere IaaS control plane에서 Contour를 감독자 서비스로 설치의 내용을 참조하십시오.
  • Harbor 관리 UI에 액세스하기 위한 FQDN을 지정합니다.

프로시저

  1. Supervisor-Services 저장소의 Harbor Versions 섹션으로 이동하여 다음 파일을 다운로드합니다.
    • Harbor 서비스 정의, 링크 이름은 Harbor vX.X.X.입니다. 예: Harbor 2.5.3
    • Harbor 구성 파일, 링크 이름은 values for vX.X.X입니다. 예: values 2.5.3
    결과 파일은 다음과 같습니다.
    • harbor.yml
    • harbor-data-values.yml
  2. vSphere Client에서 워크로드 관리로 이동하고 서비스를 선택합니다.
  3. 새 서비스 추가를 클릭하고 harbor.yml 서비스 정의를 업로드하여 Harbor operator를 배포합니다.
    Harbor operator 배포를 보여주는 창
    Harbor operator가 배포되면 서비스 탭에 나타납니다. Harbor 및 Contour operator가 배포된 후의 모습을 보여주는 창
  4. Harbor operator가 배포되었으므로 Contour가 실행되는 동일한 감독자감독자 서비스를 설치할 수 있습니다.
    1. harbor-data-values.yml 파일을 열고 필요에 따라 속성을 편집합니다.
      속성 설명
      hostname: myharbor.com
      
        https: 443
      FQDN Harbor 관리 UI에 액세스하도록 지정한 FQDN으로 변경합니다.
      tlsCertificate:
        tlsSecretLabels: {"managed-by": "vmware-vRegistry"}
      참고: 변경 없음
      이 값은 TKG 통합이 작동하는 데 필요합니다.
      harborAdminPassword: Harbor12345
      필요에 따라 변경 설치 중에 사용되는 Harbor 암호입니다. 서비스가 설치되면 Harbor 관리 UI를 통해 변경할 수 있습니다.
      secretKey: 0123456789ABCDEF
      16자 문자열 암호화에 사용되는 비밀 키입니다. 16자의 문자열이어야 합니다.
      database:
        password: change-it
      보안 암호 Postgres 데이터베이스에 사용되는 초기 암호입니다.
      core:
        replicas: 
        secret: change-it
        xsrfKey: 0123456789ABCDEF0123456789ABCDEF
      jobservice:
        replicas: 1
        secret: change-it
      registry:
        replicas: 
        secret: change-it
      암호 문자열 및 32자 XSRF 키 문자열 자체 암호를 설정하도록 변경합니다.
      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
       
      스토리지 클래스 이름

      Harbor 레지스트리, 작업 서비스, 데이터베이스 등에서 PVC 프로비저닝을 위한 스토리지 클래스로 사용될 스토리지 정책입니다.

      각 속성을 환경에서 사용 가능한 기존 스토리지 정책으로 설정합니다. 모든 대문자를 소문자로 바꾸고 "_" 기호와 공백을 모두 대시 "-"로 바꾸어 스토리지 정책 이름을 유효한 스토리지 클래스 이름으로 변경합니다. 예를 들어 Harbor Storage Policyharbor-storage-policy로 수정합니다.

      network:
        ipFamilies: ["IPv4"]
      참고: 변경 없음
      IPv6은 지원되지 않습니다.
    2. 워크로드 관리 > 서비스로 돌아가고 Harbor 서비스 카드에서 작업 > 감독자에 설치를 선택합니다.
    3. Contour가 실행되는 감독자를 선택하고 YAML 서비스 구성에서 수정된 harbor-data-values.yml 파일의 컨텐츠를 복사하여 붙여넣습니다.
    4. 확인을 클릭합니다.
      설치가 시작되면 Harbor 서비스 카드에서 감독자 필드를 클릭하여 설치를 추적할 수 있습니다. 감독자 옆에 있는 숫자가 증가할 때까지 몇 초 정도 걸릴 수 있습니다. 서비스는 원하는 상태에 도달할 때까지 [구성 중] 상태입니다. 원하는 상태에 도달하면 서비스의 상태가 [실행 중]으로 변경됩니다.

결과

호스트 및 클러스터 보기에서 Harbor에 대해 생성된 vSphere 네임스페이스vSphere 포드를 볼 수 있습니다. 포함된 모든 vSphere 포드가 있는 Harbor 네임스페이스의 보기

Harbor FQDN을 엔보이 수신 IP 주소에 매핑

Harbor가 설치된 후 엔보이 수신 IP 주소에 대한 Harbor FQDN 매핑 레코드를 감독자로 구성된 외부 DNS 서버에 포함합니다.

Tanzu Kubernetes Grid 클러스터, vSphere 포드감독자는 Harbor FQDN을 확인할 수 있어야 레지스트리에서 이미지를 끌어올 수 있습니다.

엔보이 수신 IP 주소를 찾으려면 Contour 네임스페이스로 이동하여 네트워크를 선택하고 서비스를 선택합니다.

엔보이 IP 주소가 스크린샷에 표시됩니다.

Harbor 감독자 서비스와의 신뢰 설정

Harbor가 설치되면 Harbor를 vSphere 포드의 레지스트리로 사용할 수 있도록 감독자와 Harbor 간에 신뢰를 구성해야 합니다. Harbor와 동일한 감독자에 있는 Tanzu Kubernetes Grid 클러스터는 Harbor와의 신뢰가 자동으로 설정되어 있습니다. Harbor를 다른 감독자에서 실행되는 Tanzu Kubernetes Grid 클러스터의 레지스트리로 사용하려면 Harbor와 이러한 Tanzu Kubernetes Grid 클러스터 간에 신뢰를 구성해야 합니다.

Harbor와 감독자 간에 신뢰 설정

Harbor와 감독자 간에 신뢰를 설정하려면 다음을 수행합니다.
  1. Harbor UI에서 또는 감독자 제어부에서 TLS 암호를 사용하여 Harbor CA를 추출합니다. Harbor 관리 UI(관리 > 구성 > 레지스트리 루트 인증서 > 다운로드)에서 Harbor ca.cert를 가져올 수 있습니다.
  2. kube-system 네임스페이스의 image-fetcher-ca-bundle ConfigMap에 Harbor CA를 추가합니다. vCenter Single Sign-on 관리 계정으로 로그인해야 하며 image-fetcher-ca-bundle을 편집할 수 있는 권한이 있어야 합니다.
    1. KUBE_EDITOR 환경 변수를 여기에 설명된 대로 구성합니다.
    2. 다음 명령을 사용하여 ConfigMap을 편집합니다.
      kubectl edit configmap image-fetcher-ca-bundle -n kube-system
    3. Harbor ca.cert 파일의 컨텐츠를 기존 감독자 인증서 아래의 ConfigMap에 추가합니다. 감독자 인증서를 변경하지 않아야 합니다.
      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. 파일에 대한 편집 내용을 저장합니다. 그 결과 kubectl 보고서:
      configmap/image-fetcher-ca-bundle edited

Harbor 및 Harbor와 다른 감독자에서 실행되는 Tanzu Kubernetes Grid 클러스터 간에 신뢰 설정

Harbor가 설치된 것과 다른 감독자에서 실행되는 Tanzu Kubernetes Grid 클러스터는 Harbor와의 네트워크 연결이 있어야 합니다. 이러한 Tanzu Kubernetes Grid 클러스터는 Harbor FQDN을 확인할 수 있어야 합니다.

Harbor와 Tanzu Kubernetes Grid 클러스터 간에 신뢰를 설정하려면 Harbor UI에서 또는 감독자 제어부에서 TLS 암호를 사용하여 Harbor CA를 추출한 다음 TKG 2 클러스터를 개인 컨테이너 레지스트리와 통합에 나열된 단계를 따르십시오.