워크로드 VM에 인터넷 액세스 구성

Google Cloud VMware Engine의 VMware 워크로드용 인터넷 액세스 네트워크 서비스를 리전 단위로 구성합니다. Google Cloud의 인터넷 에지 또는 온프레미스 연결을 사용하여 워크로드 VM에서 인터넷 연결 트래픽을 전달할 수 있습니다.

인터넷에 액세스할 수 있는 워크로드 VM은 비공개 Google 액세스를 사용하여 Google Cloud 서비스에 액세스할 수도 있습니다. 비공개 Google 액세스를 사용한 Google Cloud 서비스 액세스는 Google Cloud 네트워크 내에 유지되며 인터넷으로 이탈하지 않습니다.

인터넷 액세스 네트워크 서비스는 다음을 지원합니다.

  • 리전당 공개 IP 주소 최대 100개
  • 방화벽 테이블당 방화벽 규칙 최대 300개
  • 리전당 128,000개 동시 연결에서 최대 2Gbps의 처리량
  • TCP, UDP, ICMP 프로토콜

인터넷 액세스 네트워크 서비스는 ALG(애플리케이션 수준 게이트웨이) 기능을 지원하지 않습니다.

시작하기 전에

프라이빗 클라우드의 인터넷 액세스 설정을 변경하려면 VMware Engine에 대한 관리자 액세스 권한이 있어야 합니다.

인터넷 액세스를 사용 설정하려면 에지 서비스 CIDR 주소 범위가 필요합니다. 인터넷 액세스 또는 공개 IP 네트워크 서비스를 사용 설정하면 게이트웨이가 서비스 테넌트 컨텍스트에 배포됩니다.

VMware Engine 인터넷 및 공개 IP 게이트웨이 주소 지정에 에지 서비스 CIDR 주소 범위를 사용합니다. 주소 범위는 다음 요구사항을 충족해야 합니다.

  • 비공개 범위로 RFC 1918을 준수합니다.
  • 관리 어플라이언스 또는 NSX-T 세그먼트에 사용되는 IP 주소 범위와 같이 다른 VMware Engine IP 주소 범위와 겹치지 않습니다.
  • Virtual Private Cloud(VPC) 네트워크 서브넷이나 온프레미스 네트워크에 사용되는 주소처럼 VMware Engine에 공지된 주소 범위와 겹치지 않아야 합니다.
  • 26개의 서브넷 마스크 비트(/26)로 IP 주소 범위를 표시하세요.

Google Cloud CLI 및 API 요구사항

gcloud 명령줄 도구나 API를 사용하여 VMware Engine 리소스를 관리하려면 다음 설명대로 도구를 구성하는 것이 좋습니다.

gcloud

  1. 기본 프로젝트 ID를 설정합니다.

    gcloud config set project PROJECT_ID
    
  2. 기본 리전 및 영역을 설정합니다.

    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE

gcloud vmware 도구에 대한 자세한 내용은 Cloud SDK 참조 문서를 검토하세요.

API

이 문서 집합의 API 예시는 cURL 명령줄 도구를 사용하여 API를 쿼리합니다. cURL 요청의 일부로 유효한 액세스 토큰이 필요합니다. 유효한 액세스 토큰을 가져오는 방법에는 여러 가지가 있습니다. 다음 단계에서는 gcloud 도구를 사용하여 액세스 토큰을 생성합니다.

  1. Google Cloud에 로그인합니다.

    gcloud auth login
    
  2. 액세스 토큰을 생성하여 TOKEN으로 내보냅니다.

    export TOKEN=`gcloud auth print-access-token`
    
  3. TOKEN이 제대로 설정되었는지 확인합니다.

    echo $TOKEN
    
    Output:
    TOKEN
    

이제 API에 대한 요청에 승인 토큰을 사용합니다. 예를 들면 다음과 같습니다.

curl -X GET -H "Authorization: Bearer \"$TOKEN\""  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

이 문서의 Python 코드 샘플은 VMware Engine 라이브러리를 사용하여 API와 통신합니다. 이 접근 방식을 사용하려면 라이브러리를 설치해야 하며 애플리케이션 기본 사용자 인증 정보를 구성해야 합니다.

  1. Python 라이브러리 다운로드 및 설치

     pip install google-cloud-vmwareengine
    
  2. 셸에서 명령어를 실행하여 ADC 정보를 구성하거나

      gcloud auth application-default login
    

    서비스 계정 키 파일을 사용합니다.

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

