이 페이지에서는 Google Distributed Cloud (GDC) 오프라인 어플라이언스에서 시스템 아티팩트를 수정하는 방법을 설명합니다.
GDC에서 시스템 아티팩트를 수정하여 배포를 관리하고 개선합니다.
시작하기 전에
시스템 아티팩트를 수정하려면 진단 액세스 권한을 얻고 필요한 ID 및 액세스 역할에 대한 액세스 권한이 있어야 합니다.
- 진단 액세스는 고객이 문제를 겪을 때 안전하게 지원하는 데 필요한 권한 액세스 모드입니다. 이 액세스 권한을 부여받으려면 티켓을 만들어야 합니다.
- 시스템 아티팩트 레지스트리 디버거: 모든 Harbor 리소스에 대한 읽기 및 쓰기 액세스 권한이 있습니다. 보안 관리자에게 시스템 아티팩트 레지스트리 디버거 (sar-debugger) 클러스터 역할을 부여해 달라고 요청합니다.
- 시스템 Artifact Registry harbor-system 보안 비밀 디버거: harbor-system네임스페이스에 디버거 액세스 권한이 있습니다. 보안 관리자에게 시스템 아티팩트 레지스트리 harbor-system 보안 비밀 디버거 (sar-harbor-system-secret-debugger) 역할을 부여해 달라고 요청합니다.
Docker 이미지 업로드
시스템 아티팩트를 수정하려면 새 Docker 이미지를 업로드해야 합니다. 업로드 방법은 컨테이너 이미지를 푸시하는 다음 두 레지스트리 중 하나에 따라 달라집니다.
- 부트스트랩 머신의 Artifact Registry에 컨테이너 이미지를 업로드합니다.
- 조직 인프라 클러스터의 Artifact Registry에 컨테이너 이미지를 업로드합니다.
다음 섹션에서는 두 레지스트리 유형의 업로드 안내를 보여줍니다.
부트스트랩 머신에 컨테이너 이미지 업로드
부트스트랩 머신의 Artifact Registry에 컨테이너 이미지를 업로드하려면 다음 단계를 완료하세요.
- 호환성 문제가 해결된 수정된 Docker 이미지가 있는지 확인합니다. 
- 새 이미지를 GDC 환경의 부트스트랩 노드로 전송합니다. 
- 부트스트랩 노드에 로그인합니다. 
- 부트스트랩 시간에 부트스트랩 머신에서 Artifact Registry의 주소를 찾아 - REGISTRY_IP환경 변수로 설정합니다.- REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}') REGISTRY_IP=${REGISTRY#https://}
- Artifact Registry에 액세스하기 위한 사용자 인증 정보를 가져옵니다. 관리자 계정과 비밀번호를 가져옵니다. - ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin \ -o jsonpath="{.data.secret}" | base64 -d)
- Artifact Registry에 로그인합니다. - docker login $REGISTRY_IP -u admin -p $ADMIN_PASS- Artifact Registry에 성공적으로 로그인했는지 확인하기 위해 - Login Succeeded메시지가 출력됩니다.
- 새 이미지에 태그를 지정합니다. - docker image tag CONTAINER_IMAGE_URL \ $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG- 다음을 바꿉니다. - CONTAINER_IMAGE_URL: 로컬 컨테이너 이미지 URL입니다(예:- gcr.io/repository/image:tag).
- PROJECT_NAME: Artifact Registry 프로젝트 이름입니다.
- IMAGE_NAME: 컨테이너 이미지 이름입니다.
- TAG: 컨테이너 이미지 태그입니다.
 
- 새 이미지를 Artifact Registry에 푸시합니다. - docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
조직 인프라 클러스터에 컨테이너 이미지 업로드
조직 인프라 클러스터의 Artifact Registry에 컨테이너 이미지를 업로드하려면 다음 단계를 완료하세요.
- 호환성 문제가 해결된 수정된 Docker 이미지가 있는지 확인합니다. 
- 에어갭 환경에서 루트 액세스 권한이 있고 루트 - kubeconfig파일이 있는 노드로 새 이미지를 조직 인프라 클러스터에 전송합니다.
- 조직 인프라 클러스터 - kubeconfig경로를 환경 변수로 내보냅니다.- export ORG_INFRA_KUBECONFIG=KUBECONFIG_FILE_PATH- KUBECONFIG_FILE_PATH을- kubeconfig파일의 경로로 바꿉니다.
- 클러스터 내 Artifact Registry 주소를 찾아 - REGISTRY_IP환경 변수로 설정합니다.- REGISTRY=$(kubectl --kubeconfig $ORG_INFRA_KUBECONFIG get harborcluster / harbor -n harbor-system -o=jsonpath='{.spec.externalURL}') REGISTRY_IP=${REGISTRY#https://}
- REGISTRY_IP에- 10.200.0.36:10443과 같은 유효한 URL이 포함되어 있는지 확인합니다.- echo ${REGISTRY_IP}
- 인증 기관 (CA) 인증서가 있는지 확인합니다. - ls -al /etc/docker/certs.d/${REGISTRY_IP}/ca.crt- 인증서가 없는 경우 인증서를 만들고 구성합니다. - mkdir -p /etc/docker/certs.d/${REGISTRY_IP}/ chmod 755 /etc/docker/certs.d/${REGISTRY_IP}/ echo $(kubectl get secret harbor-cert-secret -n istio-system -o jsonpath='{.data.ca\.crt}' --kubeconfig $ORG_INFRA_KUBECONFIG) | openssl base64 -A -d > /etc/docker/certs.d/${REGISTRY_IP}/ca.crt chmod 755 /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
- Artifact Registry에 액세스하기 위한 사용자 인증 정보를 가져옵니다. 다음 명령어를 사용하여 관리자 계정과 비밀번호를 가져옵니다. - ADMIN_PASS=$(kubectl --kubeconfig $ORG_INFRA_KUBECONFIG \ -n harbor-system get secret harbor-admin \ -o jsonpath="{.data.secret}" | base64 -d)
- Artifact Registry에 로그인합니다. - docker login $REGISTRY_IP -u admin -p $ADMIN_PASS- Artifact Registry에 성공적으로 로그인했는지 확인하기 위해 - Login Succeeded메시지가 출력됩니다.
- 새 이미지에 태그를 지정합니다. - docker image tag CONTAINER_IMAGE_URL \ $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG- 다음을 바꿉니다. - CONTAINER_IMAGE_URL: 로컬 컨테이너 이미지 URL입니다(예:- gcr.io/repository/image:tag).
- PROJECT_NAME: Artifact Registry 프로젝트 이름입니다.
- IMAGE_NAME: 컨테이너 이미지 이름입니다.
- TAG: 컨테이너 이미지 태그입니다.
 
- 새 이미지를 Artifact Registry에 푸시합니다. - docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
시스템 아티팩트 수정
gdcloud artifacts 명령어를 사용하여 GDC에서 시스템 아티팩트를 수정합니다. 소프트웨어 패키지 교체, 구성 조정, 패치 적용과 같은 작업을 실행하여 배포를 업데이트, 맞춤설정, 보호합니다.
다음 작업을 실행합니다.
- apt패키지를 관리합니다.
- OCI 패키지에서 이미지를 빌드하고 추출합니다.
- 사용 가능한 루트 OCI 이미지 버전을 나열합니다.
- 기존 패키지를 패치합니다.
- 레지스트리에서 OCI 패키지를 가져오거나 레지스트리로 OCI 패키지를 푸시합니다.
- OCI 번들의 구조를 표시합니다.
- OCI 번들의 압축을 풉니다.
자세한 내용은 gdcloud artifacts를 참조하세요.