원격 저장소 개요

이 문서에서는 원격 저장소에 대해 간략하게 설명합니다. 원격 저장소를 만드는 방법에 대한 안내는 원격 저장소 만들기를 참조하세요.

Artifact Registry의 할당량 및 한도는 원격 저장소에 적용됩니다.

원격 저장소 작동 방법

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

존재하지 않거나 지정한 버전이 없는 업스트림 소스에서 아티팩트를 요청하면 요청이 실패합니다.

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

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

업스트림 인증

Artifact Registry 원격 저장소는 지원되는 형식에 대한 사전 설정 및 사용자 정의 업스트림 소스에 대한 기본 인증을 지원합니다. 원격 저장소 업스트림 소스에 인증하는 방법에 대한 자세한 내용은 원격 저장소 업스트림에 대한 인증 구성을 참조하세요.

사용 사례 및 이점

아티팩트에 더 빠르고 안정적으로 액세스
Artifact Registry에 공개 종속 항목의 캐시된 사본을 저장하면 다른 Google Cloud 서비스에서 이미지를 검색할 때 지연 시간이 줄어듭니다. 중단 또는 기타 문제로 인해 외부 공개 저장소가 오프라인 상태인 경우에도 캐시된 아티팩트는 계속 사용할 수 있습니다.
더 안전한 종속 항목 확인

원격 저장소를 가상 저장소와 함께 사용하여 공개 종속 항목과 관련된 위험을 완화합니다. 일부 도구는 클라이언트에 비공개 저장소와 공개 저장소가 혼합되어 구성된 경우 검색 순서를 제어하는 방법을 제공하지 않습니다. 이러한 유형의 구성은 잘못된 코드를 포함한 패키지의 새 버전을 공개 저장소에 업로드하여 클라이언트가 잘못된 버전을 선택하도록 속이는 종속 항목 혼동 공격에 취약합니다.

클라이언트가 직접 여러 저장소를 검색하도록 클라이언트를 구성하는 대신 가상 저장소가 원격 저장소보다 비공개 저장소를 우선으로 지정하도록 구성하면 됩니다.

Artifact Registry가 VPC 서비스 제어 서비스 경계에 있는 경우 Artifact Registry는 기본적으로 경계 외부의 업스트림 소스에 대한 액세스를 거부합니다. 특정 위치의 원격 저장소가 경계 외부의 구성된 외부 소스에 액세스하도록 허용하려면 VPC 서비스 제어 구성 안내를 참조하세요.

다른 종속 항목 관리 권장사항에 대해 알아보려면 종속 항목 관리를 참조하세요.

패키지 색인 및 메타데이터 업데이트

패키지 색인 및 메타데이터와 같이 변경 가능한 파일은 기본 기간을 초과하는 경우 업스트림 소스에서 업데이트됩니다. 특정 파일 형식의 기본값은 다음 표에 나와 있습니다.

형식 파일 형식 기본 업데이트 기간
Maven maven-metadata.xml 5분
archetype-catalog.xml 1시간
Npm 매니페스트 파일 5분
Python 색인 파일 1시간
Docker 태그 캐시 나열/가져오기 1시간
Apt/Yum(미리보기) 색인 파일 2분
패키지 파일 72시간

지원되는 형식

사전 설정 및 사용자 정의 원격 저장소에 사용할 수 있는 형식은 다음 섹션을 참조하세요.

업스트림 사전 설정

다음 저장소 형식 및 해당 사전 설정된 업스트림 소스에 대한 원격 저장소를 만들 수 있습니다.

형식 패키지 유형 업스트림 URL 업스트림 사전 설정 이름
Docker 공개 또는 비공개 https://registry-1.docker.io DOCKER-HUB
Maven 공개 또는 비공개 https://repo.maven.apache.org/maven2 MAVEN-CENTRAL
npm 공개 또는 비공개 https://registry.npmjs.org NPMJS
Python 공개 https://pypi.io PYPI
OS 패키지(미리보기) 공개 OS 패키지가 지원되는 업스트림 참조 OS 패키지가 지원되는 업스트림 참조

OS 패키지 사전 설정 업스트림

저장소 기반을 선택하고 URL의 나머지 부분을 특정 저장소로 맞춤설정하여 OS 패키지 원격 저장소를 만들 수 있습니다. 지원되는 저장소 기반은 다음과 같습니다.

Apt

저장소 URL 프리픽스 저장소 기본 이름
Debian http://deb.debian.org DEBIAN
Ubuntu LTS 또는 Pro http://archive.ubuntu.com Ubuntu

Yum

저장소 URL 프리픽스 저장소 기본 이름
CentOS http://mirror.centos.org CENTOS
http://debuginfo.centos.org CENTOS_DEBUG
https://vault.centos.org CENTOS_VAULT
https://mirror.stream.centos.org CENTOS_STREAM
Rocky http://dl.rockylinux.org ROCKY
Fedora Extra Packages for Enterprise Linux(EPEL) https://dl.fedoraproject.org/pub/epel EPEL

사용자 정의 업스트림

다음 형식으로 사용자 정의 업스트림 소스에 대한 원격 저장소를 만들 수 있습니다.

  • Docker
  • npm
  • Maven
  • Python

다음 테이블에는 일반적인 업스트림 URI 중 일부가 나열되어 있습니다.

형식 업스트림 URI 레지스트리 이름
Docker https://public.ecr.aws AWS ECR 공개 갤러리
Docker https://registry.k8s.io Kubernetes Container Registry
Docker https://MY_ARTIFACTORY_INSTANCE.jfrog.io Jfrog Artifactory
Docker https://MY_NEXUS_IP Nexus
npm https://npm.pkg.github.com GitHub Npm 레지스트리
npm https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/npm/MY_UPSTREAM_REPOSITORY Jfrog Artifactory
npm https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Maven https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/MY_UPSTREAM_REPOSITORY Jfrog Artifactory
Maven https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Python https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/pypi/MY_UPSTREAM_REPOSITORY Jfrog Artifactory
Python https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus

위치

  • MY_ARTIFACTORY_INSTANCE는 Jfrog Artifactory 업스트림 인스턴스의 이름입니다.
  • MY_NEXUS_IP는 Nexus 업스트림 인스턴스의 IP 주소 및 포트입니다.
  • MY_UPSTREAM_REPOSITORY는 업스트림 저장소의 이름으로, Nexus 및 Artifactory 예시에서 사용됩니다.

제한사항

Artifact Registry 할당량 및 제한사항 외에도 원격 저장소에는 다음과 같은 제한사항이 있습니다.

  • Maven 원격 저장소는 버전 정책에서 스냅샷 또는 출시를 설정하는 것을 허용하지 않습니다.

다음 단계