Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Bagian ini menjelaskan cara membuat, mengonfigurasi, dan menjalankan lingkungan Airflow lokal menggunakan alat CLI Pengembangan Lokal Composer.
Tentang alat CLI Pengembangan Lokal Composer
Alat CLI Pengembangan Lokal Composer menyederhanakan pengembangan DAG Apache Airflow untuk Cloud Composer dengan menjalankan lingkungan Airflow secara lokal. Lingkungan Airflow lokal ini menggunakan image build Airflow yang digunakan oleh versi Cloud Composer tertentu.
Anda dapat membuat lingkungan Airflow lokal berdasarkan lingkungan Cloud Composer yang ada. Dalam hal ini, lingkungan Airflow lokal mengambil daftar paket PyPI yang diinstal dan nama variabel lingkungan dari lingkungan Cloud Composer Anda.
Anda dapat menggunakan lingkungan Airflow lokal ini untuk tujuan pengujian dan pengembangan, seperti untuk menguji kode DAG baru, paket PyPI, atau opsi konfigurasi Airflow.
Sebelum memulai
Alat CLI Pengembangan Lokal Composer membuat lingkungan Airflow lokal di direktori tempat Anda menjalankan perintah
composer-dev create
. Untuk mengakses lingkungan Airflow lokal Anda nanti, jalankan perintah alat di jalur tempat Anda membuat lingkungan lokal pada awalnya. Semua data untuk lingkungan lokal disimpan dalam subdirektori di jalur tempat Anda membuat lingkungan lokal:./composer/<local_environment_name>
.Komputer Anda harus memiliki ruang disk yang cukup untuk menyimpan image build Airflow. Alat CLI Pengembangan Lokal Composer menyimpan satu file image untuk setiap build Airflow. Misalnya, jika Anda memiliki dua lingkungan Airflow lokal dengan build Airflow yang berbeda, alat Composer Local Development CLI akan menyimpan dua image build Airflow.
Alat CLI Pengembangan Lokal Composer menggunakan output berwarna. Anda dapat menonaktifkan output berwarna dengan variabel
NO_COLOR=1
:NO_COLOR=1 composer-dev <other commands>
.Jika hanya memiliki satu lingkungan lokal, Anda dapat menghilangkan nama lingkungan lokal dari semua perintah
composer-dev
, kecualirun-airflow-cmd
.Instal dependensi alat CLI Pengembangan Lokal Composer:
- Python versi 3.8 hingga 3.11 dengan
pip
- Google Cloud CLI
- Python versi 3.8 hingga 3.11 dengan
Instal Docker. Docker harus diinstal dan berjalan di sistem lokal. Untuk memverifikasi bahwa Docker sedang berjalan, Anda dapat menjalankan perintah Docker CLI apa pun, seperti
docker ps
.
Mengonfigurasi kredensial
Jika belum dilakukan, dapatkan kredensial pengguna baru untuk digunakan bagi Kredensial Default Aplikasi:
gcloud auth application-default login
Login di gcloud CLI menggunakan Akun Google Anda:
gcloud auth login
Semua panggilan API yang dilakukan oleh alat CLI Pengembangan Lokal Composer dan DAG dieksekusi dari akun yang Anda gunakan di gcloud CLI. Misalnya, jika DAG di lingkungan Airflow lokal Anda membaca konten bucket Cloud Storage, akun ini harus memiliki izin untuk mengakses bucket tersebut. Hal ini berbeda dengan lingkungan Cloud Composer, tempat akun layanan lingkungan melakukan panggilan.
Menginstal alat Composer Local Development CLI
Buat clone repositori Composer Local Development CLI:
git clone https://github.com/GoogleCloudPlatform/composer-local-dev.git
Di direktori tingkat teratas repositori yang di-clone, jalankan:
pip install .
Bergantung pada konfigurasi pip
, jalur tempat alat diinstal mungkin tidak ada dalam variabel PATH
. Jika demikian, pip
akan menampilkan pesan peringatan. Anda dapat menggunakan informasi dari pesan peringatan ini untuk menambahkan direktori ini ke variabel PATH
di sistem operasi Anda.
Buat lingkungan Airflow lokal dengan image build Airflow
Untuk mencantumkan image build Airflow yang tersedia, jalankan:
composer-dev list-available-versions --include-past-releases --limit 10
Untuk membuat lingkungan Airflow lokal dengan parameter default, jalankan:
composer-dev create \
--from-image-version IMAGE_VERSION \
LOCAL_ENVIRONMENT_NAME
Parameter lainnya:
composer-dev create \
--from-image-version IMAGE_VERSION \
--project PROJECT_ID \
--port WEB_SERVER_PORT \
--dags-path LOCAL_DAGS_PATH \
LOCAL_ENVIRONMENT_NAME
Ganti:
IMAGE_VERSION
dengan nama image build Airflow.PROJECT_ID
dengan Project ID.WEB_SERVER_PORT
dengan port yang harus diproses oleh server web Airflow.LOCAL_DAGS_PATH
dengan jalur ke direktori lokal tempat file DAG berada.LOCAL_ENVIRONMENT_NAME
dengan nama lingkungan Airflow lokal ini.
Contoh:
composer-dev create \
--from-image-version composer-3-airflow-2.10.5-build.12 \
example-local-environment
Membuat lingkungan Airflow lokal dari lingkungan Cloud Composer
Hanya informasi berikut yang diambil dari lingkungan Cloud Composer:
Build Airflow spesifik yang digunakan oleh lingkungan Anda.
Daftar paket PyPI kustom yang diinstal di lingkungan Anda.
Daftar nama variabel lingkungan yang ditetapkan di lingkungan Anda.
Parameter konfigurasi dan informasi lainnya dari lingkungan, seperti file DAG, histori eksekusi DAG, variabel Airflow, dan koneksi, tidak disalin dari lingkungan Cloud Composer Anda.
Untuk membuat lingkungan Airflow lokal dari lingkungan Cloud Composer yang sudah ada:
composer-dev create LOCAL_ENVIRONMENT_NAME \
--from-source-environment ENVIRONMENT_NAME \
--location LOCATION \
--project PROJECT_ID \
--port WEB_SERVER_PORT \
--dags-path LOCAL_DAGS_PATH
Ganti:
LOCAL_ENVIRONMENT_NAME
dengan nama untuk lingkungan Airflow lokal.ENVIRONMENT_NAME
dengan nama lingkungan Cloud Composer.LOCATION
dengan region tempat lingkungan Cloud Composer berada.PROJECT_ID
dengan Project ID.WEB_SERVER_PORT
dengan port untuk server web Airflow lokal.LOCAL_DAGS_PATH
dengan jalur ke direktori lokal tempat DAG berada.
Contoh:
composer-dev create example-local-environment \
--from-source-environment example-environment \
--location us-central1 \
--project example-project \
--port 8081 \
--dags-path example_directory/dags
Mulai lingkungan Airflow lokal
Untuk memulai lingkungan Airflow lokal, jalankan:
composer-dev start LOCAL_ENVIRONMENT_NAME
Ganti:
LOCAL_ENVIRONMENT_NAME
dengan nama lingkungan Airflow lokal.
Menghentikan atau memulai ulang lingkungan Airflow lokal
Saat Anda memulai ulang lingkungan Airflow lokal, alat Composer Local Development CLI akan memulai ulang container Docker tempat lingkungan berjalan. Semua komponen Airflow dihentikan dan dimulai lagi. Akibatnya, semua proses DAG yang dieksekusi selama memulai ulang ditandai sebagai gagal .
Untuk memulai ulang atau memulai lingkungan Airflow lokal yang dihentikan, jalankan:
composer-dev restart LOCAL_ENVIRONMENT_NAME
Ganti:
LOCAL_ENVIRONMENT_NAME
dengan nama lingkungan Airflow lokal.
Untuk menghentikan lingkungan Airflow lokal, jalankan:
composer-dev stop LOCAL_ENVIRONMENT_NAME
Menambahkan dan memperbarui DAG
DAG disimpan di direktori yang Anda tentukan dalam parameter --dags-path
saat Anda membuat lingkungan Airflow lokal. Secara default, direktori ini adalah ./composer/<local_environment_name>/dags
. Anda bisa mendapatkan
direktori yang digunakan oleh lingkungan Anda dengan perintah describe
.
Untuk menambahkan dan memperbarui DAG, ubah file di direktori ini. Anda tidak perlu memulai ulang lingkungan Airflow lokal.
Melihat log lingkungan Airflow lokal
Anda dapat melihat log terbaru dari container Docker yang menjalankan lingkungan Airflow lokal. Dengan cara ini, Anda dapat memantau peristiwa terkait penampung dan memeriksa log Airflow untuk mengetahui error seperti konflik dependensi yang disebabkan oleh penginstalan paket PyPI.
Untuk melihat log dari container Docker yang menjalankan lingkungan Airflow lokal Anda, jalankan:
composer-dev logs LOCAL_ENVIRONMENT_NAME --max-lines 10
Untuk mengikuti aliran log, hilangkan argumen --max-lines
:
composer-dev logs LOCAL_ENVIRONMENT_NAME
Menjalankan perintah Airflow CLI
Anda dapat menjalankan perintah CLI Airflow di lingkungan Airflow lokal.
Untuk menjalankan perintah Airflow CLI:
composer-dev run-airflow-cmd LOCAL_ENVIRONMENT_NAME \
SUBCOMMAND SUBCOMMAND_ARGUMENTS
Contoh:
composer-dev run-airflow-cmd example-local-environment dags list -o table
Mengonfigurasi lingkungan Airflow lokal
Alat CLI Pengembangan Lokal Composer menyimpan parameter konfigurasi untuk lingkungan Airflow lokal, seperti variabel lingkungan dan persyaratan paket PyPI di direktori lingkungan lokal (./composer/<local_environment_name>
).
Konfigurasi diterapkan saat lingkungan Airflow lokal dimulai. Misalnya, jika Anda menambahkan persyaratan paket PyPI yang bertentangan, alat CLI Pengembangan Lokal Composer akan melaporkan error saat Anda memulai lingkungan lokal.
Koneksi Airflow disimpan dalam database lingkungan Airflow lokal. Anda dapat mengonfigurasinya dengan menjalankan perintah Airflow CLI atau dengan menyimpan parameter koneksi dalam variabel lingkungan. Untuk mengetahui informasi selengkapnya tentang cara membuat dan mengonfigurasi koneksi, lihat Mengelola koneksi dalam dokumentasi Airflow.
Mendapatkan daftar dan status lingkungan Airflow lokal
Untuk mencantumkan semua lingkungan Airflow lokal yang tersedia dan menampilkan statusnya:
composer-dev list
Untuk mendeskripsikan lingkungan tertentu, dan mendapatkan detail seperti versi image, jalur DAG, dan URL server web lingkungan:
composer-dev describe LOCAL_ENVIRONMENT_NAME
Ganti:
LOCAL_ENVIRONMENT_NAME
dengan nama lingkungan Airflow lokal.
Mencantumkan gambar yang digunakan oleh lingkungan Airflow lokal
Untuk mencantumkan semua image yang digunakan oleh alat Composer Local Development CLI, jalankan:
docker images --filter=reference='*/cloud-airflow-releaser/*/*'
Menginstal plugin dan mengubah data
Plugin dan data untuk lingkungan Airflow lokal diambil dari direktori lingkungan lokal: ./composer/<local_environment_name>/data
dan ./composer/<local_environment_name>/plugins
).
Untuk mengubah konten direktori /data
dan /plugins
, tambahkan atau hapus file di direktori ini. Docker otomatis menyebarkan perubahan file ke
lingkungan Airflow lokal Anda.
Alat CLI Pengembangan Lokal Composer tidak mendukung penentuan direktori yang berbeda untuk data dan plugin.
Mengonfigurasi variabel lingkungan
Untuk mengonfigurasi variabel lingkungan, edit file variables.env
di direktori lingkungan:
./composer/<local_environment_name>/variables.env
.
File variables.env
harus berisi definisi key-value, satu baris untuk setiap
variabel lingkungan. Untuk mengubah opsi konfigurasi Airflow, gunakan
format AIRFLOW__SECTION__KEY
. Untuk mengetahui informasi selengkapnya tentang variabel lingkungan yang tersedia, lihat Referensi konfigurasi Airflow.
EXAMPLE_VARIABLE=True
ANOTHER_VARIABLE=test
AIRFLOW__WEBSERVER__DAG_DEFAULT_VIEW=graph
Untuk menerapkan perubahan, mulai ulang lingkungan Airflow lokal Anda.
Menginstal atau menghapus paket PyPI
Untuk menginstal atau menghapus paket PyPI, ubah file requirements.txt
di direktori lingkungan: ./composer/<local_environment_name>/requirements.txt
.
Persyaratan harus mengikuti format yang ditentukan dalam PEP-508 dengan setiap persyaratan ditentukan dalam huruf kecil dan terdiri dari nama paket dengan ekstra opsional dan penentu versi.
Untuk menerapkan perubahan, mulai ulang lingkungan Airflow lokal Anda.
Beralih ke image build Airflow yang berbeda
Anda dapat menggunakan image build Airflow apa pun dengan alat CLI Pengembangan Lokal Composer dan beralih antar-image. Pendekatan ini berbeda dengan mengupgrade lingkungan Cloud Composer Anda, karena parameter konfigurasi lingkungan Airflow lokal Anda diterapkan saat dimulai.
Misalnya, setelah rilis build Airflow baru, Anda dapat mengalihkan lingkungan untuk menggunakannya, dan mempertahankan konfigurasi lingkungan Airflow lokal yang ada.
Untuk mengubah image lingkungan yang digunakan oleh lingkungan Airflow lokal Anda:
Edit file konfigurasi lingkungan lokal:
./composer/<local_environment_name>/config.json
.Ubah nilai parameter
composer_image_version
. Untuk melihat nilai yang tersedia, Anda dapat mencantumkan gambar yang tersedia.Untuk menerapkan perubahan, mulai ulang lingkungan Airflow lokal Anda.
Menghapus lingkungan Airflow lokal
Perhatian: Pastikan Anda menyimpan semua data yang diperlukan dari lingkungan, seperti log dan konfigurasi.
Untuk menghapus lingkungan Airflow lokal, jalankan perintah berikut:
composer-dev remove LOCAL_ENVIRONMENT_NAME
Jika lingkungan sedang berjalan, tambahkan tanda --force
untuk menghapusnya secara paksa.
Menghapus image Docker
Untuk menghapus semua image yang didownload oleh alat Composer Local Development CLI, jalankan:
docker rmi $(docker images --filter=reference='*/cloud-airflow-releaser/*/*' -q)
Pemecahan masalah
Bagian ini memberikan solusi untuk masalah umum.
Tidak dapat memulai lingkungan lokal di MacOS
Jika Anda menginstal paket composer-dev
ke direktori yang tidak dapat diakses oleh Docker, lingkungan lokal Anda mungkin tidak dimulai.
Misalnya, jika Python diinstal di direktori /opt
, seperti saat Anda
menginstalnya dengan konfigurasi Homebrew default di MacOS, maka paket
composer-dev
juga diinstal di direktori /opt
. Karena
Docker mematuhi aturan sandbox Apple, direktori /opt
tidak
tersedia secara default. Selain itu, Anda tidak dapat menambahkannya melalui UI (Setelan
> Resource > Berbagi file).
Dalam hal ini, alat Composer Local Development CLI akan menghasilkan pesan error yang mirip dengan contoh berikut:
Failed to create container with an error: 400 Client Error for ...
Bad Request ("invalid mount config for type "bind": bind source path does not exist:
/opt/homebrew/lib/python3.9/site-packages/composer_local_dev/docker_files/entrypoint.sh
Possible reason is that composer-dev was installed in the path that is
not available to Docker. See...")
Anda dapat menggunakan salah satu solusi berikut:
- Instal Python atau paket
composer-dev
ke direktori lain, sehingga Docker dapat mengakses paket. - Edit file
~/Library/Group\ Containers/group.com.docker/settings.json
secara manual dan tambahkan/opt
kefilesharingDirectories
.