Cloud Composer 1 | Cloud Composer 2
Questa pagina è complementare alla pagina principale sulla creazione di ambienti. Dimostra come configurare un ambiente Cloud Composer e un account di servizio gestito dall'utente per questo ambiente in un progetto Google Cloud esistente con Terraform. Puoi utilizzare questa pagina come inizio per poi aggiungere altri parametri di configurazione per il tuo ambiente, se necessario.
Prima di iniziare
Questa guida presuppone che tu abbia un progetto Google Cloud con la fatturazione configurata:
- Puoi utilizzare un progetto esistente.
- Puoi creare un nuovo progetto utilizzando la console Google Cloud, Google Cloud CLI, un'API o una libreria client Python.
- Puoi creare e gestire il tuo progetto utilizzando Terraform. Per saperne di più, consulta la documentazione di Terraform per la risorsa
google_project
.
Autenticazione con Google Cloud
Per eseguire l'autenticazione con Google Cloud, esegui:
gcloud auth application-default login
Per maggiori informazioni su questo comando, consulta
gcloud auth application-default
.
Configura il provider Google in Terraform
Specifica l'ID progetto esistente e una regione predefinita per le risorse. Il tuo ambiente Cloud Composer utilizza questa regione.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Abilita l'API Cloud Composer
Abilita l'API Cloud Composer nel tuo progetto:
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
}
Crea un account di servizio personalizzato nel progetto
Per impostazione predefinita, gli ambienti Cloud Composer utilizzano l'account Compute Engine predefinito. Questa guida illustra un altro approccio, ovvero creando un nuovo account di servizio che dispone di tutte le autorizzazioni necessarie per eseguire un ambiente Cloud Composer.
Definisci un account di servizio personalizzato con i ruoli e le autorizzazioni seguenti. Per saperne di più sulle autorizzazioni per gli account di servizio dell'ambiente, consulta Controllo dell'accesso con IAM.
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"
}
Concedi le autorizzazioni necessarie all'account di servizio di Cloud Composer
Aggiungi una nuova associazione di ruoli al criterio di autorizzazione dell'account di servizio del tuo ambiente.
Aggiungi l'account agente di servizio Cloud Composer come nuova entità all'account di servizio del tuo ambiente e concedi all'account il ruolo Estensione agente di servizio API Cloud Composer v2.
Se non usi Terraform per definire il criterio di autorizzazione del progetto, non usare l'esempio seguente. Aggiungi invece questa associazione utilizzando altri metodi.
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"
}
Creazione di un ambiente
Creare il tuo ambiente utilizzando Terraform.
L'esempio mostra come creare un ambiente che utilizza l'account di servizio personalizzato. Puoi aggiungere altri parametri che definiscono altri parametri di configurazione del tuo ambiente, ad esempio parametri di scalabilità e prestazioni personalizzati o pacchetti PyPI aggiuntivi.
Per saperne di più sugli altri parametri, consulta Creare ambienti.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.8.0-airflow-2.7.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Script Terraform completo (parametri predefiniti)
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
}
resource "google_project_iam_member" "service_agent_role" {
provider = google-beta
project = "example-project"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
role = "roles/composer.ServiceAgentV2Ext"
}
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
// Add your environment configuration here
software_config {
image_version = "composer-2.8.0-airflow-2.7.3"
}
}
}
Script Terraform completo (account di servizio personalizzato)
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
}
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.8.0-airflow-2.7.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Passaggi successivi
Consulta altre pagine della documentazione per informazioni su come configurare il tuo ambiente con Terraform. Ad esempio:
- Crea ambienti
- Esegui l'override delle opzioni di configurazione di Airflow
- Imposta le variabili di ambiente
- Installa le dipendenze Python
- Ambienti di scalabilità
- Configurare le reti autorizzate