공유 VPC 프로비저닝 해제

이 페이지에서는 기존 공유 VPC 구성의 프로비저닝을 해제하고 모든 서비스 프로젝트를 공유 VPC 호스트 프로젝트에서 연결 해제하는 방법에 대해 설명합니다. 프로비저닝 해제는 단방향 프로세스입니다. 먼저 공유 VPC 개요공유 VPC 프로비저닝 페이지를 숙지해야 합니다.

서비스 프로젝트 관리자 작업

공유 VPC 호스트 프로젝트에 연결된 각 서비스 프로젝트에서 서비스 프로젝트 관리자는 호스트 프로젝트의 모든 종속 항목을 제거해야 합니다. 종속 항목에는 인스턴스, 인스턴스 그룹, 인스턴스 템플릿, 부하 분산기 전달 규칙이 포함될 수 있습니다.

영향을 받는 리소스 결정

서비스 프로젝트 관리자는 공유 VPC 호스트 프로젝트에 의존하는 리소스를 식별하기 위해 해당 공유 서브넷을 나열할 수 있습니다. 서비스 프로젝트가 호스트 프로젝트에서 분리되면 이 서브넷을 더 이상 사용할 수 없게 됩니다. 따라서 이들에 의존하는 모든 리소스가 영향을 받습니다.

리소스 삭제

서비스 프로젝트 관리자가 프로비저닝 해제 프로세스의 영향을 받을 리소스를 식별하면 해당 리소스를 삭제해야 합니다.

공유 VPC 관리자 작업

이 섹션의 모든 작업은 공유 VPC 관리자가 수행해야 합니다.

서비스 프로젝트 분리

공유 VPC 호스트 프로젝트에서 분리해야 하는 각 서비스 프로젝트에 대해 이 단계를 반복합니다.

gcloud

  1. 아직 인증하지 않은 경우 gcloud를 공유 VPC 관리자로 인증합니다. SHARED_VPC_ADMIN을 공유 VPC 관리자의 이름으로 바꿉니다.

    gcloud auth login SHARED_VPC_ADMIN
    
  2. 호스트 프로젝트에서 서비스 프로젝트를 분리합니다. SERVICE_PROJECT_ID를 서비스 프로젝트의 프로젝트 ID로, HOST_PROJECT_ID를 호스트 프로젝트의 프로젝트 ID로 바꿉니다.

    조직 수준에서 공유 VPC 관리자 역할이 있는 경우

    gcloud compute shared-vpc associated-projects remove SERVICE_PROJECT_ID
        --host-project HOST_PROJECT_ID
    

    폴더 수준에서 공유 VPC 관리자 역할이 있는 경우

    gcloud beta compute shared-vpc associated-projects remove SERVICE_PROJECT_ID
        --host-project HOST_PROJECT_ID
    
  3. 다음 명령어 중 하나를 사용하여 서비스 프로젝트가 분리되었는지 확인합니다.

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  4. 서비스 프로젝트만 분리해야 하는 경우 gcloud에서 로그아웃하여 공유 VPC 관리자 계정 사용자 인증 정보를 보호합니다. 그렇지 않으면 이 단계를 건너 뛰고 호스트 프로젝트를 사용 중지를 계속 진행합니다.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. 서비스 프로젝트를 분리합니다.

    • 조직 수준에 공유 VPC 관리자 역할이 있는 경우 v1 API를 사용합니다.

      POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnResource
      {
      "xpnResource": {
        "id": "SERVICE_PROJECT_ID"
      }
      }
      
    • 폴더 수준에 공유 VPC 관리자 역할이 있는 경우 베타 API를 사용합니다.

      POST https://compute.googleapis.com/compute/beta/projects/HOST_PROJECT_ID/disableXpnResource
      {
      "xpnResource": {
        "id": "SERVICE_PROJECT_ID"
      }
      }
      

    자리표시자를 유효한 값으로 바꿉니다.

    • HOST_PROJECT_ID는 호스트 프로젝트의 ID입니다.
    • SERVICE_PROJECT_ID는 분리할 서비스 프로젝트의 ID입니다.

    자세한 내용은 projects.disableXpnResource 메서드를 참조하세요.

  2. 서비스 프로젝트가 분리되었는지 확인합니다.

    • 서비스 프로젝트가 호스트 프로젝트에 연결되어 있지 않은지 확인합니다.

      GET https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/getXpnHost
      

      SERVICE_PROJECT_ID를 서비스 프로젝트 ID로 바꿉니다.

      자세한 내용은 projects.getXpnHost 메서드를 참조하세요.

    • 공유 VPC 호스트 프로젝트에 연결된 서비스 프로젝트를 나열하여 프로젝트가 더 이상 표시되지 않는지 확인합니다.

      GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
      

      HOST_PROJECT_ID를 호스트 프로젝트 ID로 바꿉니다.

      자세한 내용은 projects.getXpnResources 메서드를 참조하세요.