라이브러리에 대한 자세한 내용은 참조 페이지를 확인하거나 GitHub의 코드 샘플을 확인하세요.

인터넷 액세스 서비스 구성

네트워크 정책을 만들거나 업데이트하여 워크로드 VM이 인터넷에 액세스하도록 허용할 수 있습니다.

인터넷 액세스 네트워크 서비스는 기본적으로 사용 중지되어 있습니다.

리전에서 인터넷 액세스 서비스 사용 설정

콘솔

리전에서 인터넷 액세스 서비스를 사용 설정하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에 액세스합니다.
  2. 기본 탐색 메뉴에서 네트워크 정책으로 이동합니다.
  3. 만들기를 클릭하여 새 정책을 만듭니다. 기존 네트워크 정책을 수정하려면 행 끝에 있는 더보기 아이콘을 클릭하고 수정을 선택합니다.
  4. 정책이 적용되는 네트워크 및 리전 선택을 포함하여 네트워크 정책의 세부정보를 입력합니다.
  5. 인터넷 액세스사용 설정됨으로 전환하고 선택적으로 외부 IP 주소 서비스를 사용 설정합니다.

  6. 에지 서비스 CIDR 필드에 VMware Engine 인터넷 게이트웨이 주소를 지정할 때 사용할 주소 범위(/26 주소 범위)를 입력합니다.

  7. 만들기를 클릭합니다.

작업이 완료되면 일반적으로 몇 분 후 서비스 상태가 사용 설정됨으로 변경됩니다.

gcloud

gcloud 도구로 다음 명령어를 실행하여 네트워크 정책을 만듭니다.

gcloud vmware network-policies create NETWORK_POLICY_NAME \
    --vmware-engine-network projects/PROJECT_ID/locations/LOCATIONS/vmwareEngineNetworks/NETWORK_ID \
    --edge-services-cidr=IP_RANGE \
    --location=LOCATION \
    --internet-access

다음을 바꿉니다.

  • NETWORK_POLICY_NAME: 이 네트워크 정책의 이름입니다.
  • NETWORK_ID: 이 네트워크 정책이 적용되는 네트워크입니다.
  • IP_RANGE: 인터넷 액세스 및 외부 IP 액세스 게이트웨이에 사용할 CIDR 범위(CIDR 표기법 사용). '/26' 프리픽스가 있는 RFC 1918 CIDR 블록이 필요합니다.
  • LOCATION: 기존 네트워크 또는 표준 네트워크의 리전인 경우 global입니다.

API

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME

'{
  "vmwareEngineNetwork":"projects/PROJECT_ID/locations/LOCATION/vmwareEngineNetworks/NETWORK_ID",
  "edgeServiceCidr":IP_RANGE,
  "internetAccess: {
    "enabled": true
   },
   "externalIp": {
     "enabled": true
   }
}"

다음을 바꿉니다.

  • NETWORK_POLICY_NAME: 이 네트워크 정책의 이름. 이 값은 REGION-default 형식이어야 합니다.
  • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
  • LOCATION: 기존 네트워크 또는 표준 네트워크의 리전인 경우 global입니다.
  • IP_RANGE: 인터넷 액세스 및 외부 IP 액세스 게이트웨이에 사용할 CIDR 범위(CIDR 표기법 사용). '/26' 프리픽스가 있는 RFC 1918 CIDR 블록이 필요합니다.
  • NETWORK_ID: 이 네트워크 정책의 네트워크입니다.

Python

from google.api_core import operation
from google.cloud import vmwareengine_v1

def create_network_policy(
    project_id: str,
    region: str,
    ip_range: str,
    internet_access: bool,
    external_ip: bool,
) -> operation.Operation:
    """
    Creates a new network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1"
        ip_range: the CIDR range to use for internet access and external IP access gateways,
            in CIDR notation. An RFC 1918 CIDR block with a "/26" suffix is required.
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.

    Raises:
        ValueError if the provided ip_range doesn't end with /26.
    """
    if not ip_range.endswith("/26"):
        raise ValueError(
            "The ip_range needs to be an RFC 1918 CIDR block with a '/26' suffix"
        )

    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.edge_services_cidr = ip_range
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request = vmwareengine_v1.CreateNetworkPolicyRequest()
    request.network_policy = network_policy
    request.parent = f"projects/{project_id}/locations/{region}"
    request.network_policy_id = f"{region}-default"

    client = vmwareengine_v1.VmwareEngineClient()
    return client.create_network_policy(request)

