VPC 네트워크에 환경 연결

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

이 페이지에서는 환경에서 Cloud Composer 3의 VPC 네트워크에 액세스하는 방법, 환경을 VPC 네트워크에 연결하는 방법, 이전에 구성한 연결을 사용 중지하는 방법을 설명합니다.

VPC 네트워크 액세스 정보

Cloud Composer 3에서는 환경에 대한 VPC 네트워크 액세스를 사용 설정할 수 있습니다.

환경에 대한 VPC 네트워크 액세스를 사용 설정하는 경우:

  • 환경의 Airflow 구성요소는 VPC 네트워크의 비공개 네트워크 엔드포인트에 액세스할 수 있습니다. 예를 들어 DAG 코드는 구성된 Airflow 연결을 통해 VPC 네트워크에 있는 리소스에 액세스할 수 있습니다.

  • 환경에 비공개 IP 네트워킹이 사용될 경우 비공개 Google 액세스를 통해 비공개 IP 환경에서 사용할 수 있는 Google API, 서비스, 도메인에 대한 트래픽을 제외한 모든 내부 트래픽이 VPC 네트워크로 라우팅됩니다.

  • VPC 네트워크 구성 방법에 따라 비공개 IP 환경은 VPC 네트워크를 통해 인터넷에 액세스할 수 있습니다.

  • VPC 네트워크에 정의된 비공개 DNS 영역은 환경의 Airflow 구성요소에서 자동으로 사용할 수 있게 됩니다.

  • 환경은 VPC 서브네트워크에서 IP 주소 2개를 예약합니다.

Cloud Composer는 네트워크 연결을 사용하여 환경을 VPC 네트워크에 연결합니다.

  • VPC 네트워크와 서브네트워크를 지정하면 Cloud Composer가 프로젝트에 새 네트워크 연결을 만듭니다. 이 연결은 환경을 삭제하거나 VPC 네트워크에 대한 연결을 사용 중지하거나 VPC 연결 파라미터를 덮어쓰면 삭제됩니다.

  • 기존 네트워크 연결을 지정하는 경우 환경과 동일한 프로젝트에 있어야 합니다. 환경을 삭제하거나 연결을 사용 중지하거나 VPC 연결 파라미터를 덮어쓴 후에도 이 연결은 삭제되지 않습니다.

  • 공유 VPC 네트워킹에서:

    • Cloud Composer에 대해 공유 VPC 네트워킹을 구성했는지 확인합니다. Cloud Composer의 프로젝트 및 권한 구성에 대한 자세한 내용은 공유 VPC 구성을 참조하세요.

    • 공유 VPC 네트워킹이 구성되면 호스트 프로젝트에서 환경을 VPC 네트워크에 연결할 수 있습니다. 기존 네트워크 연결을 사용하는 경우 서비스 프로젝트(환경이 있는 위치)에서 생성하고 공유 VPC 네트워크에 연결해야 합니다.

환경의 내부 IP 범위 정보

Cloud Composer 3 환경에서는 환경의 클러스터 및 Cloud SQL 프록시와 같이 테넌트 프로젝트에서 실행되는 구성요소를 위한 여러 IP 주소가 필요합니다. 이러한 IP 주소는 환경의 내부 IP 범위에서 가져옵니다.

  • 기본 내부 IP 범위는 100.64.128.0/20입니다.

  • 환경을 만들 때 다른 내부 IP 범위를 지정할 수 있습니다. 이 범위는 /20 마스크를 사용해야 합니다.

  • 기존 환경의 내부 IP 범위는 변경할 수 없습니다.

