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:
Di konsol Google Cloud, buka halaman Environments.
Di kolom Airflow webserver, ikuti link Airflow untuk lingkungan Anda.
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:
Nonaktifkan serialisasi DAG. Pemuatan DAG asinkron tidak dapat digunakan dengan serialisasi DAG. Menggunakan opsi konfigurasi Airflow
async_dagbag_loader
danstore_serialized_dags
akan menghasilkan error HTTP 503 dan merusak lingkungan Anda.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
Di konsol Google Cloud, buka halaman Environments.
Di daftar lingkungan, klik nama lingkungan Anda. Halaman Environment details akan terbuka.
Buka tab Konfigurasi lingkungan.
Di bagian Konfigurasi jaringan, temukan item Kontrol akses server web, lalu klik Edit.
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
Buat permintaan API [
environments.patch
][api-patch].Dalam permintaan ini:
Dalam parameter
updateMask
, tentukan maskconfig.webServerNetworkAccessControl
.Dalam isi permintaan, tentukan cara log tugas Airflow harus disimpan:
Untuk memberikan akses ke Airflow dari semua alamat IP, tentukan elemen
config
kosong (elemenwebServerNetworkAccessControl
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. ElemenwebServerNetworkAccessControl
harus ada, tetapi tidak boleh berisi elemenallowedIpRanges
.
{
"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"
}
}
}