Cloud Composer 1 | Cloud Composer 2
Esta página é um complemento da página principal sobre como criar ambientes. Confira 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
Este guia pressupõe que você tenha um projeto do Google Cloud com faturamento configurado:
- Você pode 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 do Google no Terraform
Especifique o ID do projeto existente e uma região padrão para os recursos. Seu 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 seu 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, que tem 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 um novo principal na conta de serviço do seu 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 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
Criar seu ambiente usando o Terraform.
O exemplo demonstra como criar um ambiente que usa a conta de serviço personalizada. É possível adicionar mais parâmetros que definem outros parâmetros de configuração do ambiente, como parâmetros de escalonamento e desempenho personalizados ou outros pacotes PyPI.
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.5.1-airflow-2.6.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.5.1-airflow-2.6.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.5.1-airflow-2.6.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
A seguir
Consulte outras páginas de documentação para saber como configurar o 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
- Configurar redes autorizadas