리전에서 인터넷 액세스 서비스 사용 중지

리전에서 인터넷 액세스 서비스를 사용 중지하려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔에 액세스합니다.
  2. 기본 탐색 메뉴에서 네트워크 정책으로 이동합니다.
  3. 관련 네트워크 정책에 해당하는 행에서 더보기 아이콘을 클릭합니다.
  4. 인터넷 액세스사용 중지됨으로 전환합니다.

    • 인터넷 액세스를 사용 중지하려면 먼저 공개 IP 서비스를 사용 중지해야 합니다.
    • 공개 IP 서비스를 사용 중지하려면 먼저 할당된 공개 IP 주소와 지점 및 사이트 간 VPN 게이트웨이를 삭제해야 합니다.
  5. 저장을 클릭합니다.

작업이 완료되면 일반적으로 몇 분 후에 서비스 상태가 사용 중지됨으로 변경됩니다.

gcloud

gcloud 도구로 다음 명령어를 실행하여 네트워크 정책을 업데이트합니다.

gcloud vmware network-policies update NETWORK_POLICY_NAME \
  --no-internet-access \
  --location LOCATION

다음을 바꿉니다.

  • NETWORK_POLICY_NAME: 이 네트워크 정책의 이름입니다.
  • LOCATION: 기존 네트워크 또는 표준 네트워크의 리전인 경우 global입니다.

API

curl -X PATCH -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled -d "{
  "internetAccess: {
    "enabled": false
 },
  "externalIp": {
    "enabled": false
   }
}"

다음을 바꿉니다.

  • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
  • LOCATION: 기존 네트워크 또는 표준 네트워크의 리전인 경우 global입니다.
  • NETWORK_POLICY_NAME: 이 네트워크 정책의 이름입니다.

Python

from google.api_core import operation
from google.cloud import vmwareengine_v1

def update_network_policy(
    project_id: str, region: str, internet_access: bool, external_ip: bool
) -> operation.Operation:
    """
    Updates a network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1".
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.
    """

    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.UpdateNetworkPolicyRequest()
    request.update_mask = "internetAccess.enabled,externalIp.enabled"
    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.name = (
        f"projects/{project_id}/locations/{region}/networkPolicies/{region}-default"
    )
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request.network_policy = network_policy

    return client.update_network_policy(request)

워크로드 인터넷 액세스에 온프레미스 연결 사용

원하는 경우 온프레미스 연결을 통해 VMware Engine의 워크로드 VM에서 인터넷 연결 트래픽을 전달할 수 있습니다. 트래픽은 다음 상태를 기준으로 전달됩니다.

  • 온프레미스의 기본 경로(0.0.0.0/0) 공지
  • VMware Engine 공개 IP 서비스
  • VMware Engine 인터넷 액세스 서비스
  • VPC 네트워크 및 VMware Engine 간 VPC 피어링 연결의 VPC 서비스 제어

온프레미스 연결을 통한 인터넷 트래픽 라우팅 사용 설정

온프레미스 연결을 통해 워크로드 VM에서 인터넷에 액세스하려면 다음 두 단계를 완료해야 합니다.

  1. 온프레미스 연결(Cloud VPN 또는 Cloud Interconnect)을 통해 온프레미스의 기본 경로(0.0.0.0/0)를 공지합니다. VPN에 대한 온프레미스 연결이 종료되는 Cloud VPN 게이트웨이 또는 Cloud Router를 확인합니다.
  2. VMware Engine 네트워크의 인터넷 액세스 및 공개 IP 서비스를 중지합니다.

콘솔

  1. Google Cloud 콘솔에 액세스합니다.
  2. 기본 탐색 메뉴에서 네트워크 정책으로 이동합니다.
  3. 관련 네트워크 정책에 해당하는 행에서 더보기 아이콘을 클릭합니다.
  4. 공개 IP사용 중지됨으로 전환합니다.

  5. 인터넷 액세스사용 중지됨으로 전환합니다.

  6. 저장을 클릭합니다.

  7. 기존 VMware Engine 네트워크를 사용하는 경우: gcloud services vpc-peerings enable-vpc-service-controls 명령어를 사용하여 VPC 네트워크와 VMware Engine간의 VPC 피어링 연결에 대한 VPC 서비스 제어를 사용 설정합니다.

    gcloud services vpc-peerings enable-vpc-service-controls \
       --network=VPC_NETWORK \
       --service=servicenetworking.googleapis.com

