Mengakses antarmuka pengguna web Apache Airflow

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Apache Airflow menyertakan antarmuka pengguna (UI) web yang dapat Anda gunakan untuk mengelola alur kerja (DAG), mengelola lingkungan Airflow, dan melakukan tindakan administratif. Misalnya, Anda dapat menggunakan antarmuka web untuk meninjau progres DAG, menyiapkan koneksi data baru, atau meninjau log dari DAG yang dijalankan sebelumnya.

Server web Airflow

Setiap lingkungan Cloud Composer memiliki server web yang menjalankan antarmuka web Airflow. Server web adalah bagian dari arsitektur lingkungan Cloud Composer.

Server web mengurai file definisi DAG di folder dags/ dan harus dapat mengakses data dan resource DAG untuk memuat DAG dan menayangkan permintaan HTTP.

Server web memuat ulang DAG setiap 60 detik, yang merupakan worker_refresh_interval default di Cloud Composer. Error server web dapat terjadi jika server web tidak dapat mengurai semua DAG dalam interval refresh.

Waktu yang melebihi 60 detik untuk memuat DAG dapat terjadi jika ada banyak file DAG atau ada beban kerja yang tidak biasa untuk memuat file DAG. Untuk memastikan bahwa server web tetap dapat diakses terlepas dari waktu pemuatan DAG, Anda dapat mengonfigurasi pemuatan DAG asinkron untuk mengurai dan memuat DAG di latar belakang pada interval yang telah dikonfigurasi sebelumnya (tersedia di composer-1.7.1-airflow-1.10.2 dan versi yang lebih baru). Konfigurasi ini juga dapat mengurangi waktu refresh DAG.

Selain melampaui interval refresh pekerja, server web dapat menangani kegagalan pemuatan DAG dengan baik dalam sebagian besar kasus. DAG yang menyebabkan server web mengalami error atau keluar dapat menyebabkan error ditampilkan di browser. Untuk mengetahui informasinya, lihat Memecahkan masalah DAG.

Jika Anda terus mengalami masalah server web karena penguraian DAG, sebaiknya gunakan pemuatan DAG asinkron.

Sebelum memulai

  • Anda harus memiliki peran yang dapat melihat lingkungan Cloud Composer. Untuk informasi selengkapnya, lihat Kontrol akses.

  • Selama pembuatan lingkungan, Cloud Composer mengonfigurasi URL untuk server web yang menjalankan antarmuka web Airflow. URL tidak dapat disesuaikan.

  • Fitur Kontrol Akses UI Airflow (Kontrol Akses Berbasis Peran Airflow) untuk antarmuka web Airflow didukung untuk lingkungan Cloud Composer yang menjalankan Composer versi 1.13.4 atau yang lebih baru, Airflow versi 1.10.10 atau yang lebih baru, dan Python 3.

Mengakses antarmuka web Airflow

Layanan server web Airflow di-deploy ke domain appspot.com dan memberikan akses ke antarmuka web Airflow. Cloud Composer 1 menyediakan akses ke antarmuka berdasarkan identitas pengguna dan binding kebijakan IAM yang ditentukan untuk pengguna. Cloud Composer 1 menggunakan Identity-Aware Proxy untuk tujuan ini.

Setelah membuat lingkungan Cloud Composer baru, perlu waktu hingga 25 menit agar antarmuka web selesai dihosting dan dapat diakses.

Mengakses antarmuka web dari Konsol Google Cloud

Untuk mengakses antarmuka web Airflow dari konsol Google Cloud:

  1. Di konsol Google Cloud, buka halaman Environments.

    Buka Lingkungan

  2. Di kolom Airflow webserver, ikuti link Airflow untuk lingkungan Anda.

  3. Login dengan Akun Google yang memiliki izin yang sesuai.

Membatasi akses ke server web Airflow

Lingkungan Composer memungkinkan Anda membatasi akses ke server web Airflow:

  • Anda dapat memblokir semua akses, atau mengizinkan akses dari rentang IP eksternal IPv4 atau IPv6 tertentu.
  • Anda tidak dapat mengonfigurasi rentang IP yang diizinkan menggunakan alamat IP pribadi.

Mengambil URL antarmuka web melalui alat command line gcloud

Anda dapat mengakses antarmuka web Airflow dari browser web apa pun. Untuk mendapatkan URL untuk antarmuka web, masukkan perintah gcloud berikut:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

Ganti kode berikut:

  • ENVIRONMENT_NAME: nama lingkungan Anda.
  • LOCATION: region tempat lingkungan berada.

Perintah gcloud menampilkan properti lingkungan Cloud Composer, termasuk URL untuk antarmuka web. URL tersebut tercantum sebagai airflowUri.

config:
  airflowUri: https://example-tp.appspot.com

Mengonfigurasi pemuatan DAG asinkron

Saat pemuatan DAG asinkron diaktifkan, server web Airflow akan membuat proses baru. Proses ini memuat DAG di latar belakang, mengirim DAG yang baru dimuat pada interval yang ditentukan oleh opsi dagbag_sync_interval, lalu tidur.

Proses ini aktif secara berkala untuk memuat ulang DAG, intervalnya ditentukan oleh opsi collect_dags_interval.