내부 IP 범위는 다음과 같은 방식으로 VPC 네트워크와 상호작용합니다.

  • 내부 IP 범위는 Cloud Composer 환경이 연결된 VPC 서브네트워크와 충돌해서는 안 됩니다. 내부 IP 범위와 겹치는 VPC 서브넷과의 연결을 사용 설정할 수 없습니다.

  • 환경의 내부 IP 범위가 VPC 네트워크 범위와 겹치는 경우 IP 주소가 겹치는 VPC 네트워크의 엔드포인트에는 환경에서 액세스할 수 없습니다.

    예를 들어 내부 범위가 100.64.128.0/20인 경우 요청이 테넌트 프로젝트를 벗어나지 않으므로 VPC 네트워크의 100.64.128.1 엔드포인트에 대한 요청이 실패합니다.

  • 내부 IP 범위가 예약되지 않았습니다. 서로 다른 환경에서 사용하는 내부 VPC 네트워크가 분리되어 있으므로 추가 설정 없이 여러 환경에 동일한 내부 IP 범위를 사용할 수 있습니다.

  • 환경의 DAG 및 태스크에서 내부 범위 IP 주소에 요청하지 않는 한 다른 용도로 내부 범위 IP 주소를 사용할 수 있습니다.

VPC 네트워크에 연결

콘솔

  1. Google Cloud 콘솔에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. 환경 목록에서 환경 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.

  3. 환경 구성 탭으로 이동합니다.

  4. 네트워크 구성 섹션에서 네트워크 연결 항목을 찾아 수정을 클릭합니다.

  5. 네트워크 연결 대화상자에서 다음을 수행합니다.

    • 새 네트워크 연결을 만들려면 네트워크 연결 목록에서 새 네트워크 연결 만들기를 선택합니다. 네트워크서브네트워크 목록에서 VPC 네트워크와 서브네트워크를 선택합니다.

    • 기존 네트워크 연결을 사용하려면 네트워크 연결 목록에서 연결을 선택합니다.

  6. 저장을 클릭합니다.

gcloud

다음 Google Cloud CLI 인수는 VPC 네트워크 연결 파라미터를 지정합니다.

  • --network: VPC 네트워크 ID입니다.
  • --subnetwork: VPC 서브네트워크 ID입니다.
  • --network-attachment: 기존 네트워크 연결을 대신 사용합니다.

새 네트워크 연결

새 네트워크 연결을 통해 환경을 VPC 네트워크에 연결하려면 다음 Google Cloud CLI 명령어를 실행합니다.

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --network NETWORK_ID \
  --subnetwork SUBNETWORK_ID

다음을 바꿉니다.

  • ENVIRONMENT_NAME: 환경의 이름입니다.
  • LOCATION: 환경이 위치한 리전입니다.
  • NETWORK_ID: VPC 네트워크 ID입니다.
  • SUBNETWORK_ID: VPC 서브네트워크 ID입니다.

예를 들면 다음과 같습니다.

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --network projects/example-project/global/networks/example-network \
  --subnetwork projects/example-project/regions/us-central1/subnetworks/example-subnetwork

기존 네트워크 연결

새 네트워크 연결을 통해 환경을 VPC 네트워크에 연결하려면 다음 Google Cloud CLI 명령어를 실행합니다.

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --network-attachment NETWORK_ATTACHMENT_ID

다음을 바꿉니다.

  • ENVIRONMENT_NAME: 환경의 이름입니다.
  • LOCATION: 환경이 위치한 리전입니다.
  • NETWORK_ATTACHMENT_ID: projects/{project}/regions/{region}/networkAttachments/{networkAttachment} 형식의 네트워크 연결입니다.

예를 들면 다음과 같습니다.

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --network-attachment projects/example-project/regions/us-central1/networkAttachments/example-network-attachment

API

  1. environments.patch API 요청을 만듭니다.

  2. 이 요청의 작성 방법:

    • 새 네트워크 연결을 만들려면 다음 단계를 따르세요.

      1. updateMask 매개변수에서 config.node_config.network,config.node_config.subnetwork 마스크를 지정합니다.

      2. 요청 본문의 networksubnetwork 필드에 VPC 네트워크 및 서브네트워크 ID를 지정합니다.

    • 기존 네트워크 연결을 사용하려면 다음 단계를 따르세요.

      1. updateMask 매개변수에서 config.node_config.composer_network_attachment 마스크를 지정합니다.

      2. 요청 본문에서 기존 네트워크 첨부파일의 값을 projects/{project}/regions/{region}/networkAttachments/{networkAttachment} 형식으로 제공합니다.

예시(새 네트워크 연결):

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork

"config": {
  "nodeConfig": {
    "network": "projects/example-project/global/networks/example-network",
    "subnetwork": "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
  }
}

