Harbor 루트 CA를 신뢰하도록 Docker 구성

Harbor 인스턴스는 조직의 신뢰할 수 있는 루트 인증 기관 (CA)에서 발급한 전송 계층 보안 (TLS) 인증서를 사용합니다. 이렇게 하면 Docker 클라이언트와 Harbor 레지스트리 간의 연결이 암호화되어 무단 액세스로부터 이미지를 보호할 수 있습니다.

시작하기 전에

컨테이너 이미지를 관리하기 전에 다음 단계를 실행해야 합니다.

  1. https://docs.docker.com/engine/install/ubuntu/의 안내에 따라 Docker를 설치합니다(아직 설치되지 않은 경우). Docker는 Cloud Shell에 포함되어 있습니다.
  2. Docker에는 레지스트리와 상호작용하기 위한 액세스 권한이 필요합니다. Linux 또는 Windows에서 Docker 보안 그룹에 Docker 명령어를 실행하는 데 사용할 사용자를 추가합니다. Docker Desktop은 가상 머신에서 루트 사용자로 실행되므로 macOS에서는 이 단계가 필요하지 않습니다.

    1. Linux의 경우 사용자를 추가합니다.

        sudo usermod -a -G docker USER
      
    2. Windows:

        net localgroup docker-users DOMAIN\USER /add
      

      USER을 추가할 사용자 이름으로 바꿉니다.

Harbor 루트 CA를 신뢰하도록 Docker 구성

Docker 클라이언트를 사용하여 Harbor 인스턴스와 통신할 때는 조직의 루트 CA를 신뢰하도록 로컬 Docker 클라이언트를 구성해야 합니다.

루트 CA를 신뢰하도록 Docker 클라이언트를 구성하려면 조직 관리자에게 루트 CA의 .crt 파일을 요청하고 조직 루트 CA를 다음 위치에 복사합니다.

/etc/docker/certs.d/HARBOR_INSTANCE_URL/ca.crt

HARBOR_INSTANCE_URL을 Harbor 인스턴스의 URL로 바꿉니다. 예를 들면 harbor-1.org-1.zone1.google.gdc.test입니다.

이 명령어를 사용하면 Docker 클라이언트가 Harbor 인스턴스와 HTTPS 연결을 설정할 수 있습니다.

또는 gdcloud CLI를 사용하여 조직의 사용자 클러스터에 로그인하고 클러스터에 저장된 웹 CA를 복사합니다.

  export REGISTRY=HARBOR_INSTANCE_URL
  mkdir -p /etc/docker/certs.d/${REGISTRY} && \echo $(kubectl get secret org-web-ca -n istio-system -o
  jsonpath='{.data.ca\.crt}') | openssl base64 -A -d >
  /etc/docker/certs.d/${REGISTRY}/ca.crt

HARBOR_INSTANCE_URL을 Harbor 인스턴스의 URL로 바꿉니다. 예를 들면 harbor-1.org-1.zone1.google.gdc.test입니다.

구성이 실패하면 다음 오류 메시지가 표시됩니다.

Error response from daemon: Get "https://<HARBOR_INSTANCE_URL>": x509: certificate signed by unknown authority

단계를 반복하여 이 문제를 해결하고 필요한 경우 GDC 엔지니어링팀에 에스컬레이션합니다.