앰비언트 네트워킹 구성

앰비언트 네트워킹은 Cloud Run에 기본 제공되는 간소화된 리소스 네트워킹 환경을 제공합니다. 리소스에 완전 관리형 데이터 영역을 제공하여 커스텀 프록시를 빌드하고 유지보수하는 운영 부담을 없애줍니다. 또한 서비스 메시 개념을 추상화하므로 메시를 학습하거나 구성하지 않고도 고급 네트워킹 기능을 사용할 수 있습니다.

앰비언트 네트워킹을 사용 설정하면 기본적으로 트래픽이 변경되지 않은 상태로 전달되므로 기존 HTTP 및 TCP 트래픽이 계속 작동합니다. 앰비언트 네트워킹을 사용 설정해도 리소스의 동작 방식은 변경되지 않습니다. 앰비언트 네트워킹은 기본적으로 다음 섹션에 설명된 기능을 선택할 수 있게 해줍니다.

사용 사례

앰비언트 네트워킹은 Cloud Run의 고급 네트워킹 기능의 기반입니다. 앰비언트 네트워킹을 사용 설정한 후 Cloud Run의 Agent Gateway를 사용하도록 선택할 수 있습니다. 이 기능은 조직에서 중앙에서 관리하는 액세스 및 보안 정책을 사용하여 에이전트 트래픽을 제어합니다.

아키텍처

앰비언트 네트워킹은 Cloud Run 리소스의 각 컨테이너 인스턴스 내에서 애플리케이션 컨테이너와 함께 완전 관리형 Envoy 사이드카 컨테이너를 실행합니다. 사이드카는 인스턴스의 네트워크 트래픽을 가로채고 Cloud Run이 배포하는 라우팅 및 보안 정책을 적용합니다.

Cloud Run 리소스의 컨테이너 인스턴스 내에서 애플리케이션 컨테이너와 함께 실행되는 주변 사이드카 컨테이너로, 트래픽이 사이드카에서 다른 Cloud Run 리소스로 흐릅니다.
앰비언트 사이드카 컨테이너는 애플리케이션 컨테이너와 호출하는 대상 간의 트래픽을 가로챕니다(확대하려면 클릭).

앰비언트 네트워킹 범위

앰비언트 네트워킹은 전역 범위와 리전 범위를 지원합니다. 범위에 따라 사이드카가 전역 또는 리전 라우팅 영역에 연결되는지 여부가 결정됩니다.

  • 리전(기본값): Cloud Run은 사이드카를 리전 라우팅 영역에 연결하여 라우팅 및 보안 정책을 서비스 리전 내의 대상으로 제한합니다. 이 범위는 저장 데이터, 사용 중 데이터, 전송 중 데이터에 대한 데이터 레지던시(DRZ) 요구사항을 지원합니다. 범위를 지정하지 않으면 앰비언트 네트워킹에서 리전 범위를 사용합니다.
  • 전역: Cloud Run은 사이드카를 전역 라우팅 영역에 연결하여 모든 리전의 대상으로 트래픽을 라우팅할 수 있습니다.

앰비언트 네트워킹을 사용하는 각 기능에는 특정 범위가 필요합니다.

기능 전역 범위 리전 범위
Cloud Run의 Agent Gateway 지원되지 않음 지원됨

제한사항

