원격 저장소 만들기

이 페이지에서는 Artifact Registry 원격 저장소를 만드는 방법을 설명합니다.

원격 저장소는 Docker Hub, Maven Central, Python Package Index(PyPI), Debian 또는 CentOS와 같은 사전 설정된 외부 소스와 지원되는 형식의 사용자 정의 소스 아티팩트를 저장합니다. 원격 저장소는 외부 소스의 프록시 역할을 수행하므로 외부 종속 항목을 보다 세밀하게 제어할 수 있습니다. 패키지 버전을 처음 요청하면 Artifact Registry가 원격 저장소에 패키지를 다운로드하고 캐시합니다. 다음에 동일한 패키지 버전을 요청하면 Artifact Registry에서 캐시된 사본을 제공합니다.

다른 저장소 모드는 다음과 같습니다.

  • 표준: 기본 저장소 모드입니다. 비공개 패키지와 같은 아티팩트를 표준 저장소에 직접 업로드하거나 게시합니다. 개별 표준 저장소에서 직접 다운로드할 수도 있지만 가상 저장소를 사용해서 저장소 그룹에 액세스하면 도구 구성이 간소화됩니다.
  • 가상: 원격 및 표준 저장소를 포함하여 여러 업스트림 저장소에 대한 단일 액세스 포인트 역할을 하는 저장소입니다.

원격 저장소 작동 방식에 대한 자세한 내용은 원격 저장소 개요를 참조하세요.

시작하기 전에

  1. Artifact Registry API 사용 설정 및 Google Cloud CLI 설치를 포함하여 Artifact Registry를 사용 설정합니다.
  2. (선택사항) gcloud CLI 명령어의 기본값을 구성합니다.
  3. 저장소 콘텐츠를 암호화하는 데 고객 관리 암호화 키(CMEK)가 필요한 경우 저장소의 Cloud KMS에 키를 만들고 사용 설정합니다.
  4. 업스트림 저장소에 인증하려면 Secret Manager API를 사용 설정합니다.

    gcloud services enable secretmanager.googleapis.com \
        --project=PROJECT_ID
    
  5. Artifact Registry가 VPC 서비스 제어 서비스 경계에 있는 경우 Access Context Manager API가 아직 사용 설정되지 않은 경우 사용 설정합니다.

    gcloud services enable accesscontextmanager.googleapis.com \
        --project=PROJECT_ID
    

필요한 역할

저장소를 관리하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 원격 저장소를 만들고 개별 저장소에 대한 액세스 권한 부여: 프로젝트의 Artifact Registry 관리자(roles/artifactregistry.admin)
  • 보안 비밀 버전에 업스트림 저장소 사용자 인증 정보 저장: 프로젝트의 Secret Manager 관리자(roles/secretmanager.admin)
  • VPC 서비스 제어 서비스 경계 외부의 업스트림 소스에 대한 액세스 권한 부여: 액세스 정책이 적용되는 프로젝트, 폴더 또는 조직의 Access Context Manager 편집자(roles/accesscontextmanager.policyEditor)

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

원격 저장소 만들기

원격 저장소를 만들 때는 다음 설정을 구성해야 하며 이 설정은 저장소가 생성된 후에는 변경할 수 없습니다.

  • 아티팩트 형식
  • 원격으로 설정된 저장소 모드
  • 원격 저장소 사전 설정 또는 사용자 정의 업스트림 소스
  • 저장소 위치
  • Google 관리 키 또는 고객 관리 암호화 키로 암호화. Artifact Registry는 기본적으로 Google 관리 암호화 키를 사용합니다.

Artifact Registry는 CMEK가 리소스를 암호화하도록 요구하거나 CMEK 보호에 사용할 수 있는 Cloud KMS 키를 제한하는 조직 정책 제약조건을 적용합니다.

