Debian 패키지를 설치하도록 VM 구성

이 페이지에서는 Artifact Registry Apt 저장소에서 Debian 패키지를 설치하도록 VM을 구성하는 방법을 설명합니다.

시작하기 전에

대상 Apt 저장소가 없으면 새 표준 또는 원격 저장소를 만듭니다. 비공개 저장소 또는 인증이 필요 없는 공개 저장소를 만들 수 있습니다.

Apt 저장소에 액세스하도록 VM 준비

비공개 저장소

  1. 액세스 권한을 부여하는 데 사용할 서비스 계정을 선택합니다.

    • Compute Engine VM의 경우 기본 서비스 계정일 수 있습니다. Artifact Registry는 서비스 계정을 사용하여 모든 VM의 Compute Engine VM 서비스 계정 사용자 인증 정보를 자동으로 가져옵니다.
    • 기타 VM의 경우 VM 대신 사용할 서비스 계정을 만들거나 선택합니다. VM을 구성하려면 서비스 계정 키 파일의 위치가 필요합니다. 서비스 계정 페이지에서 기존 계정의 키를 보고 만들 수 있습니다.
  2. 서비스 계정에 저장소 액세스 권한을 부여합니다.

  3. VM이 저장소에 액세스할 수 있도록 준비합니다.

    Compute Engine VM

    Debian VM

    1. VM에 cloud-platform API 액세스 범위를 할당합니다. 액세스 범위 설정에 대한 자세한 내용은 인스턴스의 서비스 계정 및 액세스 범위 변경을 참조하세요.

    2. 다음 명령어를 사용하여 Apt를 업데이트합니다.

      sudo apt update
      
    3. VM에 apt-transport-artifact-registry 패키지를 설치합니다.

      sudo apt install apt-transport-artifact-registry
      

    Ubuntu VM

    1. 다음 명령어를 사용하여 Apt 저장소 서명 키를 설치합니다.

      curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      

      LOCATION을 저장소 위치로 바꿉니다.

    2. VM에 cloud-platform API 액세스 범위를 할당합니다. 액세스 범위 설정에 대한 자세한 내용은 인스턴스의 서비스 계정 및 액세스 범위 변경을 참조하세요.

    3. 다음 명령어를 사용하여 Artifact Registry 패키지에 액세스하도록 VM을 구성합니다.

      echo 'deb http://packages.cloud.google.com/apt apt-transport-artifact-registry-stable main' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
      
    4. 다음 명령어를 사용하여 Apt를 업데이트합니다.

      sudo apt update
      
    5. VM에 apt-transport-artifact-registry 패키지를 설치합니다.

      sudo apt install apt-transport-artifact-registry
      

    기타 VM

    1. 다음 명령어를 사용하여 Apt 저장소 서명 키를 설치합니다.

      curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      

      LOCATION을 저장소 위치로 바꿉니다.

    2. 다음 명령어를 사용하여 Artifact Registry 패키지에 액세스하도록 VM을 구성합니다.

      echo 'deb http://packages.cloud.google.com/apt apt-transport-artifact-registry-stable main' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
      
    3. 다음 명령어를 사용하여 Apt를 업데이트합니다.

      sudo apt update
      
    4. VM에 apt-transport-artifact-registry 패키지를 설치합니다.

      sudo apt install apt-transport-artifact-registry
      
    5. /etc/apt/apt.conf.d/90artifact-registry 파일에서 #Service-Account-JSON "/path/to/creds.json"; 줄을 찾은 다음 이 줄의 주석 처리를 삭제하고 서비스 계정 키의 경로를 추가합니다.

      구성 파일 항목:

      Service-Account-JSON  "PATH_TO_SERVICE_ACCOUNT_KEY";
      

      여기서 PATH_TO_SERVICE_ACCOUNT_KEY를 서비스 계정 키 JSON 파일 경로로 바꾸세요.