호스트 프로젝트 사용 중지

호스트 프로젝트에 대해 공유 VPC를 사용 중지하는 것은 모든 서비스 프로젝트가 분리된 후에만 가능합니다. 사용 중지하고 나면, 쉽게 삭제되지 않도록 하는 선취권이 자동으로 제거됩니다.

gcloud

  1. 아직 인증하지 않은 경우 gcloud를 공유 VPC 관리자로 인증합니다. SHARED_VPC_ADMIN을 공유 VPC 관리자의 이름으로 바꿉니다.

    gcloud auth login SHARED_VPC_ADMIN
    
  2. 호스트 프로젝트에 대해 공유 VPC를 사용 중지합니다. HOST_PROJECT_ID를 호스트 프로젝트 ID로 바꿉니다.

    조직 수준에서 공유 VPC 관리자 역할이 있는 경우

    gcloud compute shared-vpc disable HOST_PROJECT_ID
    

    폴더 수준에서 공유 VPC 관리자 역할이 있는 경우

    gcloud beta compute shared-vpc disable HOST_PROJECT_ID
    
  3. 프로젝트가 더 이상 조직의 호스트 프로젝트로 나열되지 않는지 확인합니다. ORG_ID를 조직 ID로 바꿉니다(gcloud organizations list로 확인).

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. 호스트 프로젝트만 사용 중지해야 하는 경우 gcloud에서 로그아웃하여 공유 VPC 관리자 사용자 인증 정보를 보호할 수 있습니다. 그렇지 않으면 이 단계를 건너뛰고 프로젝트 삭제를 계속 진행합니다.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. 프로젝트에 대해 공유 VPC를 사용 중지합니다.

    • 조직 수준에 공유 VPC 관리자 역할이 있는 경우 v1 API를 사용합니다.

      POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnHost
      
    • 폴더 수준에 공유 VPC 관리자 역할이 있는 경우 베타 API를 사용합니다.

      POST https://compute.googleapis.com/compute/beta/projects/HOST_PROJECT_ID/disableXpnHost
      

    HOST_PROJECT_ID를 호스트 프로젝트 ID로 바꿉니다.

    자세한 내용은 projects.disableXpnHost 메서드를 참조하세요.

  2. 호스트 프로젝트를 나열하여 프로젝트가 목록에 없는지 확인합니다.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
    

    HOST_PROJECT_ID를 호스트 프로젝트 ID로 바꿉니다.

    자세한 내용은 projects.listXpnHosts 메서드를 참조하세요.

프로젝트 삭제

이 섹션에서는 더 이상 사용되지 않는 프로젝트 삭제에 대해 설명합니다. 예를 들어 호스트 프로젝트에서 분리된 후에 삭제해야 하는 서비스 프로젝트가 있거나 사용이 중지되면 더 이상 호스트 프로젝트가 필요하지 않을 수 있습니다.

호스트 프로젝트 삭제

일반 프로젝트로 유지하거나 종료할 수 있습니다. 프로젝트를 종료하면 삭제됩니다.

조직에서 정의된 모든 IAM 구성원은 해당 구성원에게 조직의 resourcemanager.projectDeleter 역할이 있거나 해당 구성원이 호스트 프로젝트의 소유자일 때 호스트 프로젝트를 삭제할 수 있습니다. 공유 VPC 관리자는 올바른 역할 또는 소유권이 있으면 호스트 프로젝트를 삭제할 수 있습니다.

서비스 프로젝트 삭제

더 이상 필요하지 않은 경우 각 서비스 프로젝트를 종료할 수 있습니다. 그렇게 하기 전에 서비스 프로젝트가 호스트 프로젝트에서 분리되었는지 확인합니다.

조직에서 정의된 모든 IAM 구성원은 해당 구성원에게 조직의 resourcemanager.projectDeleter 역할이 있거나 해당 구성원이 서비스 프로젝트의 소유자일 때 서비스 프로젝트를 삭제할 수 있습니다. 서비스 프로젝트 관리자는 올바른 역할이나 소유권이 있는 서비스 프로젝트를 삭제할 수 있습니다.