Google Cloud 콘솔을 사용하여 원격 저장소 만들기

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 만들기를 클릭합니다.

  3. 저장소 이름을 지정합니다. 프로젝트의 저장소 위치마다 저장소 이름이 고유해야 합니다.

  4. 형식 섹션에서 저장소 형식을 선택합니다.

  5. 저장소 모드 섹션에서 원격을 선택합니다.

  6. 원격 저장소 소스 섹션에서 업스트림에 대해 사용자 정의 URL을 사용하려면 사전 설정된 업스트림 또는 커스텀을 선택합니다.

  7. 선택사항입니다. 커스텀 업스트림을 사용하는 경우 커스텀 저장소 필드에 커스텀 저장소 URL을 입력합니다. 저장소를 만든 후에는 URL을 변경할 수 없습니다.

  8. 원격 저장소 인증 모드에서 다음 중 하나를 선택합니다.

    • 인증됨: 업스트림 저장소에 인증할 사용자 이름과 보안 비밀을 입력합니다.
    • 인증되지 않음: 업스트림 저장소에 대한 인증을 건너뜁니다.
  9. 선택사항입니다. 인증됨을 선택한 경우 다음을 입력합니다.

    • 사용자 이름 필드에 업스트림 저장소의 사용자 이름을 입력합니다.
    • 보안 비밀 필드에 업스트림 저장소의 비밀번호를 저장한 보안 비밀 버전을 입력합니다.

    저장소를 만든 후 이러한 값을 수정할 수 있습니다. 원격 저장소 업스트림 인증에 대한 자세한 내용은 원격 저장소 업스트림에 대한 인증 구성을 참조하세요.

  10. 위치 유형 섹션에서 저장소의 위치를 선택합니다.

    1. 위치 유형(리전 또는 멀티 리전)을 선택합니다. 선택 사항이 반영되도록 위치 목록이 변경됩니다.

    2. 리전 또는 멀티 리전 목록에서 위치를 선택합니다.

    위치 유형 및 지원되는 위치에 대한 자세한 내용은 저장소 위치를 참조하세요.

  11. 저장소에 대한 설명을 추가합니다. 설명은 저장소의 용도와 저장소에 포함된 아티팩트의 종류를 식별하는 데 도움이 됩니다.

    저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.

  12. 라벨을 사용하여 저장소를 구성하려면 라벨 추가를 클릭하고 라벨의 키-값 쌍을 입력합니다. 저장소를 만든 후 라벨을 추가, 수정 또는 삭제할 수 있습니다.

  13. 암호화 섹션에서 저장소의 암호화 메커니즘을 선택합니다.

    • Google 관리 키 - Google 관리 암호화 키로 저장소 콘텐츠를 암호화합니다.
    • 고객 관리 키 - Cloud Key Management Service를 통해 제어하는 키로 저장소 콘텐츠를 암호화합니다. 키 설정 안내는 저장소의 CMEK 설정을 참조하세요.
  14. 만들기를 클릭합니다.

Artifact Registry는 저장소를 만들고 이를 저장소 목록에 추가합니다.

저장소를 만든 후:

gcloud CLI를 사용하여 원격 저장소 만들기

저장소를 만들려면 적절한 저장소 형식으로 다음 명령어를 실행합니다.

Docker

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=docker \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-docker-repo=UPSTREAM

다음을 바꿉니다.

  • REMOTE-REPOSITORY-NAME을 저장소 이름으로 바꿉니다. 프로젝트의 저장소 위치마다 저장소 이름이 고유해야 합니다.
  • PROJECT_ID를 프로젝트 ID로 바꿉니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다. 기본값을 설정하는 경우 이 플래그를 생략할 수 있습니다. 지원되는 저장소 위치 목록을 보려면 gcloud artifacts locations list 명령어를 실행합니다.

  • DESCRIPTION을 저장소에 대한 설명(선택사항)으로 바꿉니다. 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.

  • REMOTE-REPOSITORY-DESCRIPTION을 이 원격 저장소의 외부 저장소 구성에 대한 설명으로 바꿉니다.

  • (원하는 경우) USERNAME을 인증 사용 시 업스트림 저장소에 인증하기 위한 사용자 이름으로 바꿉니다.

  • (원하는 경우) SECRET_VERSION을 인증 사용 시 업스트림 저장소 비밀번호가 포함된 보안 비밀 버전으로 바꿉니다.

  • UPSTREAM을 업스트림 저장소의 사전 설정된 이름 또는 사용자 정의 URL로 바꿉니다. 사용 가능한 사전 설정 업스트림 및 지원되는 사용자 정의 업스트림에 대한 자세한 내용은 지원되는 형식을 참조하세요.