공개 저장소

  1. 저장소에 대한 공개 액세스를 구성합니다.

  2. Google Cloud 외부에서 VM을 구성하는 경우 저장소에 액세스하도록 머신을 준비합니다. Compute Engine VM을 구성하는 경우 다음 단계로 진행합니다.

    다음 명령어를 사용하여 공개 서명 확인 키를 설치합니다.

    curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
    

    LOCATION을 저장소 위치로 바꿉니다.

  3. 다음 명령어를 사용하여 Apt를 업데이트합니다.

    sudo apt update
    

표준 Apt 저장소에 액세스하도록 VM 구성

Apt 저장소에 액세스하도록 VM을 구성합니다.

  1. gcloud beta artifacts print-settings apt 명령어를 실행하여 VM 구성 명령어를 생성합니다.

    gcloud beta artifacts print-settings apt \
        --repository=REPOSITORY \
        --location=LOCATION
    

    다음을 바꿉니다.

    • LOCATION은 리전 또는 멀티 리전 위치입니다.
    • REPOSITORY는 Artifact Registry 저장소의 이름입니다.

    출력은 다음과 비슷합니다.

    # To configure your package manager with this repository:
    
    # Update Apt:
    sudo apt update
    
    # Install the Apt credential helper:
    sudo apt install apt-transport-artifact-registry
    
    # Configure your VM to access Artifact Registry packages using the following
    # command:
    
    echo "deb ar+https://LOCATION-apt.pkg.dev/projects/PROJECT REPOSITORY main" | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
    
    # Update Apt:
    sudo apt update
    
  2. print-settings 명령어 출력에서 echo 명령어를 사용하여 저장소에서 패키지를 가져오도록 Apt를 구성합니다.

    예를 들어 my-project 프로젝트와 us-central1 위치에 있는 공개 저장소 my-repo의 패키지를 설치하려면 다음 명령어를 사용합니다.

    echo 'deb ar+https://us-central1-apt.pkg.dev/projects/my-project my-repo main'
    
  3. 다음 명령어로 저장소 소스를 업데이트합니다.

    sudo apt update
    

이제 Apt를 저장소에 연결할 수 있습니다.

추가 Apt 저장소를 만드는 경우 이를 artifact-registry.list 파일에 추가한 후 sudo apt update를 다시 실행하여 저장소 소스를 업데이트할 수 있습니다.

원격 Apt 저장소에 액세스하도록 VM 구성

표준 업스트림 Apt 저장소 대신 원격 Apt 저장소만 사용하도록 VM을 구성하려면 VM의 /etc/apt/sources.list 파일에서 표준 저장소를 원격 저장소로 교체합니다.

  1. 기본 Compute Engine 서비스 계정에 프로젝트 전체 Artifact Registry 쓰기 권한을 부여합니다.

     gcloud projects add-iam-policy-binding PROJECT_ID \
       --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
       --role=roles/artifactregistry.writer
    
  2. VM 인스턴스 페이지로 이동합니다.

  3. VM이 있는 행에서 SSH를 클릭합니다.

    VM의 터미널 세션이 있는 새 창이 열립니다.

  4. VM의 /etc/apt/sources.list 파일을 열고 새 원격 저장소로 교체할 표준 저장소를 찾습니다.

  5. 표준 저장소 줄을 삭제하고 다음으로 바꿉니다.

    deb ar+https://LOCATION-apt.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME UPSTREAM_REPOSITORY_NAME COMPONENTS
    

    다음을 바꿉니다.

    • LOCATION을 원격 저장소의 리전 또는 멀티 리전 위치로 바꿉니다.
    • PROJECT_ID를 VM의 프로젝트 ID로 바꿉니다.
    • REMOTE_REPOSITORY_NAME을 원격 저장소에 지정한 이름으로 바꿉니다.
    • UPSTREAM_REPOSITORY_NAME을 원격의 업스트림 저장소 이름으로 바꿉니다.
    • COMPONENTS를 공백으로 구분된 구성요소 이름 목록으로 바꿉니다.

    예를 들어 다음은 bustermain, contribnon-free 구성 요소에 대한 업스트림 저장소로 사용하여 us-east1 위치에 있는 my-project 프로젝트의 my-repo 저장소에서 패키지를 가져오도록 VM을 구성합니다.

    deb ar+https://us-east1-apt.pkg.dev/remote/my-project/my-repo buster main contrib non-free
    
  6. 다음 명령어로 저장소 소스를 업데이트합니다.

    sudo apt update
    

    이제 Apt를 저장소에 연결할 수 있습니다.

