이 페이지에서는 컨테이너 이미지를 새 Cloud Run 작업자 풀 또는 기존 Cloud Run 작업자 풀의 새 버전에 배포하는 방법을 보여줍니다.
작업자 풀은 요청이 아닌 워크로드를 위해 특별히 설계된 Cloud Run 리소스입니다. Cloud Run 서비스와 달리 작업자 풀에는 다음 기능이 없습니다.
- 공개 엔드포인트/URL
- 인그레스 포트 노출 요구사항
- 요청 기반 자동 확장
새 작업자 풀 배포에 대한 둘러보기 예시는 샘플 작업자 풀 배포 빠른 시작을 참조하세요.
필요한 역할
Cloud Run 작업자 풀을 배포하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Cloud Run 작업자 풀에 대한 Cloud Run 개발자(
roles/run.developer
) 역할 -
작업자 풀이 다른 Google Cloud 서비스와 상호작용하는 데 사용하는 ID에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
) 역할 -
배포된 컨테이너 이미지의 Artifact Registry 저장소에 대한 Artifact Registry 리더(
roles/artifactregistry.reader
)
Cloud Run과 연결된 IAM 역할 및 권한 목록은 Cloud Run IAM 역할 및 Cloud Run IAM 권한을 참조하세요. Cloud Run 작업자 풀이 Cloud 클라이언트 라이브러리와 같은Google Cloud API와 상호작용하는 경우에는 서비스 ID 구성 가이드를 참조하세요. 역할 부여에 대한 자세한 내용은 배포 권한 및 액세스 관리를 참조하세요.
지원되는 Container Registry 및 이미지
Artifact Registry 또는 Docker Hub에 저장된 컨테이너 이미지를 직접 사용할 수 있습니다. Artifact Registry를 사용하는 것이 좋습니다. Docker Hub 이미지는 최대 1시간 동안 캐시됩니다.
Artifact Registry 원격 저장소를 설정하여 다른 공개 또는 비공개 레지스트리(예: JFrog Artifactory, Nexus 또는 GitHub Container Registry)의 컨테이너 이미지를 사용할 수 있습니다.
Docker 공식 이미지 또는 Docker 스폰서 OSS 이미지와 같이 인기 있는 컨테이너 이미지를 배포하기 위해서는 Docker Hub만 고려해야 합니다. 가용성을 높이려면 Artifact Registry 원격 저장소를 사용해 이러한 Docker Hub 이미지를 배포하는 것이 좋습니다.
Cloud Run은 Docker Hub 또는 외부 레지스트리가 있는 Artifact Registry 원격 저장소에서 배포할 때 9.9GB를 초과하는 컨테이너 이미지 레이어를 지원하지 않습니다.
작업자 풀 배포
다음과 같은 방법으로 작업자 풀을 배포할 수 있습니다.
새 작업자 풀 배포
태그(예: us-docker.pkg.dev/my-project/container/my-image:latest
) 또는 정확한 다이제스트(예: us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...
)로 컨테이너 이미지를 지정할 수 있습니다.
작업자 풀을 처음 배포하면 첫 번째 버전이 생성됩니다. 버전은 변경할 수 없습니다. 컨테이너 이미지 태그로 배포를 수행할 때는 이것이 다이제스트로 확인되고, 버전에는 항상 이 특정 다이제스트가 제공됩니다.
Google Cloud CLI를 사용하여 안내를 따릅니다.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
작업자 풀 컨테이너 이미지를 배포하려면 다음 안내를 따르세요.
다음 명령어를 실행합니다.
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
다음과 같이 바꿉니다.
- WORKER_POOL을 배포하려는 작업자 풀의 이름으로 바꿉니다. 작업자 풀이 아직 없으면 배포 중에 이 명령어로 작업자 풀이 생성됩니다. 이 파라미터를 완전히 생략할 수 있지만 생략하면 작업자 풀 이름을 입력하라는 메시지가 표시됩니다. 작업자 풀 이름은 49자 이하여야 하며, 리전 및 프로젝트별로 고유한 이름을 사용해야 하고, 프로젝트의 기존 서비스 이름과 동일한 이름을 사용해서는 안 됩니다.
- IMAGE_URL을 작업자 풀이 포함된 컨테이너 이미지에 대한 참조로 바꿉니다(예:
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
).--image
플래그를 제공하지 않으면 배포 명령어가 소스 코드에서 배포를 시도합니다.
배포가 완료될 때까지 기다립니다. 성공적으로 완료되면 Cloud Run에 배포된 작업자 풀에 관한 버전 정보와 함께 성공 메시지가 표시됩니다.
run/region
gcloud
속성을 사용하여 설정한 위치와 다른 위치에 배포하려면 다음을 사용합니다.gcloud beta run worker-pools deploy WORKER_POOL --region REGION
기존 작업자 풀의 새 버전 배포
작업자 풀의 구성 설정을 변경하면 컨테이너 이미지가 변경되지 않아도 새 버전이 생성됩니다. 생성된 각 버전은 변경할 수 없습니다.
컨테이너 이미지는 배포 시 Cloud Run에서 가져옵니다. Cloud Run은 버전에서 이 컨테이너 이미지 사본을 사용하는 한 이를 유지합니다.
Google Cloud CLI를 사용하여 다음 안내를 따르세요.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
컨테이너 이미지를 배포하려면 다음 안내를 따르세요.
다음 명령어를 실행합니다.
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
다음과 같이 바꿉니다.
- WORKER_POOL을 배포하려는 작업자 풀의 이름으로 바꿉니다. 작업자 풀이 아직 없으면 배포 중에 이 명령어로 작업자 풀이 생성됩니다. 이 파라미터를 완전히 생략할 수 있지만 생략하면 작업자 풀 이름을 입력하라는 메시지가 표시됩니다. 작업자 풀 이름은 49자 이하여야 하며, 리전 및 프로젝트별로 고유한 이름을 사용해야 하고, 프로젝트의 기존 서비스 이름과 동일한 이름을 사용해서는 안 됩니다.
- IMAGE_URL을 작업자 풀이 포함된 컨테이너 이미지에 대한 참조로 바꿉니다(예:
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
).--image
플래그를 제공하지 않으면 배포 명령어가 소스 코드에서 배포를 시도합니다.
새 버전의 경우 버전 서픽스가 자동으로 할당됩니다. 자체 버전 서픽스를 제공하려면 gcloud CLI 파라미터
--revision-suffix
를 사용합니다.배포가 완료될 때까지 기다립니다. 성공적으로 완료되면 Cloud Run에 배포된 작업자 풀에 관한 버전 정보와 함께 성공 메시지가 표시됩니다.
다른 Google Cloud 프로젝트의 이미지 배포
다른 Google Cloud 프로젝트의 이미지를 배포하려면 사용자 또는 관리자가 배포자 계정과 Cloud Run 서비스 에이전트에 필요한 IAM 역할을 부여해야 합니다.
배포자 계정에 필요한 역할은 필수 역할을 참고하세요.
Cloud Run 서비스 에이전트에 필요한 역할을 부여하려면 다음 안내를 참고하세요.
Google Cloud 콘솔에서 Cloud Run 작업자 풀의 프로젝트를 엽니다.
Google 제공 역할 부여 포함을 선택합니다.
Cloud Run 서비스 에이전트의 이메일을 복사합니다. 여기에는 @serverless-robot-prod.iam.gserviceaccount.com 서픽스가 포함됩니다.
사용하려는 Container Registry를 소유하는 프로젝트를 엽니다.
추가를 클릭하여 새로운 주 구성원을 추가합니다.
새 주 구성원 필드에 앞에서 복사한 서비스 계정의 이메일을 붙여넣습니다.
Container Registry를 사용하는 경우 역할 선택 드롭다운 메뉴에서 스토리지 -> 스토리지 객체 뷰어 역할을 선택합니다. Artifact Registry를 사용하는 경우 Artifact Registry -> Artifact Registry 리더 역할을 선택합니다.
Cloud Run 작업자 풀이 포함된 프로젝트에 컨테이너 이미지를 배포합니다.
다른 레지스트리의 이미지 배포
Artifact Registry 또는 Docker Hub에 저장되지 않은 공개 또는 비공개 컨테이너 이미지를 배포하려면 Artifact Registry 원격 저장소를 설정합니다.
Artifact Registry 원격 저장소를 사용하면 다음 작업을 할 수 있습니다.
- 공개 컨테이너 이미지(예: GitHub Container Registry(
ghcr.io
))를 배포합니다. - 인증이 필요한 비공개 저장소의 컨테이너 이미지를 배포합니다(예: JFrog Artifactory 또는 Nexus).
Artifact Registry 원격 저장소를 사용할 수 없는 경우 docker push
를 사용하여 Cloud Run에 배포하여 컨테이너 이미지를 임시로 가져오고 Artifact Registry에 푸시할 수 있습니다. Cloud Run은 배포 중에 컨테이너 이미지를 가져오며, 이후에 Artifact Registry에서 이미지를 삭제할 수 있습니다.
작업자 풀에 여러 컨테이너(사이드카) 배포
사이드카가 있는 Cloud Run 배포에는 기본 작업자 풀 컨테이너 하나와 사이드카 컨테이너가 하나 이상 있습니다. 사이드카는 localhost 포트를 사용하여 서로 그리고 작업자 풀 컨테이너와 통신할 수 있습니다. localhost 포트는 사용 중인 컨테이너에 따라 달라집니다.
작업자 풀 컨테이너를 포함하여 인스턴스당 최대 10개까지 컨테이너를 배포할 수 있습니다. 인스턴스 내에 있는 모든 컨테이너는 같은 네트워크 네임스페이스를 공유하며 메모리 내 공유 볼륨을 사용하여 파일을 공유할 수도 있습니다.
커스텀 조직 정책을 만들어 모든 배포에 특정 사이드카가 사용되도록 지정할 수 있습니다.
사이드카 컨테이너로 서비스 배포
Cloud Run 작업자 풀에 컨테이너를 여러 개 배포하려면 Google Cloud CLI를 사용하여 다음 안내를 따르세요.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
작업자 풀에 컨테이너 여러 개를 배포하려면 다음 명령어를 실행합니다.
gcloud beta run worker-pools deploy WORKER_POOL \ --container WORKER_POOL_CONTAINER_NAME \ --image='WORKER_POOL_IMAGE' \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE'
다음과 같이 바꿉니다.
- WORKER_POOL을 배포할 작업자 풀의 이름으로 바꿉니다. 이 파라미터를 생략하면 작업자 풀 이름을 입력하라는 메시지가 표시됩니다.
- WORKER_POOL_CONTAINER_NAME을 작업자 풀 컨테이너의 이름으로 바꿉니다.
- IMAGE_URL을 작업자 풀이 포함된 컨테이너 이미지에 대한 참조로 바꿉니다(예:
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
). - SIDECAR_CONTAINER_NAME을 사이드카 컨테이너 이름으로 바꿉니다(예:
sidecar
). - SIDECAR_IMAGE를 사이드카 컨테이너 이미지에 대한 참조로 바꿉니다.
배포 명령어에서 각 컨테이너를 구성하려면 각 컨테이너 구성을
container
파라미터 다음에 제공합니다. 예를 들면 다음과 같습니다.gcloud beta run worker-pools deploy WORKER_POOL \ --container CONTAINER_1_NAME \ --image='WORKER_POOL_IMAGE' \ --set-env-vars=KEY=VALUE \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE' \ --set-env-vars=KEY_N=VALUE_N
배포가 완료될 때까지 기다립니다. 성공적으로 완료되면 Cloud Run에 성공 메시지가 표시됩니다.
사이드카 포함 배포에서 사용 가능한 기능
배포에서 다른 컨테이너보다 먼저 일부 컨테이너를 시작해야 하는 종속 항목이 있으면 여러 컨테이너가 포함된 배포 내에서 컨테이너 시작 순서를 지정할 수 있습니다.
다른 컨테이너에 종속된 컨테이너가 있으면 배포에서 상태 점검을 사용해야 합니다. 상태 점검을 사용하면 Cloud Run이 컨테이너 시작 순서를 따르고 다음 컨테이너를 시작하기 전에 각 컨테이너의 상태를 확인합니다. 상태 점검이 없으면 종속된 컨테이너가 아직 실행 중이 아니거나 시작에 실패하더라도 Cloud Run에서 모든 컨테이너를 시작하려고 시도합니다.
단일 인스턴스 내 컨테이너 여러 개에서 생성된 마운트 지점을 사용하여 각 컨테이너에 액세스할 수 있는 공유된 인메모리 볼륨에 액세스할 수 있습니다.
다음 단계
새 작업자 풀을 배포한 후 다음을 수행할 수 있습니다.