예를 들어 다음 명령어는 Google Cloud 프로젝트 my-projectus-east1 리전에 my-repo라는 원격 저장소를 만들고 사용자 이름 my-usernameprojects/my-project/secrets/my-secret/versions/1 보안 비밀 버전을 사용하여 업스트림 저장소에 인증할 수 있습니다.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=docker \
    --location=us-east1 \
    --description="Remote Docker repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Docker Hub" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-docker-repo=DOCKER-HUB

Docker Hub 업스트림 저장소에 인증하는 방법에 대한 자세한 내용은 Docker Hub에 원격 저장소 인증 구성을 참조하세요.

Maven

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=maven \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-mvn-repo=UPSTREAM

다음을 바꿉니다.

  • REMOTE-REPOSITORY-NAME을 저장소 이름으로 바꿉니다. 프로젝트의 저장소 위치마다 저장소 이름이 고유해야 합니다.
  • PROJECT_ID를 프로젝트 ID로 바꿉니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다. 기본값을 설정하는 경우 이 플래그를 생략할 수 있습니다. 지원되는 저장소 위치 목록을 보려면 gcloud artifacts locations list 명령어를 실행합니다.

  • DESCRIPTION을 저장소에 대한 설명(선택사항)으로 바꿉니다. 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.

  • REMOTE-REPOSITORY-DESCRIPTION을 이 원격 저장소의 외부 저장소 구성에 대한 설명으로 바꿉니다.

  • (원하는 경우) USERNAME을 인증 사용 시 업스트림 저장소에 인증하기 위한 사용자 이름으로 바꿉니다.

  • (원하는 경우) SECRET_VERSION을 인증 사용 시 업스트림 저장소 비밀번호가 포함된 보안 비밀 버전으로 바꿉니다.

  • UPSTREAM을 업스트림 저장소의 사전 설정된 이름 또는 사용자 정의 URL로 바꿉니다. 사용 가능한 사전 설정 업스트림 및 지원되는 사용자 정의 업스트림에 대한 자세한 내용은 지원되는 형식을 참조하세요.

예를 들어 다음 명령어는 Google Cloud 프로젝트 my-projectus-east1 리전에 my-repo라는 원격 저장소를 만들고 사용자 이름 my-usernameprojects/my-project/secrets/my-secret/versions/1 보안 비밀 버전을 사용하여 업스트림 저장소에 인증할 수 있습니다.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=maven \
    --location=us-east1 \
    --description="Remote Maven repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Maven Central" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-mvn-repo=MAVEN-CENTRAL

npm

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=npm \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-npm-repo=UPSTREAM

다음을 바꿉니다.

  • REMOTE-REPOSITORY-NAME을 저장소 이름으로 바꿉니다. 프로젝트의 저장소 위치마다 저장소 이름이 고유해야 합니다.
  • PROJECT_ID를 프로젝트 ID로 바꿉니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다. 기본값을 설정하는 경우 이 플래그를 생략할 수 있습니다. 지원되는 저장소 위치 목록을 보려면 gcloud artifacts locations list 명령어를 실행합니다.

  • DESCRIPTION을 저장소에 대한 설명(선택사항)으로 바꿉니다. 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.

  • REMOTE-REPOSITORY-DESCRIPTION을 이 원격 저장소의 외부 저장소 구성에 대한 설명으로 바꿉니다.

  • (원하는 경우) USERNAME을 인증 사용 시 업스트림 저장소에 인증하기 위한 사용자 이름으로 바꿉니다.

  • (원하는 경우) SECRET_VERSION을 인증 사용 시 업스트림 저장소 비밀번호가 포함된 보안 비밀 버전으로 바꿉니다.

  • UPSTREAM을 업스트림 저장소의 사전 설정된 이름 또는 사용자 정의 URL로 바꿉니다. 사용 가능한 사전 설정 업스트림 및 지원되는 사용자 정의 업스트림에 대한 자세한 내용은 지원되는 형식을 참조하세요.

