인스턴스용 컨테이너 구성

이 페이지에서는 Cloud Run 인스턴스의 진입점 명령어 및 인수를 구성하는 방법을 설명합니다.

Cloud Run은 컨테이너를 시작할 때 이미지의 기본 진입점 명령어 및 기본 명령어 인수를 실행합니다. 이미지의 기본 진입점 및 명령어 인수를 재정의하려면 컨테이너 구성에서 commandargs 필드를 사용하면 됩니다. command 필드는 컨테이너에서 실행하는 실제 명령어를 지정합니다. args 필드는 해당 명령어로 전달되는 인수를 지정합니다.

각 인스턴스에서 컨테이너당 최대 1,000개의 인수를 사용할 수 있습니다.

필요한 역할

Cloud Run 인스턴스를 구성하고 배포하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

Cloud Run과 연결된 IAM 역할 및 권한 목록은 다음 항목을 참조하세요. Cloud Run IAM 역할Cloud Run IAM 권한 Cloud Run 인스턴스가 Google Cloud Cloud 클라이언트 라이브러리와 같은 API와 상호작용하는 경우에는 서비스 ID 구성 가이드를 참조하세요. 역할 부여에 대한 자세한 내용은 배포 권한액세스 관리를 참조하세요.

진입점 및 인수 구성

기본 이미지 ENTRYPOINTCMD 설정을 재정의하려면 Google Cloud CLI 또는 YAML을 사용하여 Cloud Run 인스턴스의 진입점 명령어 및 인수를 설정하면 됩니다.

gcloud

기존 인스턴스의 시작 명령어 및 인수를 업데이트하려면 다음 안내를 따르세요.

gcloud beta run instances update INSTANCE --command COMMAND --args ARG1,ARG-N

다음을 바꿉니다.

  • INSTANCE: 인스턴스 이름입니다.
  • COMMAND: 기본 명령어를 사용하지 않는 경우 컨테이너가 시작할 때 실행하는 명령어
  • ARG1: 컨테이너 명령어로 전송 중인 인수. 두 개 이상의 인수에는 쉼표로 구분된 목록을 사용합니다.

새 인스턴스 또는 기존 인스턴스를 배포하는 동안 진입점 및 인수를 지정하려면 다음 안내를 따르세요.

gcloud beta run instances deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

IMAGE_URL을 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest)로 바꿉니다.

진입점 명령어 및 인수의 컨테이너 기본값을 복원하려면 다음과 같이 빈 문자열을 제공합니다.

gcloud beta run instances --image IMAGE_URL --command "" --args ""

YAML

  1. 새 인스턴스를 만드는 경우 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 다음 예시에는 YAML 구성이 포함되어 있습니다.

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL
        command:
        - COMMAND
        args:
        - ARG1
        - ARG-N

    다음을 바꿉니다.

    • INSTANCE: Cloud Run 인스턴스의 이름입니다.
    • CONTAINER_NAME: 컨테이너의 이름입니다.
    • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest)입니다.
    • COMMAND: 기본 명령어를 사용하지 않는 경우 컨테이너가 시작되는 명령어
    • ARG1: 컨테이너 명령어로 전송 중인 인수. 여러 인수를 사용하는 경우 각 행에 각각 지정합니다(예: ARG-N).
  3. 다음 명령어를 사용하여 인스턴스를 만들거나 업데이트합니다.

    gcloud beta run instances replace instance.yaml

사이드카 배포를 위한 컨테이너 시작 순서 구성

사이드카 배포에서 컨테이너 시작 순서를 지정하려면 컨테이너 종속 항목 기능을 사용합니다. 종속 항목이 있는 컨테이너를 지정하고 종속된 컨테이너를 나열합니다. 해당 컨테이너는 먼저 시작됩니다. 종속 항목이 없는 컨테이너는 항상 동시에 먼저 시작됩니다.

이 기능을 성공적으로 사용하려면 시작 상태 점검 프로브를 사용해야 합니다. 시작 프로브를 사용하면 Cloud Run이 종속 컨테이너의 상태를 검사하여 통과 여부를 확인한 후에 다음 컨테이너를 시작할 수 있습니다. 상태 점검을 사용하지 않으면 종속된 컨테이너 시작에 실패하더라도 컨테이너가 지정된 순서로 시작됩니다.

인스턴스에는 기본 시작 상태 점검 프로브가 없습니다.

Google Cloud CLI 또는 YAML을 사용하여 시작 순서를 지정합니다.

gcloud

Google Cloud CLI를 사용하여 시작 순서를 지정하기 전에 시작 상태 점검을 구성합니다.

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    콘솔 Google Cloud 하단에 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 지정된 시작 순서에 따라 여러 컨테이너를 인스턴스에 배포하려면 다음 명령어를 실행합니다.

gcloud beta run instances deploy INSTANCE \
         --container CONTAINER_1_NAME --image='INSTANCE_IMAGE'
     --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
     --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME,CONTAINER_2_NAME

다음을 바꿉니다.

  • INSTANCE: 인스턴스 이름입니다.
  • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest)입니다.
  • SIDECAR_IMAGE: 사이드카 컨테이너 이미지에 대한 참조입니다.

    배포 명령어에서 각 컨테이너를 구성하려면 각 컨테이너 구성을 container 매개변수 다음에 제공합니다.

YAML

  1. 새 인스턴스를 만드는 경우 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 다음 예시에는 YAML 구성이 포함되어 있습니다.

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'

    다음을 바꿉니다.

    • INSTANCE: Cloud Run 인스턴스의 이름입니다.
    • CONTAINER1: 하나 이상의 컨테이너에 종속된 첫 번째 컨테이너의 이름입니다. YAML에서 컨테이너 이름을 설정할 수 있습니다. 컨테이너 이름을 지정하지 않으면 Cloud Run이 자동으로 이름을 생성합니다.
    • CONTAINER2: CONTAINER1 전에 시작해야 하는 컨테이너의 이름
    • CONTAINER3: 하나 이상의 컨테이너에 종속된 두 번째 컨테이너 이름

    YAML 스니펫에 표시된 예시에서 CONTAINER2 먼저 시작되고 CONTAINER1 두 번째로 시작되며, CONTAINER3 마지막으로 시작됩니다.

  3. 다음 명령어를 사용하여 인스턴스를 만들거나 업데이트합니다.

    gcloud beta run instances replace instance.yaml