앰비언트 네트워킹에는 다음과 같은 제한사항이 적용됩니다.

  • UDP 트래픽은 지원되지 않습니다. 앰비언트 네트워킹은 HTTP 및 TCP 트래픽만 지원합니다.
  • 인바운드 요청은 엔드 투 엔드 HTTP/2를 지원하지 않습니다. 자세한 내용은 알려진 문제를 참조하세요.
  • 리전 범위는 *.googleapis.com을 비공개 Google 액세스 IP 주소로 확인하는 VPC 네트워크를 지원하지 않습니다. 자세한 내용은 알려진 문제를 참조하세요.
  • 1세대 실행 환경은 지원되지 않습니다. 실행 환경을 지정하지 않으면 Cloud Run은 2세대를 사용합니다.
  • 컨테이너 인스턴스를 시작하는 데 시간이 더 오래 걸립니다. 자세한 내용은 알려진 문제를 참조하세요.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Cloud Run, Network Services, Traffic Director API가 아직 사용 설정되지 않은 경우 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할(roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할(roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할 부여 방법 알아보기

    API 사용 설정

  7. Cloud Run 리소스의 CPU 한도를 vCPU 1개만큼 늘리고 메모리 한도를 1GiB만큼 늘립니다. 새 CPU 한도가 지원되는 값이 아니면 지원되는 다음으로 높은 값을 사용합니다. 앰비언트 사이드카는 컨테이너 인스턴스의 CPU 및 메모리를 공유하므로 이 증가로 인해 애플리케이션에 필요한 리소스가 유지됩니다.

  8. 앰비언트 네트워킹 사이드카 사용량에 대한 Cloud Run 가격 책정 페이지를 읽어보세요. 미리보기 중에는 주변 기능에 대한 결제가 시행되지 않습니다.

필요한 역할

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

소스 코드에서 서비스 또는 함수를 배포하는 경우 프로젝트와 Cloud Build 서비스 계정에 추가 역할을 부여해야 합니다.

Cloud Run 리소스의 서비스 ID에도 다음 역할이 있어야 합니다.

  • Traffic Director 클라이언트(roles/trafficdirector.client)
  • Cloud Trace 에이전트(roles/cloudtrace.agent)

서비스 ID에 이러한 역할을 부여하려면 gcloud를 사용합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:RUN_CLIENT_SA@PROJECT_ID.iam.gserviceaccount.com" \
    --role="roles/trafficdirector.client"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:RUN_CLIENT_SA@PROJECT_ID.iam.gserviceaccount.com" \
    --role="roles/cloudtrace.agent"

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • RUN_CLIENT_SA: Cloud Run 서비스에 연결된 서비스 계정의 이름입니다.

서비스 ID에 이러한 역할이 없으면 Cloud Run 리소스가 계속 배포되지만 앰비언트 네트워킹을 사용하는 기능은 작동하지 않습니다.

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

앰비언트 네트워킹 구성

gcloud 또는 YAML 파일을 사용하여 앰비언트 네트워킹을 구성합니다.

gcloud

  • 새 서비스에서 앰비언트 네트워킹을 사용 설정하려면 --ambient-networking 플래그와 --ambient-scope 플래그(선택사항)를 전달합니다.

    gcloud beta run deploy SERVICE \
      --image=IMAGE_URL \
      --ambient-networking \
      --ambient-scope=SCOPE \
      --region=REGION
  • 기존 서비스에서 앰비언트 네트워킹을 사용 설정하려면 gcloud beta run services update 명령어에 동일한 플래그를 전달합니다. 그러면 앰비언트 네트워킹이 사용 설정된 새 버전이 배포됩니다.

    gcloud beta run services update SERVICE \
      --ambient-networking \
      --ambient-scope=SCOPE \
      --region=REGION
  • 앰비언트 네트워킹을 사용 중지하려면 --no-ambient-networking 플래그를 전달합니다.

    gcloud beta run services update SERVICE \
      --no-ambient-networking \
      --region=REGION

다음을 바꿉니다.

  • 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 형식을 따릅니다.
  • SCOPE: 앰비언트 네트워킹 범위(global 또는 regional)
  • REGION: 서비스의 리전

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. run.googleapis.com/ambient-networking 주석을 추가하고 원하는 경우 run.googleapis.com/ambient-scope 주석을 추가합니다.

    spec:
     template:
       metadata:
         annotations:
           run.googleapis.com/ambient-networking: 'true'
           run.googleapis.com/ambient-scope: SCOPE

    SCOPE을 앰비언트 네트워킹 범위(global 또는 regional)로 바꿉니다. 앰비언트 네트워킹을 사용 중지하려면 run.googleapis.com/ambient-networking를 'false'로 설정하고 run.googleapis.com/ambient-scope 주석을 삭제합니다.

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

    gcloud run services replace service.yaml

    gcloud run services replace 명령어는 service.yaml 파일이 있는 경우 기본적으로 이 파일을 사용합니다.

앰비언트 네트워킹 설정 보기

Cloud Run 서비스의 현재 앰비언트 네트워킹 설정을 보려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 Cloud Run 서비스 페이지로 이동합니다.

    Cloud Run으로 이동

  2. 서비스를 클릭하여 서비스 세부정보 페이지를 엽니다.

  3. 네트워킹 탭을 클릭합니다.

  4. 앰비언트 네트워킹 카드에서 범위 설정을 확인합니다.

gcloud

  1. 다음 명령어를 사용하세요.

    gcloud beta run services describe SERVICE \
       --region=REGION
  2. 반환된 구성에서 run.googleapis.com/ambient-networking 및 run.googleapis.com/ambient-scope 주석을 찾습니다.

다음 단계