원격 Apt 저장소를 백업으로 사용

표준 업스트림을 첫 번째 옵션으로 유지하고 원격 저장소를 대체 옵션으로 추가하려면 sources.list 파일에 표준 업스트림을 유지하고 원격 저장소를 sources.list 파일 끝에 추가하거나 새 목록을 sources.list.d 폴더에 만들면 됩니다.

sources.list.d 폴더에 새 artifact-registry.list 파일을 만들려면 다음 명령어를 실행합니다.

echo 'deb ar+https://LOCATION-apt.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME UPSTREAM_REPOSITORY_NAME COMPONENTS' | sudo tee -a  /etc/apt/sources.list.d/artifact-registry.list

다음을 바꿉니다.

  • LOCATION을 원격 저장소의 리전 또는 멀티 리전 위치로 바꿉니다.
  • PROJECT_ID를 VM의 프로젝트 ID로 바꿉니다.
  • REMOTE_REPOSITORY_NAME을 원격 저장소에 지정한 이름으로 바꿉니다.
  • UPSTREAM_REPOSITORY_NAME을 원격의 업스트림 저장소 이름으로 바꿉니다.
  • COMPONENTS를 공백으로 구분된 구성요소 이름 목록으로 바꿉니다.

추가 Apt 저장소를 만드는 경우 이를 artifact-registry.list 또는 sources.list 파일에 추가한 후 sudo apt update를 다시 실행하여 저장소 소스를 업데이트할 수 있습니다.

Apt 저장소에 대한 HTTP 액세스 구성

SSL 암호화를 지원하지 않는 이전 클라이언트 도구를 사용하는 경우 Apt 저장소에 대한 공개 액세스를 구성하고 HTTP를 통해 액세스할 수 있습니다. HTTP를 사용하여 읽을 수 있는 공개 저장소로 전송된 요청은 인증 토큰이 요청과 함께 제공되면 거부됩니다.

  1. 저장소에 대한 공개 액세스를 구성합니다.

  2. HTTP를 사용하여 저장소에서 패키지를 가져오도록 Apt를 구성하려면 다음 명령어를 실행합니다.

     echo 'deb http://LOCATION-apt.pkg.dev/projects/PROJECT_ID REPOSITORY main' >> /etc/apt/sources.list.d/artifact-registry.list
    

    다음을 바꿉니다.

    • LOCATION을 저장소 위치로 바꿉니다.
    • PROJECT_ID를 저장소의 프로젝트 ID로 바꿉니다.
    • REPOSITORY를 저장소 이름으로 바꿉니다.

    예를 들어 HTTP 사용하여 my-project 프로젝트와 us-central1 위치에 있는 공개 저장소 my-repo의 패키지를 설치하려면 다음 명령어를 사용합니다.

    echo 'deb http://us-central1-apt.pkg.dev/projects/my-project my-repo main' >> /etc/apt/sources.list.d/artifact-registry.list
    
  3. 다음 명령어로 저장소 소스를 업데이트합니다.

    sudo apt update
    

이제 Apt를 저장소에 연결할 수 있습니다.

추가 Apt 저장소를 만드는 경우 이를 artifact-registry.list 파일에 추가한 후 sudo apt update를 다시 실행하여 저장소 소스를 업데이트할 수 있습니다.

다음 단계