Halaman ini menjelaskan proses pembuatan konfigurasi lingkungan deployment untuk pipeline orkestrasi Anda.
Tentang lingkungan deployment
Project Anda dapat memiliki satu atau beberapa lingkungan deployment. Konfigurasi setiap lingkungan deployment menentukan cara pipeline dan resource yang termasuk dalam lingkungan ini di-deploy. Misalnya, Anda dapat memiliki satu lingkungan deployment untuk pengembangan, dan lingkungan lain untuk produksi. Lingkungan deployment ini dapat memiliki serangkaian pipeline yang terpisah dan berjalan di lingkungan runner yang berbeda.
Setiap lingkungan deployment harus memiliki lingkungan runner. Managed Airflow adalah mesin orkestrasi yang menjalankan pipeline Anda setelah di-deploy. Dalam Pratinjau, satu-satunya lingkungan pelaksana yang didukung adalah lingkungan Managed Airflow yang telah Anda tetapkan ke lingkungan deployment.
Anda dapat menentukan bucket artefak untuk lingkungan deployment. Bucket ini akan menyimpan aset pipeline versi yang dijalankan pipeline dan hasil dari beberapa tindakan yang menghasilkan output ke bucket artefak.
Tentang paket pipeline
Pipeline orkestrasi di-deploy dalam paket pipeline. Paket pipeline berisi satu atau beberapa pipeline dan aset pipeline yang memiliki siklus deployment yang sama.
Setiap paket dapat memiliki beberapa versi:
- Saat Anda men-deploy paket, semua pipeline dan skrip pendamping dalam paket bundle versi tertentu akan di-deploy bersama-sama.
- Hanya ada satu versi paket saat ini (yang di-deploy sebagai versi terbaru), sementara setiap eksekusi pipeline yang dipicu dengan versi kode sebelumnya akan terus dieksekusi tanpa terganggu.
- Anda tidak dapat memicu pipeline secara manual dalam versi yang berbeda dengan versi saat ini.
- Jika pipeline dihapus dari paket dan versi baru paket di-deploy, pipeline tidak akan berjalan di versi baru, tetapi eksekusi yang sedang berjalan akan dilanjutkan.
Sebelum memulai
- Pastikan Anda telah membuat lingkungan pelari.
Menginisialisasi struktur paket pipeline
Orchestration Pipelines menyediakan perintah gcloud CLI untuk menginisialisasi scaffolding untuk pipeline orkestrasi di repositori Anda.
Scaffolding berisi hal berikut:
orchestration-pipeline.yaml: contoh definisi pipeline yang berisi jadwal, tetapi tidak ada tindakan yang ditentukan.deployment.yaml: contoh konfigurasi deployment pipeline yang menentukan cara pipeline Anda harus di-deploy. Berisi konfigurasi untuk lingkungan runner, bucket artefak, dan resource lain yang digunakan oleh tindakan pipeline Anda..github/workflows/validate.yaml: Contoh tindakan GitHub yang memvalidasi pipeline Anda saat permintaan pull ke cabangmaindibuat..github/workflows/deploy.yaml: Contoh tindakan GitHub yang men-deploy pipeline Anda saat Anda menggabungkan perubahan ke cabangmainrepositori GitHub Anda.
Untuk melakukan inisialisasi pipeline orkestrasi:
Buka direktori project atau repositori Anda. Perintah ini akan membuat file baru di direktori tempat Anda menjalankannya.
Jalankan perintah gcloud CLI berikut:
gcloud beta orchestration-pipelines init PIPELINE_NAME \ --environment DEPLOYMENT_ENVIRONMENT \ --composer-environment RUNNER_ENVIRONMENT \ --artifacts-bucket ARTIFACTS_BUCKET_NAME \ --project PROJECT_ID \ --region REGION \ --service-account SERVICE_ACCOUNTGanti kode berikut:
PIPELINE_NAME: nama untuk pipeline awal.DEPLOYMENT_ENVIRONMENT: nama untuk lingkungan deployment awal.RUNNER_ENVIRONMENT: nama lingkungan runner.ARTIFACTS_BUCKET_NAME: bucket Cloud Storage yang akan digunakan untuk menyimpan artefak tindakan pipeline, tanpa awalangs://.PROJECT_ID: project ID dari Google Cloud project tempat lingkungan runner berada.REGION: region tempat lingkungan runner berada.SERVICE_ACCOUNT: akun layanan yang akan ditetapkan sebagai variabel. Tetapkan nilai ini ke akun layanan lingkungan runner. Anda dapat menggunakan variabel ini dalam definisi pipeline dan profil resource. Misalnya, sebagai nilai untuk parameterimpersonationChaindalam tindakan yang menggunakan rantai peniruan identitas.Anda dapat memperoleh akun layanan lingkungan runner dengan melihat detail lingkungan. Di gcloud CLI, akun layanan lingkungan disediakan di kunci
nodeConfig.serviceAccount.
Contoh:
gcloud beta orchestration-pipelines init example-pipeline \ --environment development \ --composer-environment production-runner-us-central1 \ --artifacts-bucket production-artifacts \ --project example-production-project \ --region us-central1 \ --service-account example-account@example-project.iam.gserviceaccount.com
Menambahkan konfigurasi lingkungan runner
Lingkungan runner ditentukan dalam kunci composer_environment dari
lingkungan deployment. Jika menggunakan beberapa lingkungan deployment, Anda dapat
menentukan lingkungan runner terpisah untuk setiap lingkungan.
Nama lingkungan runner di kunci composer_environment bersama dengan kunci
project dan region dalam konfigurasi lingkungan pengembangan
menentukan lingkungan runner tempat pipeline di-deploy.
Contoh berikut menunjukkan cara menambahkan lingkungan pelaksana dengan nama
example-runner-environment yang berada di region us-central1, dalam project
example-development-project:
environments:
example-development-environment:
project: "example-development-project"
region: "us-central1"
composer_environment: "example-runner-environment"
...
Menyesuaikan konfigurasi lingkungan runner
Anda dapat mengonfigurasi lingkungan pelari seperti lingkungan Managed Service untuk Apache Airflow lainnya:
- Instal dependensi Python, misalnya, untuk menjalankan skrip Python pipeline Anda secara lokal di lingkungan runner.
- Menskalakan lingkungan untuk menyediakan lebih banyak atau lebih sedikit resource, atau mengubah cara lingkungan pelari menskalakan pekerja Airflow-nya.
- Ganti opsi konfigurasi Airflow untuk mengonfigurasi Airflow.
Menambahkan aset pipeline dan mengonfigurasi tindakan
Edit file definisi pipeline Anda untuk menyertakan tindakan dan aset pipeline:
- Lihat Referensi DSL Pipeline Orkestrasi untuk contoh kode dan deskripsi parameter tindakan.
- Untuk contoh penelusuran yang lebih panjang, lihat Membangun pipeline data engineering di dokumentasi ekstensi Google Cloud Data Agent Kit.
Contoh tindakan hello world
Berikut adalah contoh tindakan pipeline minimalis. Anda dapat menggunakannya untuk menguji konfigurasi lingkungan deployment.
Tambahkan tindakan berikut ke pipeline scaffolding Anda, dengan mengganti
actions: []:actions: - python: name: "hello_world_script_run" executionTimeout: "30m" mainFilePath: "scripts/hello_world.py" pythonCallable: "main" engine: local: {}Buat subdirektori baru bernama
scriptsdi repositori Anda, lalu simpan file berikut sebagai/scripts/hello_world.py:def main(): print("Hello, World!")
Memvalidasi pipeline
Perintah validasi memeriksa sintaksis dan kebenaran jenis file definisi pipeline, serta melakukan pemeriksaan semantik untuk resource seperti projectGoogle Cloud dan lingkungan Managed Service untuk Apache Airflow dalam file konfigurasi deployment dan file definisi pipeline.
Secara default, validasi penuh semua lingkungan deployment dilakukan, termasuk menghubungi lingkungan runner jarak jauh. Anda dapat memvalidasi bagian tertentu dari konfigurasi deployment dengan parameter berikut:
--mode: ditetapkan kesyntax-onlyagar tidak menjangkau lingkungan pelari jarak jauh. Jumlah defaultnya adalahfull--environment: memvalidasi hanya lingkungan tertentu.--pipeline-paths: daftar jalur yang dipisahkan koma ke file definisi pipeline yang akan divalidasi.--substitutionsdan--substitutions-file: Parameter konfigurasi deployment substitute selama validasi.
Anda dapat menjalankan perintah ini sebagai pemeriksaan cepat sebelum men-deploy versi pipeline lokal dan sebagai tindakan GitHub sebagai bagian dari alur kerja CI/CD.
Jalankan perintah berikut di repositori Anda untuk memvalidasi pipeline:
gcloud beta orchestration-pipelines validate
Men-deploy paket pipeline
Bagian ini menjelaskan berbagai cara untuk men-deploy pipeline Anda.
Pipeline Orkestrasi mendukung dua cara untuk men-deploy paket pipeline Anda. Pendekatan ini dirancang untuk bekerja sama selama berbagai tahap alur kerja pengembangan dan rilis:
Men-deploy versi paket lokal: Men-deploy versi aset pipeline, definisi pipeline, dan konfigurasi deployment saat ini. ID paket baru akan dibuat secara otomatis berdasarkan nama ruang kerja dan md5 file dalam paket.
Jenis deployment ini ditujukan untuk tujuan pengembangan. Sebaiknya buat konfigurasi deployment terpisah yang men-deploy pipeline ke lingkungan runner staging.
Men-deploy perubahan yang di-commit: Setelah Anda melakukan commit perubahan pada aset pipeline, definisi pipeline, dan konfigurasi deployment, Anda dapat men-deploy versi baru paket pipeline ke lingkungan runner. ID paket baru akan ditautkan ke SHA commit git di repositori Anda.
Jenis deployment ini dimaksudkan untuk dijalankan sebagai bagian dari CI/CD, misalnya, melalui GitHub Action. Anda juga dapat men-deploy perubahan yang di-commit dari repositori Git lokal.
Pipeline Orkestrasi mendukung beberapa cara untuk mengganti parameter
dalam file konfigurasi deployment dan definisi pipeline, yang mungkin
berguna saat Anda men-deploy pipeline untuk pengembangan lokal dan untuk perintah
yang dijalankan di tindakan GitHub. Misalnya, Anda dapat
mengganti parameter melalui
penggunaan argumen --substitutions dalam
perintah gcloud CLI, atau melalui
penetapan variabel lingkungan, atau melalui
mendapatkan nilai dari secret GitHub.
Menjalankan perintah deployment
Lokal
Untuk men-deploy versi paket lokal, gunakan argumen --local:
gcloud beta orchestration-pipelines deploy \
--environment DEPLOYMENT_ENVIRONMENT \
--local
Ganti kode berikut:
DEPLOYMENT_ENVIRONMENT: lingkungan deployment pipeline.
Contoh:
gcloud beta orchestration-pipelines deploy \
--environment example-deployment-environment \
--local
Contoh output berisi nama dan versi paket pipeline, serta status deployment:
Bundle ID: bundle-local-example-orchestrationpipelines
Version ID: local-14776d43ebba
...
--- Pipeline Deployment Status ---
Pipeline 'example-pipeline': [OK] (Status: HEALTHY)
--- Pipeline Deployment full details ---
...
Terikat
Untuk men-deploy perubahan, pastikan perubahan Anda di-commit di repositori Anda. Jalankan perintah berikut di gcloud CLI:
gcloud beta orchestration-pipelines deploy \
--environment DEPLOYMENT_ENVIRONMENT
Ganti kode berikut:
DEPLOYMENT_ENVIRONMENT: lingkungan deployment pipeline.
Contoh:
gcloud beta orchestration-pipelines deploy \
--environment example-deployment-environment
Contoh output berisi nama dan versi paket pipeline, serta status deployment:
Bundle ID: bundle-local-example-orchestrationpipelines
Version ID: local-14776d43ebba
...
--- Pipeline Deployment Status ---
Pipeline 'example-pipeline': [OK] (Status: HEALTHY)
--- Pipeline Deployment full details ---
...
GitHub Action
Scaffolding pipeline memiliki dua contoh tindakan GitHub yang dapat membantu Anda memulai deployment dan validasi pipeline melalui tindakan GitHub. Saat Anda mengupload file ini ke GitHub, repositori Anda akan dikonfigurasi dengan tindakan ini. Untuk mengetahui informasi tentang cara mengonfigurasi tindakan GitHub yang lebih kompleks, lihat Men-deploy dengan GitHub Actions dalam dokumentasi GitHub.
Untuk menggunakan contoh tindakan GitHub:
Buat akun layanan terpisah yang akan menjalankan perintah gcloud CLI dari tindakan GitHub.
Tetapkan peran yang memungkinkan perintah deployment dan validasi dijalankan ke akun layanan ini.
Buat kunci akun layanan untuk akun layanan ini.
Tambahkan secret
GCP_SA_KEYke repositori GitHub Anda dan tetapkan nilainya ke kunci akun layanan yang dibuat. Untuk mengetahui informasi selengkapnya tentang cara menambahkan secret, lihat Menggunakan secret di GitHub Actions.
Konfigurasi deployment
Bagian ini memberikan konfigurasi tambahan yang dapat Anda terapkan ke lingkungan deployment.
Menambahkan atau menghapus pipeline lain
Untuk menambahkan pipeline lain ke lingkungan deployment yang ada:
- Tambahkan file definisi pipeline dan aset pipeline ke repositori.
- Dalam konfigurasi deployment, tambahkan kunci
sourcebaru dengan nilai yang menunjuk ke file definisi pipeline baru.
Contoh:
environments:
dev:
...
pipelines:
- source: example-pipeline.yaml
- source: another-pipeline.yaml
Untuk menghapus pipeline:
- Dalam konfigurasi deployment, hapus kunci
sourceuntuk pipeline. - Hapus file definisi pipeline dan aset pipeline ke repositori.
- Deploy versi baru pipeline. Pipeline tidak akan ada di versi paket baru.
Menambahkan lingkungan deployment lain
Untuk menambahkan lingkungan deployment lain:
- Dalam konfigurasi deployment, tambahkan kunci baru ke pemetaan
environments. - Pastikan konfigurasi deployment dan definisi pipeline Anda menggunakan variabel dan variabel konfigurasi deployment untuk menjalankan tindakan pipeline yang memerlukan pembedaan antara Google Cloud resource yang termasuk dalam setiap lingkungan.
Contoh:
environments:
example-development-environment:
project: "example-development-project"
region: "us-central1"
composer_environment: "development-runner-us-central1"
...
variables:
service_account: "another-service-account@example-development-project.iam.gserviceaccount.com"
...
example-production-environment:
project: "example-production-project"
region: "us-central1"
composer_environment: "production-runner-us-central1"
...
variables:
service_account: "example-account@example-project.iam.gserviceaccount.com"
Variabel, secret, dan penggantian
Setelah menentukan variabel dalam konfigurasi deployment, Anda dapat menggunakannya dalam definisi pipeline dan profil resource.
Menambahkan variabel kustom
Anda dapat menambahkan variabel Anda sendiri ke kunci variables dalam konfigurasi
deployment:
- Di lingkungan konfigurasi deployment Anda, tambahkan kunci
variables. - Tambahkan pemetaan nama dan nilai variabel.
- Dapatkan nilai variabel dalam definisi pipeline dan profil resource Anda dengan menyertakan nama variabel dalam tanda kurung kurawal ganda:
{{ example_variable }}.
Contoh berikut menetapkan variabel yang sama di dua lingkungan deployment.
environments:
example-development-environment:
project: "example-development-project"
region: "us-central1"
composer_environment: "development-runner-us-central1"
artifact_storage:
bucket: "development-artifacts"
path_prefix: pipelines
pipelines:
- source: example-pipeline.yaml
variables:
service_account: "another-service-account@example-development-project.iam.gserviceaccount.com"
network_uri: projects/example-development-project/global/networks/default
example-production-environment:
project: "example-production-project"
region: "us-central1"
composer_environment: "production-runner-us-central1"
artifact_storage:
bucket: "production-artifacts"
path_prefix: pipelines
pipelines:
- source: example-pipeline.yaml
variables:
service_account: "example-account@example-project.iam.gserviceaccount.com"
network_uri: projects/example-production-project/global/networks/vpc-main
Berikut adalah profil resource Managed Service untuk Apache Spark yang membaca
variabel ini. Tindakan dalam file definisi pipeline
(example-pipeline.yaml) dapat menggunakan profil resource yang sama dan Anda tidak perlu
menyesuaikannya antara lingkungan produksi dan pengembangan.
profileId: serverless-standard
type: dataproc.session
definition:
environmentConfig:
execution_config:
service_account: "{{ service_account }}"
network_uri: "{{ network_uri }}"
Mengakses parameter konfigurasi deployment
Beberapa parameter konfigurasi deployment Anda juga tersedia sebagai variabel:
projectregioncomposer_environmentCOMMIT_SHA: SHA commit saat ini dari repositori git. Anda dapat menggunakan variabel ini, misalnya, dengan mengganti nilainya saat Anda men-deploy versi paket pipeline lokal. Dengan cara ini, tindakan yang bergantung pada nilai SHA commit akan tetap beroperasi pada konten file yang benar.
Dalam contoh berikut, definisi pipeline menetapkan default untuk tindakan pipeline berdasarkan parameter konfigurasi deployment project dan region.
pipelineId: example-pipeline
description: Example pipeline
runner: 'airflow'
owner: 'data-eng-team'
modelVersion: '1.0'
defaults:
projectId: {{ project }}
location: {{ region }}
executionConfig:
retries: 1
Mengakses rahasia GitHub Action
Anda dapat menggunakan secret GitHub dalam file konfigurasi deployment dan definisi pipeline. Saat pipeline di-deploy melalui tindakan GitHub, nilai rahasia ini diteruskan ke definisi pipeline dan konfigurasi deployment.
Untuk membuat secret yang akan dapat diakses selama deployment:
Di GitHub, tambahkan secret dengan awalan
DEPLOY_VAR_. Contoh:DEPLOY_VAR_API_KEY.Untuk mengetahui informasi selengkapnya tentang cara membuat secret, lihat Menggunakan secret di GitHub Actions dalam dokumentasi GitHub.
Tambahkan variabel lingkungan yang sama ke alur kerja GitHub Anda. Baca nilai variabel ini dari secret GitHub.
Contoh:
jobs: deploy: runs-on: ubuntu-latest env: DEPLOY_VAR_API_KEY: ${{ secrets.API_KEY }} steps: ...Untuk mengetahui informasi selengkapnya tentang cara menambahkan variabel lingkungan ke alur kerja, lihat Menyimpan informasi dalam variabel di dokumentasi GitHub.
Gunakan nama variabel (tanpa awalan
DEPLOY_VAR_) dalam file definisi pipeline dan konfigurasi deployment. Contoh:{{ API_KEY }}.(Opsional) Untuk men-deploy versi lokal pipeline yang menggunakan secret GitHub, Anda dapat mengganti variabel lingkungan
DEPLOY_VAR_*dari secret baik melalui parameter command line, atau dengan menentukannya di lingkungan tempat Anda menjalankan perintah deployment.
Mengganti variabel melalui parameter command line
Perintah deployment gcloud CLI mendukung argumen
--substitutions, yang dapat Anda gunakan untuk mengganti atau menetapkan variabel untuk
konfigurasi deployment dan definisi pipeline.
Untuk mengganti variabel melalui parameter command line, berikan daftar variabel dan nilainya di command line:
Contoh:
gcloud beta orchestration-pipelines deploy \
--environment example-deployment-environment \
--local \
--substitutions=VARIABLE_NAME_1=value_1,VARIABLE_NAME_2=value_2
Sebagai alternatif, Anda dapat menyimpan penggantian dalam file YAML dan menentukannya dalam argumen --substitutions-file:
gcloud beta orchestration-pipelines deploy \
--environment example-deployment-environment \
--local \
--substitutions-file=substitutions.yaml
Dalam file penggantian, berikan pemetaan variabel:
VARIABLE_NAME_1: value_1
VARIABLE_NAME_2: value_2
Anda dapat menggunakan nama variabel dalam file definisi pipeline dan konfigurasi deployment. Contoh: {{ VARIABLE_NAME_1 }}.
Menyediakan dan mengganti variabel melalui variabel lingkungan
Definisi pipeline dan konfigurasi deployment Anda dapat menggunakan variabel
lingkungan yang memiliki awalan DEPLOY_VAR_.
Tetapkan variabel lingkungan:
export DEPLOY_VAR_VARIABLE_NAME_1=value_1Anda dapat menggunakan nama variabel (tanpa awalan
DEPLOY_VAR_) dalam file definisi pipeline dan konfigurasi deployment. Contoh:{{ VARIABLE_NAME_1 }}.