Halaman ini menjelaskan cara menyediakan resource untuk pipeline Anda.
Tentang penyediaan resource di Orchestration Pipelines
Orchestration Pipelines menggunakan pendekatan Infrastructure-as-Code (IaC) untuk mengelola Google Cloud resource yang digunakan oleh pipeline data Anda, yang memberikan manfaat berikut:
- Kontrol Versi Perubahan infrastruktur dilacak di Git.
- Pengulangan. Lingkungan dapat dibuat ulang dengan andal.
- Kolaborasi. Anggota tim dapat meninjau dan berkontribusi pada definisi infrastruktur.
- Otomatisasi. Terintegrasi ke dalam pipeline CI/CD.
- Opsionalitas dan Koeksistensi. Framework penyediaan resource bersifat opsional. Jika sudah menggunakan Terraform atau praktik IaC lainnya yang sudah mapan untuk penyediaan resource, Anda dapat terus melakukannya. Anda dapat mengelola subset resource yang relevan dengan pipeline atau aplikasi tertentu, yang berpotensi berdampingan dengan resource yang dikelola oleh alat lain.
Di Orchestration Pipelines, 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.
Contoh konfigurasi lingkungan deployment. Resource yang disediakan ditentukan dalam pemetaan resources.
environments:
dev:
project: example-dev-project
region: us-central1
variables:
dataset_name: marketing_analytics_dev
secrets:
dts_api_key: "projects/example-dev-project/secrets/dev-dts-key/versions/latest"
resources:
- type: dataproc.cluster
name: example-static-cluster-resource
definition:
clusterName: example-static-cluster
Saat Anda men-deploy pipeline, Orchestration Pipelines menggunakan model "buat atau perbarui" tanpa status untuk menyediakan resource yang telah Anda tentukan:
Jika resource ditentukan tetapi tidak ada, Orchestration Pipelines akan membuatnya.
Jika resource ada:
(Default) Perbarui konfigurasi resource agar sesuai dengan definisi.
Jika Anda menentukan perilaku ini dalam konfigurasi resource, Orchestration Pipelines dapat mengabaikan perubahan atau membuat ulang resource.
Jika Anda menghapus definisi resource dari konfigurasi, tindakan ini tidak akan menghapus resource. Pendekatan ini memprioritaskan keamanan dan mencegah kehilangan data yang tidak disengaja.
Jika Anda mengganti nama resource yang ada, Orchestration Pipelines akan membuat resource baru dengan nama baru dan mempertahankan resource aslinya.
Resource yang disediakan dibandingkan dengan profil resource
Profil resource adalah file template yang berisi definisi satu atau beberapa Google Cloud resource. Profil resource berbeda dengan resource yang disediakan dan dapat digunakan bersama dengan resource yang disediakan:
Dengan resource yang disediakan: Daripada menentukan konfigurasi resource yang sama secara inline dalam setiap lingkungan pengembangan di
deployment.yaml, Anda dapat menentukannya sekali dalam profil, lalu mereferensikannya. Resource yang disediakan mendukung berbagai jenis resource yang dapat ditentukan dalam profil resource.Dengan tindakan pipeline: Anda dapat menggunakan profil resource dalam tindakan saat resource disediakan selama durasi tindakan. Dengan menggunakan profil resource, bukan menentukan konfigurasi resource secara inline, Anda dapat memisahkan konfigurasi resource dari tindakan pipeline dan menggunakan kembali satu konfigurasi untuk beberapa tindakan pipeline. Tindakan pipeline hanya mendukung profil resource untuk resource Managed Service untuk Apache Spark, misalnya saat menjalankan tindakan pipeline di cluster sementara.
Melihat jenis resource yang tersedia
Lihat Jenis resource.
Anda juga dapat melihat semua resource yang tersedia di gcloud CLI dengan perintah berikut:
gcloud beta orchestration-pipelines resource-types list
Menambahkan resource baru
Untuk menambahkan resource yang disediakan baru ke konfigurasi lingkungan deployment, tambahkan definisinya sebagai berikut:
Dalam konfigurasi lingkungan deployment, tambahkan item baru ke daftar
environments.DEVELOPMENT_ENVIRONMENT.resources.Tentukan kunci berikut:
type: Jenis resource yang akan disediakan. Google Cloud Contoh:bigquery.dataset,dataform.repository. Anda dapat melihat jenis resource yang tersedia menggunakan perintah gcloud CLI.name: Nama logis untuk resource dalam filedeployment.yaml.parent: Menentukan resource induk untuk jenis resource yang memerlukannya. Tempatkannameresource induk sebagai nilai.updateAction: Menentukan tindakan apa yang harus diambil saat perubahan terdeteksi dalam konfigurasi resource:(Default)
patch: Perbarui properti resource yang telah berubah.Operasi pembaruan hanya mengubah properti yang ditentukan dalam konfigurasi resource (YAML), sehingga properti yang ada lainnya tidak berubah. Anda dapat menggunakan perilaku ini, misalnya, untuk mengelola hanya properti yang penting untuk eksekusi pipeline, dan mempertahankan properti lain yang dikonfigurasi secara manual.
Jika perubahan memengaruhi kolom yang tidak dapat diubah atau resource tidak dapat diubah, deployment akan gagal. Dalam kasus seperti itu, sebaiknya sesuaikan definisi agar hanya mengubah kolom yang dapat diubah. Jika hal ini tidak memungkinkan, Anda dapat mengubah tindakan pembaruan menjadi
recreate.skip: Abaikan perubahan dan jangan perbarui konfigurasi resource.Sebaiknya gunakan opsi ini jika Anda ingin mengelola keberadaan resource, tetapi melakukan perubahan dan pembaruan konfigurasi menggunakan cara lain, misalnya, secara manual.
recreate: Jika ada perubahan yang terdeteksi, hapus resource yang ada, lalu buat resource baru berdasarkan definisi resource saat ini.Sebaiknya gunakan opsi ini untuk resource yang sepenuhnya tidak dapat diubah atau saat perubahan dilakukan pada kolom yang tidak dapat diupdate di tempat.
definition: Spesifikasi resource, sebagai pemetaan yang mencerminkan struktur konfigurasi resource di API resource.(Opsional)
metadata: Metadata khusus Orchestration Pipelines. Beberapa jenis resource menggunakan kolom metadata untuk mengonfigurasi resource di Google Cloud Misalnya, kolommetadata.locationdapat digunakan untuk membuat resource zona.
Validasi dan deploy pipeline Anda. Orchestration Pipelines akan menyediakan resource baru saat pipeline di-deploy.
Contoh: Resource yang berjalan lama
Contoh ini menunjukkan cara menambahkan resource yang berjalan lama, dalam hal ini, cluster Managed Service untuk Apache Spark statis. Setelah disediakan, resource ini dapat digunakan dalam tindakan pipeline. Sebaiknya gunakan pendekatan umum ini saat pipeline Anda menggunakan resource persisten.
Contoh berikut menambahkan cluster Managed Service untuk Apache Spark statis bernama example-static-cluster ke lingkungan deployment dev. Definisi resource
disediakan berdasarkan Dataproc API.
environments:
dev:
project: "example-project"
region: "us-central1"
# A runner environment for executing pipeline actions
composer_environment: "example-runner-environment"
resources:
- type: dataproc.cluster
name: example-static-cluster
updateAction: patch
definition:
config:
masterConfig:
numInstances: 1
machineTypeUri: n1-standard-4
workerConfig:
numInstances: 3
machineTypeUri: n1-standard-4
Cluster ini dapat digunakan dalam tindakan pipeline seperti biasa. Tidak ada perbedaan dalam penggunaan dibandingkan dengan, misalnya, cluster yang dibuat secara manual.
modelVersion: "1.0"
pipelineId: "example-dataproc-pipeline"
...
actions:
- pyspark:
name: "run-pyspark-with-pyfiles-on-existing-cluster"
engine:
dataprocOnGce:
existingCluster:
clusterName: "example-static-cluster"
location: {{ region }}
projectId: {{ project }}
mainFilePath: "scripts/my_spark_job_with_pyfiles.py"
pyFiles:
- "scripts/lib1.py"
Contoh: Proses build dan rilis otomatis untuk Dataform
Contoh ini menunjukkan proses build dan rilis otomatis untuk Dataform. Dalam skenario contoh:
Repositori Dataform terhubung ke repositori GitHub melalui Developer Connect.
Anda mengirimkan perubahan ke repositori GitHub.
Setelah perubahan dikirim, Anda men-deploy pipeline.
Dataform mengambil kode dari repositori GitHub, membuat hasil kompilasi, dan menyiapkannya untuk dieksekusi.
Konfigurasi alur kerja kemudian digunakan untuk menjalankan alur kerja dengan rilis yang dikompilasi secara otomatis ini.
Contoh kode berikut menentukan repositori Dataform, konfigurasi rilis, dan konfigurasi alur kerja untuk repositori tersebut di lingkungan deployment dev:
- Baris
gitCommitish: "{{ COMMIT_SHA }}"mengikat konfigurasi rilis ke commit Git tertentu yang di-deploy. TheCOMMIT_SHAadalah variabel yang di-resolve ke SHA commit paket pipeline yang di-deploy. - Kunci
codeCompilationConfig.pipelineConfig.pathmengarah ke subfolder yang berisi aset pipeline. Dengan cara ini, Anda dapat menyimpan beberapa pipeline Dataform dalam satu repositori. Menetapkan
releaseCompilationResultkeautodalam definisireleaseConfigakan menginstruksikan Orchestration Pipelines untuk memicu kompilasi Dataform setelah resourcereleaseConfigdibuat atau diperbarui dengangitCommitishbaru:- Framework ini pertama-tama akan melakukan upsert (memperbarui atau membuat) resource
releaseConfiguntuk mengarah ke commit yang ditentukan. - Kemudian, karena setelan
auto, framework ini akan memanggil Dataform API untuk membuat Hasil Kompilasi baru berdasarkan kode pada commit tersebut. releaseConfigdiperbarui lagi untuk mengarah ke ID Hasil Kompilasi yang baru dibuat, sehingga versi tersebut menjadi versi "aktif".
- Framework ini pertama-tama akan melakukan upsert (memperbarui atau membuat) resource
environments:
dev:
project: example-project
region: us-central1
composer_environment: example-runner-environment
artifact_storage:
bucket: example-bucket
path_prefix: initialized-artifact-bucket
pipelines:
- source: initialized-pipeline.yaml
- source: dataform_local_pipeline.yaml
- source: dataform_service_pipeline.yaml
resources:
- name: {{ repository_name }}
type: dataform.repository
definition:
labels:
bigquery-deployment: preview
- type: dataform.repository.releaseConfig
name: subfolder-release
parent: {{ repository_name }}
definition:
gitCommitish: {{ COMMIT_SHA }}
releaseCompilationResult: auto
codeCompilationConfig:
pipelineConfig:
pipelineType: DATAFORM
path: weather_dataform
- type: dataform.repository.workflowConfig
name: {{ workflow_config_name }}
parent: {{ repository_name }}
definition:
releaseConfig: subfolder-release
invocationConfig:
serviceAccount: {{ service_account }}
variables:
service_account: example-account@example-project.iam.gserviceaccount.com
network_uri: projects/example-project/global/networks/default
subnetwork_uri: projects/example-project/regions/us-central1/subnetworks/default
region: us-central1
repository_name: weather-aggregation-repo
workflow_config_name: updated-subfolder-workflow
Contoh tindakan pipeline yang menjalankan alur kerja dengan konfigurasi alur kerja yang dibuat:
modelVersion: '1.0'
pipelineId: dataform_service_pipeline
description: Updated run Dataform pipeline via Dataform Service
runner: airflow
owner: data-eng-team
defaults:
projectId: {{ project }}
location: {{ region }}
executionConfig:
retries: 1
actions:
- pipeline:
name: run_dataform_service
framework:
dataform:
dataformService:
location: {{ region }}
projectId: {{ project }}
repositoryId: {{ repository_name }}
workflowInvocation:
workflowConfig: projects/{{ project }}/locations/{{ region }}/repositories/{{
repository_name }}/workflowConfigs/{{ workflow_config_name }}
- python:
name: fibonacci_python
mainFilePath: scripts/fibonacci.py
pythonCallable: fibonacciTen
engine:
local: {}
- sql:
name: dummy_bq_query
engine:
bigquery:
location: {{ region }}
query:
inline: 'SELECT COUNT(*) FROM `{{ project }}.weather_data.sensor_readings`'
tags:
- job:datacloud:vscode