예를 들어 다음 명령어는 Google Cloud 프로젝트 my-projectus-east1 리전에 my-repo라는 원격 저장소를 만들고 사용자 이름 my-usernameprojects/my-project/secrets/my-secret/versions/1 보안 비밀 버전을 사용하여 업스트림 저장소에 인증할 수 있습니다.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=npm \
    --location=us-east1 \
    --description="Remote npm repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Public npm registry" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-npm-repo=NPMJS

Python

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=python \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-python-repo=UPSTREAM

다음을 바꿉니다.

  • REMOTE-REPOSITORY-NAME을 저장소 이름으로 바꿉니다. 프로젝트의 저장소 위치마다 저장소 이름이 고유해야 합니다.
  • PROJECT_ID를 프로젝트 ID로 바꿉니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다. 기본값을 설정하는 경우 이 플래그를 생략할 수 있습니다. 지원되는 저장소 위치 목록을 보려면 gcloud artifacts locations list 명령어를 실행합니다.

  • DESCRIPTION을 저장소에 대한 설명(선택사항)으로 바꿉니다. 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.

  • REMOTE-REPOSITORY-DESCRIPTION을 이 원격 저장소의 외부 저장소 구성에 대한 설명으로 바꿉니다.

  • (원하는 경우) USERNAME을 인증 사용 시 업스트림 저장소에 인증하기 위한 사용자 이름으로 바꿉니다.

  • (원하는 경우) SECRET_VERSION을 인증 사용 시 업스트림 저장소 비밀번호가 포함된 보안 비밀 버전으로 바꿉니다.

  • UPSTREAM을 업스트림 저장소의 사전 설정된 이름 또는 사용자 정의 URL로 바꿉니다. 사용 가능한 사전 설정 업스트림 및 지원되는 사용자 정의 업스트림에 대한 자세한 내용은 지원되는 형식을 참조하세요.

예를 들어 다음 명령어는 Google Cloud 프로젝트 my-projectus-east1 리전에 my-repo라는 원격 저장소를 만들고 사용자 이름 my-usernameprojects/my-project/secrets/my-secret/versions/1 보안 비밀 버전을 사용하여 업스트림 저장소에 인증할 수 있습니다.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=python \
    --location=us-east1 \
    --description="Remote Python repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="PyPI" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-python-repo=PYPI

Apt(미리보기)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=apt \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-apt-repo=APT_REPOSITORY_BASE \
    --remote-apt-repo-path="APT_REPOSITORY_PATH"

다음을 바꿉니다.

  • REMOTE_REPOSITORY_NAME을 저장소 이름으로 바꿉니다. 프로젝트의 저장소 위치마다 저장소 이름이 고유해야 합니다.
  • PROJECT_ID를 프로젝트 ID로 바꿉니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다. 기본값을 설정하는 경우 이 플래그를 생략할 수 있습니다. 지원되는 저장소 위치 목록을 보려면 gcloud artifacts locations list 명령어를 실행합니다.
  • DESCRIPTION을 저장소에 대한 설명(선택사항)으로 바꿉니다. 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.
  • REMOTE_REPOSITORY_DESCRIPTION을 이 원격 저장소의 외부 저장소 구성에 대한 설명(선택사항)으로 바꿉니다.
  • APT_REPOSITORY_BASE를 Apt 원격 저장소의 OS 패키지 지원 업스트림에 나열된 지원되는 저장소 기본 이름 중 하나로 바꿉니다.
  • APT_REPOSITORY_PATH를 저장소 기본 이후에 원격 저장소에 캐시할 업스트림 저장소의 나머지 URL로 바꿉니다.