강제로 호스트 프로젝트 삭제

공유 VPC가 호스트 프로젝트에 대해 활성 상태인 동안 실수로 삭제되지 않도록 프로젝트에 선취권이 적용됩니다. 이 유치권은 프로젝트 소유자가 제거 할 수 있으므로 공유 VPC를 프로비저닝하는 가이드라인에는 프로젝트 선취권을 제거할 수 있는 IAM 구성원을 제한하는 조직 정책을 정의하는 단계가 포함됩니다.

일반적으로 호스트 프로젝트는 다음 작업이 이 순서대로 완료된 후에 삭제해야 합니다.

  • 호스트 프로젝트에서 모든 서비스 프로젝트가 분리되었습니다.
  • 공유 VPC가 사용 중지되었습니다.

공유 VPC가 사용 중지되면 호스트 프로젝트를 보호하는 선취권이 자동으로 제거됩니다.

이 섹션에서는 호스트 프로젝트를 강제로 종료하는 방법을 자세히 설명합니다. 다음과 같은 경우에만 이 옵션을 고려해야 합니다.

  • 서비스 프로젝트를 분리하고 공유 VPC를 사용 중지하는 일반적인 단계를 수행할 수 없는 경우
  • 호스트 프로젝트가 자동으로 추가되는 것 이외에 호스트 프로젝트를 보호하는 추가 선취권이 있는 경우

호스트 프로젝트를 강제 종료하고 공유 VPC 네트워크를 사용하는 서비스 프로젝트에 리소스가 있는 경우 다음과 같은 이벤트가 발생합니다.

  • 모든 공유 VPC 네트워크, 해당 서브넷, 경로, 방화벽 규칙, 호스트 프로젝트의 모든 네트워킹 리소스가 삭제됩니다.
  • 호스트 프로젝트에 연결된 서비스 프로젝트에서 인스턴스 실행과 같은 리소스는 중지됩니다.
  • 전달 규칙이 공유 VPC 네트워크에 종속되는 경우 내부 TCP/UDP 부하 분산기는 사용 중지됩니다.

gcloud

  1. 프로젝트 선취권을 제거할 수 있는 IAM 구성원으로 gcloud를 인증합니다. 선취권을 제거할 수 있는 구성원을 제한하는 조직 정책이 있다면, 조직의 resourcemanager.lienModifier 역할이 있는 IAM 구성원으로 인증해야 합니다. 이와 같은 정책이 마련되지 않으면 호스트 프로젝트의 프로젝트 소유자가 선취권을 제거할 수 있습니다.

    ACCOUNT를 해당 IAM 구성원의 이름으로 바꿉니다.

    gcloud auth login ACCOUNT
    
  2. 호스트 프로젝트에 연결된 선취권을 나열합니다. HOST_PROJECT_ID를 호스트 프로젝트 ID로 바꿉니다.

    gcloud alpha resource-manager liens list \
    --project HOST_PROJECT_ID
    
  3. 선취권이 없을 때까지 한 번에 하나씩 이름별로 선취권을 제거합니다. LIEN_NAME을(를) 제거할 선취권의 이름으로 바꿉니다.

    gcloud alpha resource-manager liens delete LIEN_NAME \
    --project HOST_PROJECT_ID
    
  4. 모든 선취권이 제거되었는지 확인합니다.

    gcloud alpha resource-manager liens list \
    --project HOST_PROJECT_ID
    
  5. 선취권을 제거한 후 gcloud에서 로그아웃하면 선취권을 제거할 권한이 있는 IAM 구성원의 사용자 인증 정보를 보호할 수 있습니다.

    gcloud auth revoke ACCOUNT
    
  6. 이제 호스트 프로젝트를 종료할 수 있습니다.

API

  1. 호스트 프로젝트에 연결된 선취권을 나열합니다.

    GET https://cloudresourcemanager.googleapis.com/v1/liens?parent=projects:HOST_PROJECT_ID
    

    HOST_PROJECT_ID를 호스트 프로젝트 ID로 바꿉니다.

    자세한 내용은 liens.list 메서드를 참조하세요.

  2. 선취권이 없을 때까지 이름별로 각 선취권을 제거합니다.

    DELETE https://cloudresourcemanager.googleapis.com/v1/liens/LIEN_NAME
    

    LIEN_NAME을 삭제할 선취권의 이름으로 바꿉니다.

    자세한 내용은 liens.delete 메서드를 참조하세요.

  3. 선취권을 다시 나열하여 선취권이 삭제되었음을 확인합니다.

다음 단계