Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Esta página é um complemento da página principal sobre como criar ambientes. Ele demonstra como configurar um ambiente do Cloud Composer e uma conta de serviço gerenciado pelo usuário para esse ambiente em um projeto atual do Google Cloud com o Terraform. Use esta página como ponto de partida e adicione mais parâmetros de configuração ao seu ambiente, conforme necessário.
Antes de começar
Neste guia, presumimos que você tenha um projeto do Google Cloud com faturamento configurado:
- É possível usar um projeto atual.
- É possível criar um novo projeto usando o console do Google Cloud, a Google Cloud CLI, a API ou uma biblioteca de cliente do Python.
- É possível criar e gerenciar seu projeto usando o Terraform. Para mais
informações, consulte a documentação do Terraform para o recurso
google_project
.
Autenticar com o Google Cloud
Para autenticar com o Google Cloud, execute:
gcloud auth application-default login
Para mais informações sobre esse comando, consulte gcloud auth application-default
.
Configurar o provedor Google no Terraform
Especifique o ID do projeto atual e uma região padrão para os recursos. O ambiente do Cloud Composer usa essa região.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Ativar a API do 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
}
Criar uma conta de serviço personalizada no projeto
Por padrão, os ambientes do Cloud Composer usam a conta padrão do Compute Engine. Neste guia, demonstramos outra abordagem, criando uma nova conta de serviço com todas as permissões necessárias para executar um ambiente do Cloud Composer.
Defina uma conta de serviço personalizada com os papéis e permissões a seguir. Para mais informações sobre permissões para contas de serviço do ambiente, consulte Controle de acesso com o 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"
}
Conceder as permissões necessárias à conta de serviço do Cloud Composer
Adicione uma nova vinculação de papel à política de permissão da conta de serviço do ambiente.
Adicione a conta do agente de serviço do Cloud Composer como uma nova principal na conta de serviço do ambiente e conceda o papel Extensão do agente de serviço da API Cloud Composer v2 a ela.
Se você não estiver usando o Terraform para definir a política de permissão do seu projeto, não use o exemplo a seguir. Em vez disso, adicione essa vinculação usando 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"
}
Criar um ambiente
Crie o ambiente usando o Terraform.
O exemplo demonstra como criar um ambiente que usa uma conta de serviço personalizada. É possível adicionar mais parâmetros que definem outros parâmetros de configuração do ambiente, como parâmetros personalizados de desempenho e escalonamento, ou pacotes PyPI adicionais.
Para mais informações sobre outros parâmetros, consulte Criar ambientes.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.8.3-airflow-2.7.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Script completo do Terraform (parâmetros padrão)
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.3-airflow-2.7.3"
}
}
}
Script completo do Terraform (conta de serviço personalizada)
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.3-airflow-2.7.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
A seguir
Consulte outras páginas da documentação para saber como configurar seu ambiente com o Terraform. Exemplo:
- Criar ambientes
- Substituir as opções de configuração do Airflow
- Definir as variáveis de ambiente
- Instalar dependências do Python
- Escalonar ambientes