Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Apache Airflow 包含稱為 Airflow UI 的網頁使用者介面,可用於管理 Airflow DAG、查看 DAG 執行記錄、監控 Airflow,以及執行管理動作。
關於 Airflow 網路伺服器
每個 Cloud Composer 環境都有一個執行 Airflow UI 的網路伺服器。網路伺服器是 Cloud Composer 環境架構的一部分。
事前準備
您必須具備可查看 Cloud Composer 環境的角色。 詳情請參閱存取權控管一文。
建立環境時,Cloud Composer 會為執行 Airflow UI 的網路伺服器設定網址。這個網址不可自訂。
Cloud Composer 2 支援 Airflow UI 的存取權控管 (Airflow 角色型存取權控管) 功能。
如果 Google Workspace 已啟用「API 控制項」>「未設定的第三方應用程式」 >「禁止使用者存取任何第三方應用程式」選項,且未明確允許 Cloud Composer 中的 Apache Airflow 應用程式,使用者就無法存取 Airflow UI,除非他們明確允許該應用程式。如要允許存取,請按照「允許存取 Google Workspace 中的 Airflow 使用者介面」一文中的步驟操作。
如果 Chrome Enterprise Premium 情境感知存取繫結搭配使用依據裝置屬性的存取層級,且 Apache Airflow in Cloud Composer 應用程式未獲豁免,則由於登入迴圈,您將無法存取 Airflow UI。如要允許存取,請按照「允許在情境感知存取權繫結中存取 Airflow UI」一文中的步驟操作。
如果專案受 VPC Service Controls 範圍保護,且您在範圍內設定連入規則,而允許存取 Cloud Composer 服務的連入規則使用
ANY_SERVICE_ACCOUNT
或ANY_USER_ACCOUNT
身分類型,使用者就無法存取 Airflow UI,最後會陷入登入迴圈。如要進一步瞭解如何解決這個情況,請參閱「在 VPC Service Controls 輸入規則中允許存取 Airflow UI」。
存取 Airflow UI
在 Cloud Composer 2 中,Airflow 網路伺服器會以環境叢集中的工作負載形式執行。網路伺服器會部署至 composer.googleusercontent.com
網域,並提供 Airflow UI 的存取權。
Cloud Composer 2 會根據使用者身分和為使用者定義的 IAM 政策繫結,提供介面存取權。與 Cloud Composer 1 相比,Cloud Composer 2 使用的機制不同,不依賴 Identity-Aware Proxy。
從 Google Cloud 控制台存取 Airflow 使用者介面
如要從 Google Cloud 控制台存取 Airflow 使用者介面,請按照下列步驟操作:
前往 Google Cloud 控制台的「Environments」頁面。
在「Airflow 網路伺服器」欄中,按一下環境的「Airflow」連結。
使用具備適當權限的 Google 帳戶登入。
使用 Google Cloud CLI 取得 Airflow UI 網址
您可以透過任何網路瀏覽器存取 Airflow UI。如要取得 Airflow UI 的網址,請在 Google Cloud CLI 中執行下列指令:
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION
更改下列內容:
ENVIRONMENT_NAME
:環境名稱。LOCATION
:環境所在的區域。
Google Cloud CLI 指令會顯示 Cloud Composer 環境的屬性,包括 Airflow UI 的網址。網址會列為 airflowUri
和 airflowByoidUri
:
- Google 帳戶會使用
airflowUri
網址。 - 如果您在專案中設定員工身分聯盟,外部身分就會使用
airflowByoidUri
網址。
config:
airflowUri: https://example-dot-us-central1.composer.googleusercontent.com
airflowByoidUri: https://example-dot-us-central1.composer.byoid.googleusercontent.com
重新啟動網路伺服器
偵錯或排解 Cloud Composer 環境問題時,重新啟動 Airflow 網路伺服器或許能解決部分問題。您可以使用 restartWebServer API 或 Google Cloud CLI 中的 restart-web-server
指令,重新啟動網頁伺服器:
gcloud composer environments restart-web-server ENVIRONMENT_NAME \
--location=LOCATION
更改下列內容:
ENVIRONMENT_NAME
:環境名稱。LOCATION
:環境所在的區域。
設定網路伺服器的網路存取權
Airflow 網路伺服器存取參數與環境的網路設定無關。您必須另外設定網路伺服器存取權。 舉例來說,私人 IP 環境仍可從網際網路存取 Airflow UI。
您無法將允許的 IP 範圍設定為私人 IP 位址。
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「網路設定」部分中,找出「網頁伺服器存取權控管」項目,然後按一下「編輯」。
在「網路伺服器網路存取權控管」對話方塊中:
如要允許所有 IP 位址存取 Airflow 網路伺服器,請選取「允許所有 IP 位址傳出的存取要求」。
如要只允許特定 IP 範圍存取,請選取「只允許來自特定 IP 位址的存取要求」。在「IP range」(IP 範圍) 欄位中,以 CIDR 標記法指定 IP 範圍。在「說明」欄位中,指定這個範圍的說明 (選填)。如要指定多個範圍,請按一下「新增 IP 範圍」。
如要禁止所有 IP 位址存取,請選取「只允許來自特定 IP 位址的存取要求」,然後按一下空白範圍項目旁的「刪除項目」。
gcloud
更新環境時,下列引數會控管網路伺服器存取參數:
--web-server-allow-all
可讓所有 IP 位址存取 Airflow。 這是預設選項。--update-web-server-allow-ip
僅限特定來源 IP 範圍存取。如要指定多個 IP 範圍,請多次使用這個引數。--web-server-deny-all
禁止所有 IP 位址存取。
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--update-web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
更改下列內容:
ENVIRONMENT_NAME
:環境名稱。LOCATION
:環境所在的區域。WS_IP_RANGE
:可存取 Airflow UI 的 IP 範圍 (以 CIDR 標記法表示)。WS_RANGE_DESCRIPTION
:IP 範圍的說明。
範例:
gcloud composer environments update example-environment \
--location us-central1 \
--update-web-server-allow-ip ip_range=192.0.2.0/24,description="example range" \
--update-web-server-allow-ip ip_range=192.0.4.0/24,description="example range 2"
API
建構 [
environments.patch
][api-patch] API 要求。在這個要求中:
在
updateMask
參數中,指定config.webServerNetworkAccessControl
遮罩。在要求主體中,指定 Airflow 工作記錄的儲存方式:
如要允許所有 IP 位址存取 Airflow,請指定空白的
config
元素 (不得出現webServerNetworkAccessControl
元素)。如要僅限特定 IP 範圍存取,請在
allowedIpRanges
中指定一或多個範圍。如要禁止所有 IP 位址存取,請指定空白的
webServerNetworkAccessControl
元素。webServerNetworkAccessControl
元素必須存在,但不得包含allowedIpRanges
元素。
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
}
}
}
更改下列內容:
WS_IP_RANGE
:可存取 Airflow UI 的 IP 範圍 (以 CIDR 標記法表示)。WS_RANGE_DESCRIPTION
:IP 範圍的說明。
範例:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.webServerNetworkAccessControl
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "192.0.2.0/24",
"description": "example range"
},
{
"value": "192.0.4.0/24",
"description": "example range 2"
}
]
}
}
}
Terraform
在 allowed_ip_range
區塊中,於 web_server_network_access_control
指定可存取網路伺服器的 IP 範圍。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
web_server_network_access_control {
allowed_ip_range {
value = "WS_IP_RANGE"
description = "WS_RANGE_DESCRIPTION"
}
}
}
}
更改下列內容:
WS_IP_RANGE
:可存取 Airflow UI 的 IP 範圍 (以 CIDR 標記法表示)。WS_RANGE_DESCRIPTION
:IP 範圍的說明。
範例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
web_server_network_access_control {
allowed_ip_range {
value = "192.0.2.0/24"
description = "example range"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "example range 2"
}
}
}