Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página é complementar à página principal sobre a criação de ambientes. Demonstra como configurar um ambiente do Cloud Composer e uma conta de serviço gerida pelo utilizador para este ambiente num projeto existente com o Google Cloud Terraform. Pode usar esta página como ponto de partida e, em seguida, adicionar mais parâmetros de configuração para o seu ambiente, conforme necessário.
Acerca dos módulos do Terraform para o Cloud Composer
A Google mantém o fornecedor Terraform para Google Cloud, que inclui o recurso google_composer_environment. Este é o módulo oficialmente suportado para o Terraform.
Existem outros módulos do Terraform mantidos pela comunidade de código aberto. Para resolver problemas com estes módulos, pode criar problemas nos respetivos repositórios no GitHub. Um exemplo de um projeto de código aberto mantido no GitHub é o módulo terraform-google-composer, que faz parte dos projetos e módulos do Terraform para Google Cloud. Embora a Google contribua para este projeto, o módulo não é mantido pela Google e não está relacionado com o fornecedor do Terraform para o Google Cloud.
Antes de começar
Este guia pressupõe que tem um Google Cloud projeto com a faturação configurada:
- Pode usar um projeto existente.
- Pode criar um novo projeto através da Google Cloud consola, da CLI do Google Cloud, da API ou de uma biblioteca cliente Python.
- Pode criar e gerir o seu projeto através do Terraform. Para mais
informações, consulte a documentação do Terraform para o recurso
google_project
.
Autentique com Google Cloud
Para autenticar com Google Cloud, execute o seguinte comando:
gcloud auth application-default login
Para mais informações sobre este comando, consulte
gcloud auth application-default
.
Configure o fornecedor Google no Terraform
Especifique o ID do projeto existente e uma região predefinida para os recursos. O seu ambiente do Cloud Composer usa esta região.
O fornecedor google-beta
suporta funcionalidades do Cloud Composer que estão em pré-visualização. Se quiser usar apenas as funcionalidades de GA do Cloud Composer, use o fornecedor google
em vez de google-beta
.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Ative a API Cloud Composer
Ative a API Cloud Composer no seu projeto:
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
}
Crie uma conta de serviço do ambiente no seu projeto
Este guia demonstra como criar uma conta de serviço do ambiente que tenha todas as autorizações necessárias para executar um ambiente do Cloud Composer.
Recomendamos vivamente que configure uma conta de serviço gerida pelo utilizador para os seus ambientes do Cloud Composer que tenha apenas as autorizações necessárias para executar o seu ambiente e operações nos seus DAGs, conforme descrito neste guia.
Embora não recomendemos a utilização desta abordagem, se não especificar a conta de serviço de um ambiente, o seu ambiente do Cloud Composer usa a conta de serviço predefinida do Compute Engine.
A conta de serviço do seu ambiente pode precisar de autorizações adicionais para aceder a outros recursos no seu projeto. Por exemplo, se os seus DAGs transferirem dados para o BigQuery, esta conta pode precisar de autorizações ou funções específicas do BigQuery.
Defina uma conta de serviço personalizada com as seguintes funções e autorizações:
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"
}
Conceda as autorizações necessárias à conta de serviço do Cloud Composer
Adicione uma nova associação de funções à política de autorização da conta de serviço do seu ambiente.
Adiciona a conta do agente de serviço do Cloud Composer como um novo principal na conta de serviço do seu ambiente e concede-lhe a função Extensão do agente de serviço da API Cloud Composer v2.
Se não estiver a usar o Terraform para definir a política de autorização do seu projeto, NÃO use o exemplo seguinte. Em alternativa, adicione esta associação através de outros métodos.
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"
}
Crie um ambiente
Crie o seu ambiente com o Terraform.
O exemplo demonstra como criar um ambiente que usa uma conta de serviço personalizada. Pode adicionar mais parâmetros que definam outros parâmetros de configuração do seu ambiente, como parâmetros de desempenho e escala personalizados, ou pacotes PyPI adicionais.
Para mais informações sobre outros parâmetros, consulte o artigo Crie ambientes.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.13.9-airflow-2.10.5"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Script completo do Terraform
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.13.9-airflow-2.10.5"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
O que se segue?
Consulte outras páginas de documentação para obter informações sobre a configuração do seu ambiente com o Terraform. Por exemplo:
- Crie ambientes
- Substitua as opções de configuração do Airflow
- Defina variáveis de ambiente
- Instale as dependências do Python
- Expanda ambientes