예를 들어 다음 명령어는 Google Cloud 프로젝트 my-projectus-east1 리전에 있는 Debian 버스터 저장소를 캐시하기 위해 my-repo라는 원격 저장소를 만듭니다. 업스트림 저장소의 전체 URL은 http://deb.debian.org/debian/dists/buster입니다.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=apt \
    --location=us-east1 \
    --description="Apt remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Debian buster distribution" \
    --remote-apt-repo=DEBIAN \
    --remote-apt-repo-path="debian/dists/buster"

Yum(미리보기)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=yum \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-yum-repo=YUM_REPOSITORY_BASE \
    --remote-yum-repo-path="YUM_REPOSITORY_PATH"

다음을 바꿉니다.

  • REMOTE_REPOSITORY_NAME을 저장소 이름으로 바꿉니다. 프로젝트의 저장소 위치마다 저장소 이름이 고유해야 합니다.
  • PROJECT_ID를 프로젝트 ID로 바꿉니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
  • LOCATION을 저장소의 리전 또는 멀티 리전 위치로 바꿉니다. 기본값을 설정하는 경우 이 플래그를 생략할 수 있습니다. 지원되는 저장소 위치 목록을 보려면 gcloud artifacts locations list 명령어를 실행합니다.
  • DESCRIPTION을 저장소에 대한 설명(선택사항)으로 바꿉니다. 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.
  • REMOTE_REPOSITORY_DESCRIPTION을 이 원격 저장소의 외부 저장소 구성에 대한 설명(선택사항)으로 바꿉니다.
  • YUM_REPOSITORY_BASE를 Yum 원격 저장소의 OS 패키지 지원 업스트림에 나열된 지원되는 저장소 기본 이름 중 하나로 바꿉니다.
  • YUM_REPOSITORY_PATH를 저장소 기본 이후에 원격 저장소에 캐시할 업스트림 저장소의 나머지 URL로 바꿉니다.

예를 들어 다음 명령어는 업스트림 저장소 centos/8-stream/BaseOs/x86_64/os의 Google Cloud 프로젝트 my-project에 있는 us-east1 리전에 my-repo라는 Yum 패키지의 원격 저장소를 만듭니다.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=yum \
    --location=us-east1 \
    --description="Yum remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="CentOS 8 x86" \
    --remote-yum-repo=CENTOS \
    --remote-yum-repo-path="centos/8-stream/BaseOs/x86_64/os"

Artifact Registry가 저장소를 만듭니다. 다음 명령어를 실행하여 저장소에 대한 설명을 봅니다.

gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
    --location=LOCATION

저장소를 만든 후 다음을 수행합니다.

Terraform을 사용하여 원격 저장소 만들기

google_artifact_registry_repository 리소스를 사용하여 저장소를 만듭니다. terraform-provider-google 버전 5.0.0 이상이 필요합니다.

Google Cloud에서 Terraform을 처음 사용하는 경우 HashiCorp 웹사이트의 시작하기 - Google Cloud 페이지를 참조하세요.

다음 예시에서는 Terraform 리소스 이름이 my-repo인 제공업체와 원격 저장소를 정의합니다.

Docker

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "docker"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    docker_repository {
      public_repository = "DOCKER_HUB"
    }
  }
}

각 항목의 의미는 다음과 같습니다.

  • PROJECT-ID: Google Cloud 프로젝트 ID
  • LOCATION: 저장소 위치
  • REPOSITORY_ID: 저장소 ID
  • DESCRIPTION: 저장소 설명(선택사항). 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.
  • KEY: 암호화에 고객 관리 암호화 키(CMEK)를 사용하는 경우 Cloud Key Management Service 키의 이름. 기본 설정인 Google 관리 암호화 키를 사용하려면 이 인수를 생략합니다.
  • CONFIG_DESCRIPTION: 원격 소스에 대한 설명(선택사항)

Maven

버전 정책을 지정하지 않으면 Artifact Registry는 기본적으로 패키지의 스냅샷 및 출시 버전을 모두 저장하는 Maven 저장소를 만듭니다.

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "maven"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    maven_repository {
      public_repository = "MAVEN_CENTRAL"
    }
  }
}