Untuk mengaktifkan pemuatan DAG asinkron:

  1. Nonaktifkan serialisasi DAG. Pemuatan DAG asinkron tidak dapat digunakan dengan serialisasi DAG. Menggunakan opsi konfigurasi Airflow async_dagbag_loader dan store_serialized_dags akan menghasilkan error HTTP 503 dan merusak lingkungan Anda.

  2. Ganti opsi konfigurasi Airflow berikut:

    Bagian Kunci Nilai Catatan
    webserver async_dagbag_loader True Nilai defaultnya adalah False.
    webserver collect_dags_interval 30 Nilai defaultnya adalah 30. Gunakan nilai yang lebih kecil untuk pembaruan yang lebih cepat.
    webserver dagbag_sync_interval 10 Nilai defaultnya adalah 10.
    webserver worker_refresh_interval 3600 Nilai defaultnya adalah 60. Dengan pemuatan DAG asinkron, Anda dapat menggunakan interval refresh yang lebih lama.

Memulai ulang server web

Saat men-debug atau memecahkan masalah lingkungan Cloud Composer, beberapa masalah dapat diselesaikan dengan memulai ulang server web Airflow. Anda dapat memulai ulang server web menggunakan restartWebServer API atau perintah gcloud restart-web-server:

gcloud beta composer environments restart-web-server ENVIRONMENT_NAME \
  --location=LOCATION

Mengonfigurasi akses jaringan server web

Parameter akses server web Airflow tidak bergantung pada jenis lingkungan Anda. Sebagai gantinya, Anda mengonfigurasi akses server web secara terpisah. Misalnya, lingkungan IP Pribadi masih dapat memiliki UI Airflow yang dapat diakses dari internet.

Anda tidak dapat mengonfigurasi rentang IP yang diizinkan menggunakan alamat IP pribadi.

Konsol

  1. Di konsol Google Cloud, buka halaman Environments.

    Buka Lingkungan

  2. Di daftar lingkungan, klik nama lingkungan Anda. Halaman Environment details akan terbuka.

  3. Buka tab Konfigurasi lingkungan.

  4. Di bagian Konfigurasi jaringan, temukan item Kontrol akses server web, lalu klik Edit.

  5. Pada dialog Kontrol akses jaringan server web:

    • Untuk memberikan akses ke server web Airflow dari semua alamat IP, pilih Allow access from all IP addresses.

    • Untuk membatasi akses hanya ke rentang IP tertentu, pilih Izinkan akses hanya dari alamat IP tertentu. Di kolom IP range, tentukan rentang IP dalam notasi CIDR. Di kolom Deskripsi, tentukan deskripsi opsional untuk rentang ini. Jika Anda ingin menentukan lebih dari satu rentang, klik Tambahkan rentang IP.

    • Untuk melarang akses untuk semua alamat IP, pilih Izinkan akses hanya dari alamat IP tertentu, lalu klik Hapus item di samping entri rentang kosong.

gcloud

Saat Anda mengupdate lingkungan, argumen berikut akan mengontrol parameter akses server web:

  • --web-server-allow-all memberikan akses ke Airflow dari semua alamat IP. Opsi ini adalah opsi default.

  • --web-server-allow-ip hanya membatasi akses ke rentang IP sumber tertentu. Untuk menentukan beberapa rentang IP, gunakan argumen ini beberapa kali.

  • --web-server-deny-all melarang akses untuk semua alamat IP.

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION

Ganti kode berikut:

  • ENVIRONMENT_NAME: nama lingkungan Anda.
  • LOCATION: region tempat lingkungan berada.
  • WS_IP_RANGE: rentang IP, dalam notasi CIDR, yang dapat mengakses UI Airflow.
  • WS_RANGE_DESCRIPTION: deskripsi rentang IP.

Contoh:

gcloud composer environments update example-environment \
    --location us-central1 \
    --web-server-allow-ip ip_range=192.0.2.0/24,description="office net 1" \
    --web-server-allow-ip ip_range=192.0.4.0/24,description="office net 3"

API

  1. Buat permintaan API [environments.patch][api-patch].

  2. Dalam permintaan ini:

    1. Dalam parameter updateMask, tentukan mask config.webServerNetworkAccessControl.

    2. Dalam isi permintaan, tentukan cara log tugas Airflow harus disimpan:

      • Untuk memberikan akses ke Airflow dari semua alamat IP, tentukan elemen config kosong (elemen webServerNetworkAccessControl tidak boleh ada).

      • Untuk membatasi akses hanya ke rentang IP tertentu, tentukan satu atau beberapa rentang di allowedIpRanges.

      • Untuk melarang akses ke semua alamat IP, tentukan elemen webServerNetworkAccessControl kosong. Elemen webServerNetworkAccessControl harus ada, tetapi tidak boleh berisi elemen allowedIpRanges.

{
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "WS_IP_RANGE",
          "description": "WS_RANGE_DESCRIPTION"
        }
      ]
    }
  }
}

Ganti kode berikut:

  • WS_IP_RANGE: rentang IP, dalam notasi CIDR, yang dapat mengakses UI Airflow.
  • WS_RANGE_DESCRIPTION: deskripsi rentang IP.

Contoh:

// 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": "office net 1"
        },
        {
          "value": "192.0.4.0/24",
          "description": "office net 3"
        }
      ]
    }
  }
}

Terraform

Di blok allowed_ip_range, di web_server_network_access_control, tentukan rentang IP yang dapat mengakses server web.

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"
      }

    }

  }
}

Ganti:

  • WS_IP_RANGE dengan rentang IP, dalam notasi CIDR, yang dapat mengakses UI Airflow.
  • WS_RANGE_DESCRIPTION dengan deskripsi rentang IP.

Contoh:

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 = "office net 1"
      },
      allowed_ip_range {
        value = "192.0.4.0/24"
        description = "office net 3"
      }

    }
}

Langkah selanjutnya