예시(기존 네트워크 연결):

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.composer_network_attachment

"config": {
  "nodeConfig": {
    "composerNetworkAttachment": "projects/example-project/regions/us-central1/networkAttachments/example-network-attachment"
  }
}

Terraform

node_config 블록의 다음 필드는 VPC 네트워크 연결 파라미터를 지정합니다.

  • network: VPC 네트워크 ID입니다.
  • subnetwork: VPC 서브네트워크 ID입니다.
  • composer_network_attachment: 기존 네트워크 연결을 대신 사용합니다.

새 네트워크 연결

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {
      network = NETWORK_ID
      subnetwork = SUBNETWORK_ID
    }

  }
}

다음을 바꿉니다.

  • ENVIRONMENT_NAME: 환경의 이름입니다.
  • LOCATION: 환경이 위치한 리전
  • NETWORK_ID: VPC 네트워크 ID입니다.
  • SUBNETWORK_ID: VPC 서브네트워크 ID입니다.

예시(새 네트워크 연결):

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {
      network = "projects/example-project/global/networks/example-network"
      subnetwork = "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
    }

    ... other configuration parameters
  }
}

기존 네트워크 연결

따라서 환경에서 더 이상 첨부파일을 사용하지 않습니다. 이 문제를 해결하려면 다음과 같이 Terraform에서 첨부파일의 producer_accept_lists 매개변수 변경사항을 무시해야 합니다.

resource "google_compute_network_attachment" "NETWORK_ATTACHMENT_ID" {
  lifecycle {
    ignore_changes = [producer_accept_lists]
  }
  # ... other configuration parameters
}

그런 다음 환경에 이 첨부파일을 지정합니다. Terraform에서 관리되지 않는 첨부파일을 지정할 수도 있습니다(예 참고).

resource "google_composer_environment" "example" {
  name = "example-environment"
  region = "us-central1"
  config {
    node_config {
      composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id
    }
    # ... other configuration parameters
  }
}

다음을 바꿉니다.

  • ENVIRONMENT_NAME: 환경의 이름입니다.
  • LOCATION: 환경이 위치한 리전
  • NETWORK_ATTACHMENT_ID: 네트워크 연결 ID입니다.

예시(기존 네트워크 연결):

resource "google_compute_network_attachment" "example" {
  lifecycle {
    ignore_changes = [producer_accept_lists]
  }
  # ... other configuration parameters
}

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {
      # Attachment is managed in Terraform:

      composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id

      # Attachment is not managed in Terraform:

      # composer_network_attachment = projects/example-project/regions/us-central1/networkAttachments/example-network-attachment
    }
    # ... other configuration parameters
  }
}

VPC 네트워크 연결 사용 중지

콘솔

  1. Google Cloud 콘솔에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. 환경 목록에서 환경 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.

  3. 환경 구성 탭으로 이동합니다.

  4. 네트워크 구성 섹션에서 네트워크 연결 항목을 찾아 수정을 클릭합니다.

  5. 네트워크 연결 대화상자에서 없음을 선택하고 저장을 클릭합니다.

gcloud

--disable-vpc-connectivity 인수는 환경의 VPC 네트워크 연결을 사용 중지합니다.

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --disable-vpc-connectivity

다음을 바꿉니다.

  • ENVIRONMENT_NAME: 환경의 이름입니다.
  • LOCATION: 환경이 위치한 리전입니다.

예를 들면 다음과 같습니다.

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --disable-vpc-connectivity

API

  1. environments.patch API 요청을 만듭니다.

  2. 이 요청의 작성 방법:

    1. updateMask 매개변수에서 config.node_config.network,config.node_config.subnetwork 마스크를 지정합니다.

    2. 요청 본문의 networksubnetwork 필드에 빈 값을 지정합니다.

예를 들면 다음과 같습니다.

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork

"config": {
  "nodeConfig": {
    "network": "",
    "subnetwork": ""
  }
}

Terraform

Terraform을 사용하여 VPC 네트워크를 분리할 수는 없습니다. 대신 다른 VPC 네트워크를 연결하거나 Google Cloud CLI와 같은 다른 도구를 사용하여 네트워크를 연결 해제할 수 있습니다.

다음 단계