컨테이너 포트, 컨테이너 진입점 명령어 및 인수를 구성하는 방법을 알아봅니다.
Knative serving은 컨테이너를 시작할 때 이미지의 기본 진입점 명령어 및 기본 명령어 인수를 실행합니다. 이미지의 기본 진입점 및 명령어 인수를 재정의하려면 컨테이너 구성에서 command
및 args
필드를 사용하면 됩니다. command
필드는 컨테이너에서 실행하는 실제 명령어를 지정합니다. args
필드는 해당 명령어로 전달되는 인수를 지정합니다.
컨테이너 포트 구성
구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.
컨테이너는 하드코딩된 특정 포트가 아닌 PORT
환경 변수에서 정의된 포트를 리슨해야 합니다.
하지만 이렇게 할 수 없는 경우 컨테이너로 전송되는 포트 요청을 구성할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Knative serving으로 이동합니다.
배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하려면 해당 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.
고급 설정에서 컨테이너를 클릭합니다.
기본값이
8080
이 아닌 경우 요청을 전송할 포트를 지정합니다. 이렇게 하면PORT
환경 변수도 설정됩니다.다음을 클릭하여 다음 섹션으로 진행합니다.
이 서비스가 트리거되는 방식 구성 섹션에서 서비스를 호출하는 데 사용할 연결을 선택합니다.
만들기를 클릭하여 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 파일을 수정하고 변경사항을 배포할 수 있습니다.
지정된 속성만 수정해야 합니다.
서비스 구성을 로컬 작업공간의
service.yaml
파일에 다운로드합니다.gcloud run services describe SERVICE --format export > service.yaml
SERVICE를 Knative serving 서비스의 이름으로 바꿉니다.
로컬 파일에서
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를 요청을 전송하려는 포트로 바꿉니다.
- IMAGE_URL을 컨테이너 이미지에 대한 참조(예:
다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.
gcloud run services replace service.yaml
컨테이너 진입점 명령어 및 인수 구성
구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.
Knative serving은 컨테이너를 시작할 때 이미지의 기본 진입점 명령어를 실행합니다.
컨테이너 이미지에 정의된 기존 진입점 명령어 및 인수를 지정하거나 재정의하려면 Knative serving 컨테이너 구성에서 command
및 args
설정을 구성하면 됩니다.
진입점 명령어, 인수 또는 둘 다를 구성하도록 선택할 수 있습니다. Knative serving에서 지정한 명령어는 컨테이너 이미지에 정의된 진입점 명령어를 재정의합니다. 인수만 지정하면 컨테이너 이미지에 정의된 진입점 명령어를 통해 전달되고 실행됩니다.
새 서비스를 배포하거나 기존 서비스를 업데이트하거나 버전을 배포할 때 Knative serving에서 Google Cloud 콘솔, Google Cloud CLI 또는 YAML 파일을 사용하여 진입점 명령어와 인수를 구성할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Knative serving으로 이동합니다.
배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하려면 해당 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.
고급 설정에서 컨테이너를 클릭합니다.
시작 시 컨테이너를 실행할 진입점 명령어와 인수를 지정합니다.
다음을 클릭하여 다음 섹션으로 진행합니다.
이 서비스가 트리거되는 방식 구성 섹션에서 서비스를 호출하는 데 사용할 연결을 선택합니다.
만들기를 클릭하여 Knative serving에 이미지를 배포하고 배포가 완료될 때까지 기다립니다.
명령줄
명령어 매개변수 옵션
-
쉼표(
,
)가 포함된 인수를 지정하려면 각ARG
를 다른 구분 기호로 이스케이프 처리해야 합니다. 예를 들어@
을 사용하는 경우는 다음과 같습니다.--args "^@^arg,with,commas@anotherarg@ARG3..."
-
여러 키-값 쌍 집합을 지정하려면 가독성을 위한 여러 매개변수를 지정하면 됩니다. 예를 들면 다음과 같습니다.
[...] --args "
ARG
1" \ --args "ARG
2" \ --args "ARG
3" -
인수에 등호(
=
)를 사용하려면 다음 형식을 사용하여 각 인수를 지정해야 합니다.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 파일을 수정하고 변경사항을 배포할 수 있습니다.
지정된 속성만 수정해야 합니다.
서비스 구성을 로컬 작업공간의
service.yaml
파일에 다운로드합니다.gcloud run services describe SERVICE --format export > service.yaml
SERVICE를 Knative serving 서비스의 이름으로 바꿉니다.
로컬 파일에서
command
및args
속성을 업데이트합니다.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을 시작 시 실행되는 명령어에 대한 하나 또는 여러 인수로 바꿉니다. 두 개 이상의 인수에는 쉼표로 구분된 목록을 사용합니다.
- IMAGE_URL을 컨테이너 이미지에 대한 참조(예:
다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.
gcloud run services replace service.yaml