컨테이너 구성

컨테이너 포트, 컨테이너 진입점 명령어 및 인수를 구성하는 방법을 알아봅니다.

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

컨테이너 포트 구성

구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.

컨테이너는 하드코딩된 특정 포트가 아닌 PORT 환경 변수에서 정의된 포트를 리슨해야 합니다. 하지만 이렇게 할 수 없는 경우 컨테이너로 전송되는 포트 요청을 구성할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Knative serving으로 이동합니다.

    Knative serving으로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하려면 해당 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 고급 설정에서 컨테이너를 클릭합니다.

  4. 기본값이 8080이 아닌 경우 요청을 전송할 포트를 지정합니다. 이렇게 하면 PORT 환경 변수도 설정됩니다.

  5. 다음을 클릭하여 다음 섹션으로 진행합니다.

  6. 이 서비스가 트리거되는 방식 구성 섹션에서 서비스를 호출하는 데 사용할 연결을 선택합니다.

  7. 만들기를 클릭하여 Knative serving에 이미지를 배포하고 배포가 완료될 때까지 기다립니다.

명령줄

  • 기존 서비스의 경우 다음 매개변수를 포함하여 gcloud run services update 명령어를 실행하여 포트 설정을 업데이트합니다.

    gcloud run services update SERVICE --port PORT
    

    다음과 같이 바꿉니다.

    • SERVICE을 서비스 이름으로 바꿉니다.
    • PORT: 요청을 전송할 포트. 기본 포트는 8080입니다.
  • 새 서비스의 경우 --port 매개변수를 포함하여 gcloud run deploy 명령어를 실행하여 포트를 설정합니다.

    gcloud run deploy SERVICE --image=IMAGE_URL --port PORT
    

    다음과 같이 바꿉니다.

    • SERVICE을 서비스 이름으로 바꿉니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/cloudrun/hello)로 바꿉니다.
    • PORT를 요청을 전송하려는 포트로 바꿉니다. 기본 포트는 8080입니다.

YAML

--format=export 플래그를 사용하여 gcloud run services describe 명령어로 YAML 파일에 기존 서비스 구성을 다운로드할 수 있습니다. 그런 다음 gcloud run services replace 명령어로 YAML 파일을 수정하고 변경사항을 배포할 수 있습니다. 지정된 속성만 수정해야 합니다.

  1. 서비스 구성을 로컬 작업공간의 service.yaml 파일에 다운로드합니다.

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE를 Knative serving 서비스의 이름으로 바꿉니다.

  2. 로컬 파일에서 containerPort: 속성을 업데이트합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: PORT
    

    바꾸기

    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/cloudrun/hello)로 바꿉니다.
    • PORT를 요청을 전송하려는 포트로 바꿉니다.
  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud run services replace service.yaml

컨테이너 진입점 명령어 및 인수 구성

구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.

Knative serving은 컨테이너를 시작할 때 이미지의 기본 진입점 명령어를 실행합니다. 컨테이너 이미지에 정의된 기존 진입점 명령어 및 인수를 지정하거나 재정의하려면 Knative serving 컨테이너 구성에서 commandargs 설정을 구성하면 됩니다.

진입점 명령어, 인수 또는 둘 다를 구성하도록 선택할 수 있습니다. Knative serving에서 지정한 명령어는 컨테이너 이미지에 정의된 진입점 명령어를 재정의합니다. 인수만 지정하면 컨테이너 이미지에 정의된 진입점 명령어를 통해 전달되고 실행됩니다.

서비스를 배포하거나 기존 서비스를 업데이트하거나 버전을 배포할 때 Knative serving에서 Google Cloud 콘솔, Google Cloud CLI 또는 YAML 파일을 사용하여 진입점 명령어와 인수를 구성할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Knative serving으로 이동합니다.

    Knative serving으로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하려면 해당 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 고급 설정에서 컨테이너를 클릭합니다.

  4. 시작 시 컨테이너를 실행할 진입점 명령어와 인수를 지정합니다.

  5. 다음을 클릭하여 다음 섹션으로 진행합니다.

  6. 이 서비스가 트리거되는 방식 구성 섹션에서 서비스를 호출하는 데 사용할 연결을 선택합니다.

  7. 만들기를 클릭하여 Knative serving에 이미지를 배포하고 배포가 완료될 때까지 기다립니다.