위치

  • PROJECT-ID: Google Cloud 프로젝트 ID
  • LOCATION: 저장소 위치
  • REPOSITORY_ID: 저장소 ID
  • DESCRIPTION: 저장소 설명(선택사항). 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.
  • KEY: 암호화에 고객 관리 암호화 키(CMEK)를 사용하는 경우 Cloud Key Management Service 키의 이름. 기본 설정인 Google 관리 암호화 키를 사용하려면 이 인수를 생략합니다.
  • CONFIG_DESCRIPTION: 원격 소스에 대한 설명(선택사항)

스냅샷과 출시 버전을 서로 다른 저장소에 저장하려면 maven_config 블록을 사용하여 저장소에 대해 버전 정책을 지정합니다. 이 블록은 다음 설정을 지원합니다.

  • version_policy는 다음 값 중 하나로 버전 정책을 설정합니다.
    • VERSION_POLICY_UNSPECIFIED: 스냅샷 및 출시 패키지를 저장합니다. 이는 기본 설정입니다.
    • 출시: 출시 패키지만 저장합니다.
    • 스냅샷: 스냅샷 패키지만 저장합니다.
  • allow_snapshot_overwritesSNAPSHOT 버전 정책으로 저장소를 구성하여 저장소의 기존 버전을 덮어쓰는 고유하지 않은 스냅샷을 허용합니다.

다음 예시에서는 출시 버전 정책으로 Maven 저장소를 정의합니다.

provider "google" {
project = "my-project"
}

resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta

location = "LOCATION"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
mode = "REMOTE_REPOSITORY"
maven_config {
  version_policy = "RELEASE"
}
}

npm

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "npm"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    npm_repository {
      public_repository = "NPMJS"
    }
  }
}

각 항목의 의미는 다음과 같습니다.

  • PROJECT-ID: Google Cloud 프로젝트 ID
  • LOCATION: 저장소 위치
  • REPOSITORY_ID: 저장소 ID
  • DESCRIPTION: 저장소 설명(선택사항). 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.
  • KEY: 암호화에 고객 관리 암호화 키(CMEK)를 사용하는 경우 Cloud Key Management Service 키의 이름. 기본 설정인 Google 관리 암호화 키를 사용하려면 이 인수를 생략합니다.
  • CONFIG_DESCRIPTION: 원격 소스에 대한 설명(선택사항)

Python

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "python"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    python_repository {
      public_repository = "PYPI"
    }
  }
}

각 항목의 의미는 다음과 같습니다.

  • PROJECT-ID: Google Cloud 프로젝트 ID
  • LOCATION: 저장소 위치
  • REPOSITORY_ID: 저장소 ID
  • DESCRIPTION: 저장소 설명(선택사항). 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.
  • KEY: 암호화에 고객 관리 암호화 키(CMEK)를 사용하는 경우 Cloud Key Management Service 키의 이름. 기본 설정인 Google 관리 암호화 키를 사용하려면 이 인수를 생략합니다.
  • CONFIG_DESCRIPTION: 원격 소스에 대한 설명(선택사항)

Apt(미리보기)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "APT"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    apt_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

위치

  • PROJECT-ID: Google Cloud 프로젝트 ID
  • LOCATION: 저장소 위치
  • REPOSITORY_ID: 저장소 ID
  • DESCRIPTION: 저장소 설명(선택사항). 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.
  • CONFIG_DESCRIPTION: 원격 소스에 대한 설명(선택사항)
  • REPOSITORY_BASE는 Apt를 위한 사전 설정된 공개 저장소 베이스입니다. 가능한 값은 DEBIAN, UBUNTU입니다.
  • REPOSITORY_PATH는 기본 저장소의 특정 저장소입니다. 예를 들면 debian/dists/buster입니다.

Yum(미리보기)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "YUM"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    yum_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