gcloud

gcloud 도구로 다음 명령어를 실행하여 네트워크 정책을 업데이트합니다.

gcloud vmware network-policies update NETWORK_POLICY_NAME \
  --no-internet-access \
  --no-external-ip-address \
  --location LOCATION

다음을 바꿉니다.

  • NETWORK_POLICY_NAME: 이 네트워크 정책의 이름입니다.
  • LOCATION: 기존 네트워크 또는 표준 네트워크의 리전인 경우 global입니다.

기존 VMware Engine 네트워크를 사용하는 경우: gcloud services vpc-peerings enable-vpc-service-controls 명령어를 사용하여 VPC 네트워크와 VMware Engine간의 VPC 피어링 연결에 대한 VPC 서비스 제어를 사용 설정합니다.

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

API

curl -X PATCH -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled

"{
  "internetAccess: {
    "enabled": false
   },
  "externalIp: {
    "enabled": false
   }
}"

기존 VMware Engine 네트워크를 사용하는 경우: gcloud services vpc-peerings enable-vpc-service-controls 명령어를 사용하여 VPC 네트워크와 VMware Engine간의 VPC 피어링 연결에 대한 VPC 서비스 제어를 사용 설정합니다.

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK_NAME \
   --service=servicenetworking.googleapis.com

Python

internet_accessexternal_ipFalse로 설정합니다.

from google.api_core import operation
from google.cloud import vmwareengine_v1

def update_network_policy(
    project_id: str, region: str, internet_access: bool, external_ip: bool
) -> operation.Operation:
    """
    Updates a network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1".
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.
    """

    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.UpdateNetworkPolicyRequest()
    request.update_mask = "internetAccess.enabled,externalIp.enabled"
    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.name = (
        f"projects/{project_id}/locations/{region}/networkPolicies/{region}-default"
    )
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request.network_policy = network_policy

    return client.update_network_policy(request)

기존 VMware Engine 네트워크를 사용하는 경우: gcloud services vpc-peerings enable-vpc-service-controls 명령어를 사용하여 VPC 네트워크와 VMware Engine간의 VPC 피어링 연결에 대한 VPC 서비스 제어를 사용 설정합니다.

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

프로젝트에서 온프레미스 연결이나 VPC를 통해 인터넷 트래픽을 라우팅하려면 VPC 서비스 제어를 사용 설정해야 합니다.

VPC 서비스 제어가 사용 설정되면 Google Cloud는 서비스 프로듀서 VPC 네트워크(이 경우 VMware Engine과 피어링된 서비스 테넌트 프로젝트)에서 다음과 같이 라우팅을 변경합니다.

  • IPv4 기본 경로(대상 0.0.0.0/0, 다음 홉 기본 인터넷 게이트웨이)를 삭제합니다.
  • VPC 피어링 기본 경로를 사용하여 인터넷 트래픽 전달을 시작합니다.

예:

현재 프로젝트에서 'my-network'라는 네트워크를 피어링하는 연결에 VPC 서비스 제어를 사용 설정하려면 gcloud services vpc-peerings enable-vpc-service-controls 명령어를 사용합니다.

gcloud services vpc-peerings enable-vpc-service-controls \
    --network=my-network \
    --service=servicenetworking.googleapis.com

온프레미스 연결을 통한 인터넷 트래픽 라우팅 중지

온프레미스 연결을 통해 워크로드 VM에서 인터넷 트래픽 라우팅을 중지하려면 기본 경로(0.0.0.0/0) 공지를 중지하고 VPC 피어링 연결에서 VPC 서비스 제어를 중지합니다.

기존 VMware Engine 네트워크를 사용하는 경우: gcloud services vpc-peerings disable-vpc-service-controls 명령어를 사용하여 VPC 네트워크와 VMware Engine간의 VPC 피어링 연결에 대한 VPC 서비스 제어를 중지합니다.

gcloud services vpc-peerings disable-vpc-service-controls \
    --network=VPC_NETWORK_NAME \
    --service=servicenetworking.googleapis.com

다음 단계