Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Halaman ini adalah pendamping halaman utama tentang membuat lingkungan. Tutorial ini menunjukkan cara menyiapkan lingkungan Cloud Composer dan akun layanan yang dikelola pengguna untuk lingkungan ini di project Google Cloud yang ada dengan Terraform. Anda dapat menggunakan halaman ini sebagai awal, lalu menambahkan lebih banyak parameter konfigurasi untuk lingkungan Anda, sesuai kebutuhan.
Sebelum memulai
Panduan ini mengasumsikan bahwa Anda memiliki project Google Cloud dengan penagihan yang dikonfigurasi:
- Anda dapat menggunakan project yang sudah ada.
- Anda dapat membuat project baru menggunakan Konsol Google Cloud, Google Cloud CLI, API, atau library klien Python.
- Anda dapat membuat dan mengelola project menggunakan Terraform. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Terraform untuk resource
google_project
.
Melakukan autentikasi dengan Google Cloud
Untuk melakukan autentikasi dengan Google Cloud, jalankan:
gcloud auth application-default login
Untuk informasi selengkapnya tentang perintah ini, lihat
gcloud auth application-default
.
Mengonfigurasi penyedia Google di Terraform
Tentukan project ID yang ada dan region default untuk resource. Lingkungan Cloud Composer Anda menggunakan region ini.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Mengaktifkan Cloud Composer API
Aktifkan Cloud Composer API di project Anda:
resource "google_project_service" "composer_api" {
provider = google-beta
project = "example-project"
service = "composer.googleapis.com"
// Disabling Cloud Composer API might irreversibly break all other
// environments in your project.
// This parameter prevents automatic disabling
// of the API when the resource is destroyed.
// We recommend to disable the API only after all environments are deleted.
disable_on_destroy = false
// this flag is introduced in 5.39.0 version of Terraform. If set to true it will
//prevent you from disabling composer_api through Terraform if any environment was
//there in the last 30 days
check_if_service_has_usage_on_destroy = true
}
Membuat akun layanan lingkungan di project Anda
Panduan ini menunjukkan cara membuat akun layanan lingkungan yang memiliki semua izin yang diperlukan untuk menjalankan lingkungan Cloud Composer.
Sebaiknya siapkan akun layanan yang dikelola pengguna untuk lingkungan Cloud Composer Anda yang hanya memiliki izin yang diperlukan untuk menjalankan lingkungan dan operasi di DAG Anda, seperti yang dijelaskan dalam panduan ini.
Meskipun sebaiknya jangan gunakan pendekatan ini, jika Anda tidak menentukan akun layanan lingkungan, lingkungan Cloud Composer Anda akan menggunakan akun layanan Compute Engine default.
Akun layanan lingkungan Anda mungkin memerlukan izin tambahan untuk mengakses resource lain dalam project Anda. Misalnya, jika DAG Anda mentransfer data ke BigQuery, akun ini mungkin memerlukan izin atau peran khusus untuk BigQuery.
Tentukan akun layanan kustom dengan peran dan izin berikut:
resource "google_service_account" "custom_service_account" {
provider = google-beta
account_id = "custom-service-account"
display_name = "Example Custom Service Account"
}
resource "google_project_iam_member" "custom_service_account" {
provider = google-beta
project = "example-project"
member = format("serviceAccount:%s", google_service_account.custom_service_account.email)
// Role for Public IP environments
role = "roles/composer.worker"
}
Memberikan izin yang diperlukan ke akun layanan Cloud Composer
Tambahkan binding peran baru ke kebijakan izin akun layanan lingkungan Anda.
Anda menambahkan akun Agen Layanan Cloud Composer sebagai akun utama baru di akun layanan lingkungan dan memberikan peran Ekstensi Agen Layanan Cloud Composer v2 API ke akun tersebut.
Jika Anda tidak menggunakan Terraform untuk menentukan kebijakan izin project, jangan gunakan contoh berikut. Sebagai gantinya, tambahkan binding ini menggunakan metode lain.
resource "google_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = google_service_account.custom_service_account.name
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}
Membuat lingkungan
Buat lingkungan Anda menggunakan Terraform.
Contoh ini menunjukkan cara membuat lingkungan yang menggunakan akun layanan kustom. Anda dapat menambahkan parameter lainnya yang menentukan parameter konfigurasi lingkungan lainnya, seperti parameter skala dan performa kustom, atau paket PyPI tambahan.
Untuk mengetahui informasi selengkapnya tentang parameter lainnya, lihat Membuat lingkungan.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.9.11-airflow-2.9.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Skrip Terraform lengkap
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
resource "google_project_service" "composer_api" {
provider = google-beta
project = "example-project"
service = "composer.googleapis.com"
// Disabling Cloud Composer API might irreversibly break all other
// environments in your project.
disable_on_destroy = false
// this flag is introduced in 5.39.0 version of Terraform. If set to true it will
//prevent you from disabling composer_api through Terraform if any environment was
//there in the last 30 days
check_if_service_has_usage_on_destroy = true
}
resource "google_service_account" "custom_service_account" {
provider = google-beta
account_id = "custom-service-account"
display_name = "Example Custom Service Account"
}
resource "google_project_iam_member" "custom_service_account" {
provider = google-beta
project = "example-project"
member = format("serviceAccount:%s", google_service_account.custom_service_account.email)
// Role for Public IP environments
role = "roles/composer.worker"
}
resource "google_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = google_service_account.custom_service_account.name
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.9.11-airflow-2.9.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Langkah selanjutnya
Lihat halaman dokumentasi lainnya untuk mengetahui informasi tentang cara mengonfigurasi lingkungan Anda dengan Terraform. Contoh:
- Membuat lingkungan
- Mengganti opsi konfigurasi Airflow
- Menetapkan variabel lingkungan
- Menginstal dependensi Python
- Menskalakan lingkungan