프로젝트 간 참조 설정

이 문서는 Google Cloud 서비스 라우팅 API를 사용하는 Cloud Service Mesh에만 적용됩니다. Istio API로 Cloud Service Mesh를 구성하는 경우에는 이 문서를 따르지 마세요.

일부 시나리오의 서비스 메시 구성에는 서로 다른 프로젝트에 있는 서비스가 포함됩니다. 예를 들어 공유 VPC 또는 피어링된 VPC 배포에서 각 프로젝트 소유자가 자체 서비스 집합을 정의하여 이러한 서비스를 다른 모든 프로젝트에서 사용할 수 있습니다.

메시 리소스를 사용한 프로젝트 간 구성
Mesh 리소스를 사용한 프로젝트 간 구성(확대하려면 클릭)

여러 프로젝트에 정의된 여러 리소스가 조합되어 Envoy 프록시 또는 프록시리스 gRPC에 제공될 수 있는 단일 구성을 형성하기 때문에 이 구성을 교차 프로젝트 구성이라고 합니다.

다음 안내에서는 MeshHTTPRoute 리소스를 사용하지만 Gateway, GRPCRoute, TCPRoute 리소스에도 적용할 수 있습니다.

Mesh 리소스 구성

프로젝트를 Mesh 리소스를 관리하는 호스트 프로젝트로 지정합니다. 이 프로젝트에서 Mesh 리소스를 생성, 업데이트 또는 삭제할 권한이 있는 모든 서비스 계정은 이 프로젝트의 Mesh 리소스에 연결된 라우팅 구성을 제어할 수 있습니다.

  1. shared-mesh.yaml 파일에서 Mesh 사양을 만듭니다.

    name: shared-mesh
    interceptionPort: 15001
    
  2. 이 프로젝트에서 Mesh 리소스를 정의합니다.

    gcloud network-services meshes import shared-mesh \
      --source=shared-mesh.yaml \
      --location=global
    
  3. 서비스 소유자가 이 Mesh에 경로를 연결할 URI가 필요하므로 Mesh 리소스의 전체 URI를 기록해 둡니다.

    /projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh
    
  4. 서비스 정보를 Mesh에 연결할 수 있어야 하는 교차 프로젝트 서비스 계정에 이 Meshnetworkservices.meshes.use IAM 권한을 부여합니다.

    gcloud projects add-iam-policy-binding [HOST_PROJECT_NUMBER]
      --member='[HTTP_ROUTE_SERVICE_OWNER_ACCOUNT]'
      --role='roles/compute.networkAdmin'
    

networkservices.meshes.use 권한이 부여된 모든 서비스 소유자는 이 Mesh 리소스에 라우팅 규칙을 추가할 수 있습니다.

서비스 프로젝트에서 라우팅 설정

각 서비스 소유자는 사이드카 프록시 구성 가이드의 예시와 비슷하게 해당 프로젝트에 하나 이상의 백엔드 서비스 및 Route 리소스를 만들어야 합니다. 유일한 차이점은 각 HTTPRoute, GRPCRoute 또는 TCPRoute 리소스에는 meshes 필드에 호스트 프로젝트의 Mesh 리소스 URI가 있어야 한다는 점입니다.

  1. 다음을 사용하여 meshes 필드를 채웁니다. 프로젝트 ID 또는 프로젝트 번호를 사용할 수 있습니다.

    echo "name: sharedvpc-http-route
    hostnames:
    - helloworld-gce
    meshes:
    - /projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh
    rules:
    - action:
        destinations:
        - serviceName: \"url/of/the/service\"" | \
    gcloud network-services http-routes import sharedvpc-http-route \
        --source=- \
        --location=global
    

서비스 프로젝트에서 클라이언트 서비스 만들기

서비스 프로젝트에 있는 Cloud Service Mesh 클라이언트를 구성할 때 부트스트랩 구성은 Mesh 리소스가 있는 프로젝트 번호와 Mesh 이름을 지정해야 합니다. 이 요구사항은 Envoy 프록시프록시리스 gRPC 배포 모두에 적용됩니다. Envoy 배포의 경우 --service-proxy:project-number 옵션을 사용합니다.

다음 단계

  • Mesh 또는 Gateway 리소스와 연결된 경로 리소스 나열에 관한 자세한 내용은 Route 리소스 나열을 참조하세요. 이 기능은 미리보기 버전으로 제공됩니다.