存取 Airflow 網頁介面

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 UI」一文中的步驟操作。

  • 如果 Chrome Enterprise Premium 情境感知存取繫結與仰賴裝置屬性的存取層級搭配使用,且 Cloud Composer 應用程式中的 Apache Airflow 未予以豁免,則由於登入迴圈,無法存取 Airflow UI。如要允許存取權,請按照允許在情境感知存取權繫結中存取 Airflow UI所述的步驟操作。

  • 如果在保護專案的 VPC Service Controls 範圍內設定入站規則,且允許存取 Cloud Composer 服務的入站規則使用 ANY_SERVICE_ACCOUNTANY_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 UI

如要透過 Google Cloud 主控台存取 Airflow UI,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在「Airflow 網路伺服器」欄中,按一下環境的「Airflow」連結。

  3. 使用具備適當權限的 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 的網址。網址會列為 airflowUriairflowByoidUri

  • airflowUri 網址是 Google 帳戶使用的網址。
  • 如果您在專案中設定員工身分聯盟,外部身分會使用 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 beta composer environments restart-web-server ENVIRONMENT_NAME \
  --location=LOCATION

更改下列內容:

  • ENVIRONMENT_NAME:環境名稱。
  • LOCATION:環境所在的地區。

設定網路伺服器網路存取權

Airflow 網路伺服器存取參數不依賴環境的網路設定。請改為個別設定網路伺服器存取權。舉例來說,私人 IP 環境仍可透過網際網路存取 Airflow UI。

您無法將允許的 IP 範圍設為私人 IP 位址。

主控台

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「環境設定」分頁。

  4. 在「Network configuration」部分中,找出「Web server access control」項目,然後按一下「Edit」

  5. 在「網路伺服器網路存取權控管」對話方塊中:

    • 如要允許從所有 IP 位址存取 Airflow 網路伺服器,請選取「允許所有 IP 位址傳出的存取要求」

    • 如要只限制存取特定 IP 範圍,請選取「只允許來自特定 IP 位址的存取要求」。在「IP 範圍」欄位中,請以 CIDR 標記法指定 IP 範圍。在「Description」欄位中,指定這個範圍的選用說明。如要指定多個範圍,請按一下「新增 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

  1. 建構 [environments.patch][api-patch] API 要求。

  2. 在這個要求中:

    1. updateMask 參數中指定 config.webServerNetworkAccessControl 遮罩。

    2. 在要求主體中,指定 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"
      }

    }
}

後續步驟