Cloud Run 서비스의 경우 Cloud Run은 해당 요청이 컨테이너에 전송될 때 기본적으로 HTTP/2 요청을 HTTP/1로 다운그레이드합니다. HTTP/2 엔드 투 엔드를 사용하도록 서비스를 명시적으로 설정하려는 경우 이러한 다운그레이드 없이 HTTP/2용으로 구성할 수 있습니다. 이 페이지에서는 이러한 구성을 수행하는 방법을 보여줍니다.
HTTP를 사용하여 서비스를 호출하는 방법은 HTTPS 요청으로 호출을 참조하세요.
구성하기 전에
Cloud Run 서비스에서 HTTP/2 일반 텍스트(h2c
) 형식의 요청을 처리해야 합니다. Google의 프런트엔드 제공 인프라는 TLS를 종료한 후 암호화된 채널을 통해 h2c
트래픽을 Cloud Run 및 컨테이너로 전달합니다.
서비스에서 h2c
요청이 지원되는지 확인하기 위해 다음 cURL 명령어를 사용하여 서비스를 로컬로 테스트합니다.
curl -i --http2-prior-knowledge http://localhost:PORT
필요한 역할
Cloud Run 서비스를 구성하고 배포하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Cloud Run 서비스에 대한 Cloud Run 개발자(
roles/run.developer
) 역할 -
서비스 ID에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
) 역할
Cloud Run과 연결된 IAM 역할 및 권한 목록은 Cloud Run IAM 역할 및 Cloud Run IAM 권한을 참조하세요. Cloud Run 서비스가 Cloud 클라이언트 라이브러리와 같은 Google Cloud API와 상호작용하는 경우에는 서비스 ID 구성 가이드를 참조하세요. 역할 부여에 대한 자세한 내용은 배포 권한 및 액세스 관리를 참조하세요.
HTTP/2 엔드 투 엔드 설정 및 업데이트
구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.
새 서비스를 만들거나 새 버전을 배포할 때 Google Cloud 콘솔, gcloud 명령줄 또는 YAML 파일을 사용하여 HTTP/2 엔드 투 엔드 사용을 지정할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Cloud Run으로 이동합니다.
컨테이너 배포를 클릭하고 서비스를 선택하여 새 서비스를 구성합니다. 기존 서비스를 구성하는 경우 서비스를 클릭한 후 새 버전 수정 및 배포를 클릭합니다.
새 서비스를 구성하는 경우 초기 서비스 설정 페이지를 작성한 후 컨테이너, 볼륨, 네트워킹, 보안을 클릭하여 서비스 구성 페이지를 펼칩니다.
네트워킹 탭을 클릭합니다.
- HTTP/2 연결 사용 설정 체크박스를 선택합니다.
만들기 또는 배포를 클릭합니다.
gcloud
다음 명령어를 사용하면 HTTP/2를 사용하도록 특정 서비스를 업데이트할 수 있습니다.
gcloud run services update SERVICE --use-http2
SERVICE
를 서비스 이름으로 바꿉니다.
다음 명령어를 사용하여 배포 중 HTTP/2를 사용하도록 서비스를 설정할 수도 있습니다.
gcloud run deploy --image IMAGE_URL --use-http2
IMAGE_URL을 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest
)로 바꿉니다. Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
입니다.
YAML
새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.
gcloud run services describe SERVICE --format export > service.yaml
다음 예시와 같이
ports
를 이름h2c
로,containerPort
를 원하는 포트로 업데이트합니다.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL ports: - name: h2c containerPort: 8080
다음과 같이 바꿉니다.
- SERVICE를 Cloud Run 서비스 이름으로 바꿉니다.
- IMAGE_URL을 컨테이너 이미지에 대한 참조(예:
us-docker.pkg.dev/cloudrun/container/hello:latest
)로 바꿉니다. Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL의 형식은LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
입니다. - REVISION을 새 버전 이름으로 변경하거나 이미 있는 경우 삭제합니다. 새 버전 이름을 제공할 경우 다음 기준을 반드시 충족해야 합니다.
SERVICE-
로 시작해야 합니다.- 소문자, 숫자,
-
만 포함합니다. -
로 끝나면 안 됩니다.- 63자(영문 기준) 이하여야 합니다.
다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.
gcloud run services replace service.yaml
Terraform
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
template.containers
아래의 Terraform 구성에서 google_cloud_run_v2_service
리소스에 다음 항목을 추가합니다. 컨테이너가 8080
이외의 포트에서 HTTP 요청을 리슨하는 경우 8080
을 해당 포트 번호로 바꿉니다.
HTTP/2 설정 보기
Cloud Run 서비스의 현재 http/2 설정을 보려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔에서 Cloud Run으로 이동합니다.
관심이 있는 서비스를 클릭하여 서비스 세부정보 페이지를 엽니다.
버전 탭을 클릭합니다.
오른쪽의 세부정보 패널에서 http/2 설정이 네트워킹 탭 아래에 나열됩니다.
gcloud
다음 명령어를 사용하세요.
gcloud run services describe SERVICE
반환된 구성에서 HTTP/2 설정을 찾습니다.