관리형 Anthos Service Mesh의 VPC 서비스 제어

관리형 Anthos Service Mesh는 출시 버전이 1.22.1-gke.100 이상인 GKE 클러스터에 대해 모든 Anthos Service Mesh 채널에서 VPC Service Controls(VPC-SC) 미리보기를 지원합니다.

시작하기 전에

VPC-SC 조직 정책과 서비스 경계는 조직 수준에서 구성됩니다. VPC-SC 관리에 적합한 역할을 부여받았는지 확인합니다.

org-policy 구성

  1. 조직 관리자는 이 섹션에 설명된 대로 org-policy를 구성해야 합니다. 그렇지 않으면 VPC-SC가 적용되지 않습니다. 조직 또는 개별 프로젝트에 대한 org-policy를 편집하고 콘솔 또는 다음 gcloud 명령어를 사용하여 'ASM 관리형 제어 영역에 허용되는 VPC-SC 모드' 제약 조건을 '호환 가능'으로 설정합니다.

    gcloud resource-manager org-policies allow \
      meshconfig.allowedVpcscModes COMPATIBLE \
      --project=PROJECT_ID

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_ID는 업데이트할 프로젝트의 ID입니다.

    또는

    gcloud resource-manager org-policies allow \
      meshconfig.allowedVpcscModes COMPATIBLE \
      --organization=ORGANIZATION_ID

    각 항목의 의미는 다음과 같습니다.

    • ORGANIZATION_ID는 업데이트할 조직의 ID입니다.

VPC-SC 서비스 경계 설정

서비스 경계를 만들거나 업데이트합니다.

  1. 서비스 경계에 프로젝트를 추가합니다. 프로젝트가 여러 개인 경우 서비스 경계에 각 프로젝트를 포함할 수 있습니다.

  2. 서비스 경계에 제한된 서비스를 추가합니다.

    Anthos Service Mesh 클러스터에서 서비스 경계에 액세스할 수 있도록 특정 서비스를 서비스 경계의 허용 및 제한된 서비스 목록에 추가해야 합니다. 이러한 서비스에 대한 액세스는 클러스터의 Virtual Private Cloud(VPC) 네트워크 내에서도 제한됩니다.

    이러한 서비스를 추가하지 않으면 Anthos Service Mesh 설치가 실패하거나 올바르게 작동하지 않을 수 있습니다. 예를 들어 Mesh Configuration API를 서비스 경계에 추가하지 않으면 설치가 실패하고 워크로드는 관리형 제어 영역에서 Envoy 구성을 수신하지 않습니다.

    Console

    1. 서비스 경계 업데이트의 단계에 따라 경계를 수정합니다.
    2. VPC 서비스 경계 수정 페이지를 클릭합니다.
    3. 제한된 서비스, 보호할 서비스에서 서비스 추가를 클릭합니다.
    4. 제한할 서비스 지정 대화상자에서 서비스 필터링을 클릭하고 Mesh Configuration API를 입력합니다.
    5. 서비스 체크박스를 선택합니다.
    6. Mesh Configuration API 추가를 클릭합니다.
    7. 3~6단계를 반복하여 Cloud Service Mesh Certificate Authority API ,GKE Hub API ,Cloud IAM API ,Stackdriver Logging API ,Cloud Trace API ,Cloud Monitoring API ,Google Cloud Resource Manager API ,Cloud Run API ,Google Compute Engine API ,Google Container Registry API ,Artifact Registry API ,Google Cloud Storage API에 추가합니다.
    8. 저장을 클릭합니다.

    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,run.googleapis.com,compute.googleapis.com,containerregistry.googleapis.com,artifactregistry.googleapis.com,storage.googleapis.com \
      --policy=POLICY_NAME

    각 항목의 의미는 다음과 같습니다.

    • PERIMETER_NAME은 업데이트할 서비스 경계의 이름입니다.

    • POLICY_NAME은 조직의 액세스 정책의 숫자 이름입니다. 330193482019).

  3. VPC 액세스 가능 서비스를 클릭하고 '제한된 모든 서비스'로 설정하면 위 단계에서 제한된 서비스가 VPC-SC 경계 내에서 계속 액세스할 수 있습니다.

  4. asmcli 명령어가 실행되는 ID에서 서비스 경계에 액세스할 수 있도록 인그레스 규칙을 추가합니다.

    자세한 내용은 서비스 경계 업데이트를 참조하세요.

VPC-SC 경계에 관리형 ASM 설치

이 섹션에는 조직 관리자 권한이 필요하지 않지만 설치 중에 추가 플래그 --use-vpcsc를 사용해야 하므로 VPC-SC 정책을 준수해야 합니다. 그렇지 않으면 설치 시 보안 제어에 실패합니다.

관리형 Anthos Service Mesh 구성 페이지의 단계를 따릅니다. 그런 다음 제어 영역이 성공적으로 프로비저닝되었는지 확인하고 VPC-SC 관련 오류가 없는지 확인합니다.

문제 해결하기

최신 GKE 1.22 이미지로 클러스터를 만들 수 없습니다.

VPC-SC 제한 환경에서 최신 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-SC 오류가 표시됩니다.

설치 중에 '--use-vpcsc' 플래그를 사용하지 않았으면 이 오류가 발생할 수 있습니다. 이러한 경우 다시 실행하는 것이 안전합니다.

또는 다음 명령어를 실행하여 오류에 대한 자세한 정보를 확인합니다.

gcloud logging read --project=PROJECT_ID \
'protoPayload.metadata.@type=type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata'

각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID는 오류가 발생한 프로젝트의 프로젝트 ID입니다.