명령줄

명령어 매개변수 옵션

  • 쉼표(,)가 포함된 인수를 지정하려면 각 ARG를 다른 구분 기호로 이스케이프 처리해야 합니다. 예를 들어 @을 사용하는 경우는 다음과 같습니다.
    --args "^@^arg,with,commas@anotherarg@ARG3..."
    
  • 여러 키-값 쌍 집합을 지정하려면 가독성을 위한 여러 매개변수를 지정하면 됩니다. 예를 들면 다음과 같습니다.
    [...]
    --args "ARG1" \
    --args "ARG2" \
    --args "ARG3"
    
  • 인수에 등호(=)를 사용하려면 다음 형식을 사용하여 각 인수를 지정해야 합니다.
    gcloud run services ...  \
      --args "--repo-allowlist=github.com/example/example_demo" \
      --args "--gh-webhook-secret=XX"
    

  • 기존 서비스의 경우 다음 매개변수로 gcloud run services update 명령어를 실행하여 진입점 명령어를 업데이트합니다.

    gcloud run services update SERVICE --command COMMAND --args ARG1,ARG2,ARG-N
    

    다음과 같이 바꿉니다.

    • SERVICE을 서비스 이름으로 바꿉니다.
    • 선택사항: COMMAND를 시작 시 컨테이너를 실행할 명령어로 바꿉니다.
    • 선택사항: ARG1을 시작 시 실행되는 명령어에 대한 하나 또는 여러 인수로 바꿉니다. 여러 개의 인수에는 쉼표로 구분된 목록을 사용합니다. 인수의 형식을 지정하는 방법을 알아보세요.
  • 새 서비스의 경우 --command 매개변수로 gcloud run deploy 명령어를 실행하여 진입점 명령어를 설정합니다.

    gcloud run deploy SERVICE --image=IMAGE_URL --command COMMAND --args ARG1,ARG2,ARG-N
    

    다음과 같이 바꿉니다.

    • SERVICE을 서비스 이름으로 바꿉니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/cloudrun/hello)로 바꿉니다.
    • 선택사항: COMMAND를 시작 시 컨테이너를 실행할 명령어로 바꿉니다.
    • 선택사항: ARG1을 시작 시 실행되는 명령어에 대한 하나 또는 여러 인수로 바꿉니다. 여러 개의 인수에는 쉼표로 구분된 목록을 사용합니다. 인수의 형식을 지정하는 방법을 알아보세요.

YAML

--format=export 플래그를 사용하여 gcloud run services describe 명령어로 YAML 파일에 기존 서비스 구성을 다운로드할 수 있습니다. 그런 다음 gcloud run services replace 명령어로 YAML 파일을 수정하고 변경사항을 배포할 수 있습니다. 지정된 속성만 수정해야 합니다.

  1. 서비스 구성을 로컬 작업공간의 service.yaml 파일에 다운로드합니다.

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE를 Knative serving 서비스의 이름으로 바꿉니다.

  2. 로컬 파일에서 commandargs 속성을 업데이트합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            command:
            - COMMAND
            args:
            - "ARG1"
            - "ARG-N"
    

    다음과 같이 바꿉니다.

    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/cloudrun/hello)로 바꿉니다.
    • 선택사항: COMMAND를 시작 시 컨테이너를 실행할 명령어로 바꿉니다.
    • 선택사항: ARG1을 시작 시 실행되는 명령어에 대한 하나 또는 여러 인수로 바꿉니다. 두 개 이상의 인수에는 쉼표로 구분된 목록을 사용합니다.
  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud run services replace service.yaml