위치

  • PROJECT-ID: Google Cloud 프로젝트 ID
  • LOCATION: 저장소 위치
  • REPOSITORY_ID: 저장소 ID
  • DESCRIPTION: 저장소 설명(선택사항). 저장소 설명은 암호화되지 않으므로 민감한 정보는 포함하지 마세요.
  • CONFIG_DESCRIPTION: 원격 소스에 대한 설명(선택사항)
  • REPOSITORY_BASE는 Yum을 위한 사전 설정된 공개 저장소 기반입니다. 가능한 값은 CENTOS, CENTOS_DEBUG, CENTOS_VAULT, CENTOS_STREAM, ROCKY, EPEL입니다.
  • REPOSITORY_PATH는 기본 저장소의 특정 저장소입니다. 예를 들면 "centos/8-stream/BaseOS/x86_64/os입니다.

Artifact Registry가 저장소를 만듭니다. 다음 명령어를 실행하여 저장소에 대한 설명을 봅니다.

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

저장소를 만든 후:

저장소 설명 수정

Google Cloud 콘솔 또는 gcloud CLI에서 저장소 설명을 변경할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 저장소를 선택하고 저장소 수정을 클릭합니다.

  3. 저장소 설명을 수정한 후 저장을 클릭합니다.

gcloud

저장소 설명을 업데이트하려면 다음 명령어를 실행합니다.

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT] \
    --location=LOCATION \
    --description="DESCRIPTION"

다음을 바꿉니다.

  • REPOSITORY: 저장소의 이름입니다. 기본 저장소를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
  • PROJECT: Google Cloud 프로젝트 ID 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
  • LOCATION: 리전 또는 멀티 리전 위치입니다. 특정 위치의 저장소를 보려면 이 플래그를 사용합니다. 기본 위치를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
  • DESCRIPTION: 저장소에 대한 설명입니다.

서비스 경계의 업스트림 소스에 액세스

VPC 서비스 제어 서비스 경계의 서비스는 경계 외부의 리소스에 대한 액세스가 제한됩니다.

지정된 Google Cloud 프로젝트 및 위치 내에서 업스트림 소스에 대한 액세스를 허용하거나 거부할 수 있습니다.

기본적으로 Artifact Registry는 명시적으로 액세스 권한을 부여하지 않으면 업스트림 소스에 대한 액세스를 거부합니다.

Artifact Registry의 경우 필수 역할은 Artifact Registry 관리자(roles/artifactregistry.admin)입니다.

업스트림 소스 설정 보기

특정 프로젝트 및 위치 조합에 대한 구성을 보려면 다음 명령어를 실행합니다.

gcloud artifacts vpcsc-config describe \
    --project=PROJECT_ID \
    --location=LOCATION

예를 들어 프로젝트 my-projectus-east1에 있는 원격 저장소에 대한 설정을 보려면 다음 명령어를 사용합니다.

gcloud artifacts vpcsc-config describe \
    --project=my-project \
    --location=us-east1

업스트림 소스에 대한 액세스 허용

지정된 위치의 업스트림 소스에 대한 액세스를 허용하려면 다음 명령어를 실행합니다.

gcloud artifacts vpcsc-config allow \
    --project=PROJECT_ID \
    --location=LOCATION

예를 들어 다음 명령어를 사용하여 my-project 프로젝트의 us-east1에 있는 모든 원격 저장소가 경계 외부의 업스트림 소스에 액세스하도록 허용합니다.

gcloud artifacts vpcsc-config allow \
    --project=my-project \
    --location=us-east1

업스트림 소스에 대한 액세스 거부

업스트림 소스에 대한 액세스를 거부하는 경우 원격 저장소에 있는 기존의 캐시된 아티팩트는 계속 사용할 수 있습니다.

지정된 위치에 있는 업스트림 소스에 대한 액세스를 거부하려면 다음 명령어를 실행합니다.

gcloud artifacts vpcsc-config deny \
    --project=PROJECT_ID \
    --location=LOCATION

예를 들어 다음 명령어를 사용하여 my-project 프로젝트의 us-west1에서 모든 원격 저장소의 경계 외부에 있는 업스트림 소스에 대한 액세스를 차단합니다.

gcloud artifacts vpcsc-config deny \
    --project=my-project \
    --location=us-west1

다음 단계