Managed Airflow (第 3 代) | Managed Airflow (第 2 代) | Managed Airflow (舊版第 1 代)
本頁說明環境如何存取 Managed Airflow (第 3 代) 中的虛擬私有雲網路,並提供將環境連線至虛擬私有雲網路的操作說明,以及說明如何停用先前設定的連線。
如要為環境的 Airflow 元件啟用或停用網際網路存取權,請參閱「變更環境網路類型 (私人或公開 IP)」。
如要僅在安裝 PyPI 套件時停用或啟用網際網路存取權,請參閱「安裝 PyPI 套件時設定網際網路存取權」。
如要設定 Shared VPC 網路,請參閱「設定 Shared VPC」,瞭解如何設定專案和權限。
關於虛擬私有雲網路存取權
在 Managed Airflow (第 3 代) 中,您可以為環境啟用虛擬私有雲網路的存取權。
如果為環境啟用虛擬私有雲網路存取權:
環境的 Airflow 元件可以存取虛擬私有雲網路中的私人網路端點。舉例來說,您的 DAG 程式碼可以透過已設定的 Airflow 連線,存取虛擬私有雲網路中的資源。
如果您的環境使用私人 IP 網路,所有流量都會路由至您的虛擬私有雲端網路,但透過 Private Google Access 可供私人 IP 環境使用的 Google API、服務和網域除外。此外,這個方法還可讓 Airflow 元件連線至 GKE 中設定的私用公開 IP (PUPI),因為流量會透過虛擬私有雲網路傳送,而不是傳送至公用網際網路。
視虛擬私有雲網路的設定方式而定,私人 IP 環境可透過虛擬私有雲網路存取網際網路。
環境的 Airflow 元件會自動使用虛擬私有雲網路中定義的私人 DNS 區域。
環境會在 VPC 子網路中保留兩個 IP 位址,並在維護和升級期間使用兩個額外 IP 位址。請確認虛擬私有雲子網路中每個環境有四個 IP 位址。
Managed Airflow 會使用網路附件,將環境連線至虛擬私有雲網路:
如果您指定虛擬私有雲網路和子網路,Managed Airflow 會在專案中建立新的網路連結。刪除環境、停用與虛擬私有雲網路的連線,或覆寫虛擬私有雲連線參數後,系統就會刪除這個連結。
如果您指定現有網路附件,則該附件必須與環境位於相同專案。刪除環境、停用連線或覆寫 VPC 連線參數後,系統不會刪除這個附件。
在 Shared VPC 網路中:
確認您已為 Managed Airflow 設定 Shared VPC 網路。如要瞭解如何設定專案和 Managed Airflow 的權限,請參閱「設定 Shared VPC」。
設定 Shared VPC 網路後,即可將環境連線至主專案的虛擬私有雲網路。如要使用現有網路連結,必須在服務專案 (環境所在位置) 中建立,並連接至 Shared VPC 網路。
Managed Airflow (第 3 代) 中遞移 DNS 對等互連的限制
遞移 DNS 對等互連的限制適用於 Managed Airflow (第 3 代) 環境,方式如下:
- Cloud DNS 的遞移躍點限制為一個,也就是說總共只能有兩個躍點。
- 在 Managed Airflow (第 3 代) 中,環境的元件會在租戶專案中執行,並透過 DNS 對等互連與環境所在的專案通訊。遞移躍點是由租戶專案的 DNS 對接所使用,因此總共只能使用一個躍點。
關於環境的內部 IP 範圍
Managed Airflow (第 3 代) 環境需要多個 IP 位址,才能在租戶專案中執行元件,例如環境的叢集和 Cloud SQL Proxy。這些 IP 位址取自環境的內部 IP 範圍。
預設內部 IP 範圍為
100.64.128.0/20。建立環境時,您可以指定不同的內部 IP 範圍。這個範圍必須使用
/20遮罩。您無法變更現有環境的內部 IP 範圍。
內部 IP 範圍與虛擬私有雲網路的互動方式如下:
內部 IP 範圍不得與 Managed Airflow 環境連線的虛擬私有雲子網路衝突。如果虛擬私有雲子網路與內部 IP 範圍重疊,就無法啟用連線。
如果環境的內部 IP 範圍與您的虛擬私有雲網路範圍重疊,則環境就無法存取虛擬私有雲網路中 IP 位址重疊的端點。
舉例來說,如果內部範圍是
100.64.128.0/20,則虛擬私有雲網路中對100.64.128.1端點的任何要求都會失敗,因為要求不會離開租戶專案。內部 IP 範圍未保留。由於不同環境使用的內部虛擬私有雲網路是分開的,因此您可以在多個環境中使用相同的內部 IP 範圍,不必進行任何額外設定。
只要環境中的 DAG 和工作不會向內部範圍 IP 位址提出要求,您就可以將這些位址用於其他用途。
連線至虛擬私有雲網路
控制台
前往 Google Cloud 控制台的「Environments」(環境) 頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「網路設定」部分,找出「網路附件」項目,然後按一下「編輯」。
在「網路連結」對話方塊中:
如要建立新的網路連結,請在「Network attachment」(網路連結) 清單中選取「Create a new network attachment」(建立新的網路連結)。在「Network」(網路) 和「Subnetwork」(子網路) 清單中,選取虛擬私有雲網路和子網路。
如要使用現有的網路連結,請在「Network attachment」(網路連結) 清單中選取連結。
按一下 [儲存]。
gcloud
下列 Google Cloud CLI 引數會指定虛擬私有雲網路連線參數:
--network:虛擬私有雲網路 ID。--subnetwork:虛擬私有雲子網路 ID。--network-attachment:請改用現有的網路連結。
新的網路連結
如要透過新的網路連結將環境連線至虛擬私有雲網路,請執行下列 Google Cloud CLI 指令:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID
更改下列內容:
ENVIRONMENT_NAME:環境名稱LOCATION:環境所在的區域NETWORK_ID:虛擬私有雲網路 IDSUBNETWORK_ID:虛擬私有雲子網路 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
現有網路連結
如要透過新的網路連結將環境連線至虛擬私有雲網路,請執行下列 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
建立
environments.patchAPI 要求。在這項要求中:
如要建立新的網路連結,請按照下列步驟操作:
在
updateMask參數中,指定config.node_config.network,config.node_config.subnetwork遮罩。在要求主體的
network和subnetwork欄位中,指定虛擬私有雲網路和子網路 ID。
如要使用現有的網路連結,請按照下列步驟操作:
在
updateMask參數中,指定config.node_config.composer_network_attachment遮罩。在要求主體中,以
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 區塊中的下列欄位會指定虛擬私有雲網路連線參數:
network:虛擬私有雲網路 ID。subnetwork:虛擬私有雲子網路 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:虛擬私有雲網路 IDSUBNETWORK_ID:虛擬私有雲子網路 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
}
}
停用與虛擬私有雲網路的連線
控制台
前往 Google Cloud 控制台的「Environments」(環境) 頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「網路設定」部分,找出「網路附件」項目,然後按一下「編輯」。
在「網路附件」對話方塊中,選取「無」,然後按一下「儲存」。
gcloud
--disable-vpc-connectivity 引數會停用環境的虛擬私有雲網路連線:
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
建立
environments.patchAPI 要求。在這項要求中:
在
updateMask參數中,指定config.node_config.network,config.node_config.subnetwork遮罩。在要求主體的
network和subnetwork欄位中,指定空白值。
範例:
// 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 分離虛擬私有雲網路。您可以改為附加其他虛擬私有雲網路,或使用 Google Cloud CLI 等其他工具分離網路。