Cloud Service Mesh(관리형)의 VPC 서비스 제어
Cloud Service Mesh(관리형)는 새 컨트롤 플레인의 정식 버전(GA) 기능으로 VPC 서비스 제어를 지원합니다.
컨트롤 플레인이 VPC 서비스 제어 GA를 지원하는지 확인하려면 VPCSC_GA_SUPPORTED 조건에 대한 멤버십의 메시 기능 상태를 확인하세요.
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
출력은 다음과 비슷합니다.
(...) membershipStates: projects/FLEET_PROJECT_NUMBER/locations/MEMBERSHIP_LOCATION/memberships/MEMBERSHIP_ID: servicemesh: conditions: - code: VPCSC_GA_SUPPORTED details: This control plane supports VPC Service Controls GA. documentationLink: http://cloud.google.com/service-mesh/docs/managed/VPC Service Controls severity: INFO (...)
VPCSC_GA_SUPPORTED 조건을 보고하지 않는 기존 컨트롤 플레인이 있고 VPC 서비스 제어를 사용하려면 지원팀에 문의하세요.
시작하기 전에
VPC 서비스 제어 조직 정책 및 서비스 경계는 조직 수준에서 구성됩니다. VPC 서비스 제어를 관리하는 데 필요한 적절한 역할을 부여받았는지 확인합니다.
VPC 서비스 제어 서비스 경계 설정
서비스 경계를 만들거나 업데이트합니다.
서비스 경계에 클러스터 프로젝트 및 Fleet 프로젝트를 추가합니다. 여러 VPC 서비스 제어 경계에 서비스 메시를 분산하는 것은 지원되지 않습니다.
서비스 경계에 제한된 서비스를 추가합니다.
Cloud Service Mesh 클러스터에서 서비스 경계에 액세스할 수 있도록 특정 서비스를 서비스 경계의 허용 및 제한된 서비스 목록에 추가해야 합니다. 이러한 서비스에 대한 액세스는 클러스터의 Virtual Private Cloud(VPC) 네트워크 내에서도 제한됩니다.
이러한 서비스를 추가하지 않으면 Cloud Service Mesh 설치가 실패하거나 올바르게 작동하지 않을 수 있습니다. 예를 들어 Mesh Configuration API를 서비스 경계에 추가하지 않으면 설치가 실패하고 워크로드는 관리형 컨트롤 플레인에서 Envoy 구성을 수신하지 않습니다.
콘솔
- 서비스 경계 업데이트의 단계에 따라 경계를 수정합니다.
- VPC 서비스 경계 수정 페이지를 클릭합니다.
- 제한된 서비스, 보호할 서비스에서 서비스 추가를 클릭합니다.
- 제한할 서비스 지정 대화상자에서 서비스 필터링을 클릭하고 Mesh Configuration API를 입력합니다.
- 서비스 체크박스를 선택합니다.
- Mesh Configuration API 추가를 클릭합니다.
- c~f단계를 반복하여 다음을 추가합니다.
- Cloud Service Mesh Certificate Authority API
- GKE Hub API
- Cloud IAM API
- Cloud Monitoring API
- Cloud Trace API
- Cloud Monitoring API
- Google Cloud Resource Manager API
- Google Compute Engine API
- Google Container Registry API
- Artifact Registry API
- Google Cloud Storage API
- Cloud Logging API
- 보안 토큰 서비스 API
- 저장을 클릭합니다.
gcloud
제한된 서비스 목록을 업데이트하려면
update
명령어를 사용하여 쉼표로 구분된 목록으로 추가할 서비스를 지정합니다.gcloud access-context-manager perimeters update PERIMETER_NAME \ --add-restricted-services=meshconfig.googleapis.com,meshca.googleapis.com,gkehub.googleapis.com,iam.googleapis.com,monitoring.googleapis.com,cloudtrace.googleapis.com,monitoring.googleapis.com,cloudresourcemanager.googleapis.com,compute.googleapis.com,containerregistry.googleapis.com,artifactregistry.googleapis.com,storage.googleapis.com,logging.googleapis.com,sts.googleapis.com \ --policy=POLICY_NAME
각 항목의 의미는 다음과 같습니다.
PERIMETER_NAME: 업데이트할 서비스 경계의 이름
POLICY_NAME: 조직의 액세스 정책의 숫자 이름. 예를 들면
330193482019
입니다.
VPC 액세스 가능 서비스를 클릭하고 '제한된 모든 서비스'로 설정하면 위 단계에서 제한된 서비스가 VPC 서비스 제어 경계 내에서 계속 액세스할 수 있습니다.
경계 네트워크에서 Cloud Service Mesh를 설치하지 않는 한
asmcli
명령어를 실행하는 ID가 서비스 경계에 액세스할 수 있도록 인그레스 규칙을 추가합니다.자세한 내용은 서비스 경계 업데이트를 참조하세요.
VPC 서비스 제어 경계에 관리형 Cloud Service Mesh 설치
관리형 Cloud Service Mesh 구성 페이지의 단계를 따릅니다. 그런 다음 컨트롤 플레인이 성공적으로 프로비저닝되었는지 확인하고 VPC 서비스 제어 관련 오류가 없는지 확인합니다.
문제 해결
최신 GKE 1.22 이미지로 클러스터를 만들 수 없음
VPC 서비스 제어 제한 환경에서 최신 1.22 이미지로 클러스터를 만들지 못하게 하는 알려진 문제가 있습니다. 해결 방법은 먼저 기본 GKE 채널 이미지를 사용하여 이 클러스터를 만든 후 이미지를 업그레이드하는 것입니다.
gcloud container clusters create CLUSTER \ --region REGION \ --release-channel=rapid \ --workload-pool=PROJECT_ID.svc.id.goog \ --project PROJECT_ID
gcloud container clusters upgrade CLUSTER \ --region REGION \ --master --cluster-version 1.22 \ --project PROJECT_ID
컨테이너가 이미지를 다운로드할 수 없음
이미지가 서비스 경계 외부에 있으면 이 오류가 발생할 수 있습니다. 이미지를 경계 내에 있는 버킷으로 이동하거나 경계를 업데이트하여 이그레스 규칙을 추가합니다. 일반적으로 이그레스 규칙은 선택한 ID에서 Container Registry API, Artifact Registry API, Cloud Storage API에 액세스하도록 허용할 수 있습니다.
ControlPlaneRevision
CRD의 상태 필드에 VPC 서비스 제어 오류가 표시됨
다음 명령어를 실행하여 오류에 대한 자세한 정보를 확인하세요.
gcloud logging read --project=PROJECT_ID \ 'protoPayload.metadata.@type=type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata'
각 항목의 의미는 다음과 같습니다.
- PROJECT_ID: 오류가 발생한 프로젝트의 프로젝트 ID