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 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 使用者介面,最後會陷入登入迴圈。如要進一步瞭解如何解決這個情況,請參閱「在 VPC Service Controls 輸入規則中允許存取 Airflow UI」。
- Cloud Composer 不支援在連入和連出規則中使用第三方身分,以允許 Apache Airflow UI 作業。不過,您可以在傳入和傳出規則中使用 - ANY_IDENTITY身分類型,允許存取所有身分,包括第三方身分。如要進一步瞭解- ANY_IDENTITY身分類型,請參閱「連入和連出規則」。
存取 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"
      }
    }
}