Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)
Esta página é complementar à página principal sobre como criar ambientes. Ela demonstra como configurar um ambiente do Airflow gerenciado e uma conta de serviço gerenciado pelo usuário para esse ambiente em um projeto Google Cloud atual com o Terraform. Você pode usar esta página como ponto de partida e adicionar mais parâmetros de configuração ao seu ambiente, conforme necessário.
Sobre os módulos do Terraform para o Airflow gerenciado
O Google mantém o provedor do Terraform para Google Cloud, que inclui o google_composer_environment. Esse é o módulo oficialmente compatível com o Terraform.
Há outros módulos do Terraform mantidos pela comunidade de código aberto. Para resolver problemas com esses módulos, crie problemas nos repositórios deles no GitHub. Um exemplo de projeto de código aberto mantido no GitHub é o módulo terraform-google-composer, que faz parte dos blueprints e módulos do Terraform para Google Cloud. Embora o Google contribua com esse projeto, o módulo não é mantido pelo Google e não está relacionado ao provedor do Terraform para Google Cloud.
Antes de começar
Este guia pressupõe que você tenha um Google Cloud projeto com faturamento configurado:
- Você pode usar um projeto atual.
- É possível criar um novo projeto usando Google Cloud o console, a Google Cloud CLI, a API ou uma biblioteca de cliente Python.
- Você pode criar e gerenciar seu projeto usando o Terraform. Para mais
informações, consulte a documentação do Terraform para o
google_projectrecurso.
Autenticar com Google Cloud
Para autenticar com 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 atual e uma região padrão para os recursos. O ambiente do Airflow gerenciado usa essa região.
O provedor google-beta oferece suporte aos recursos do Airflow gerenciado que estão em pré-lançamento. Se você quiser usar apenas os recursos de GA do
Airflow gerenciado, use o google provedor em vez de google-beta.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Ativar a API Cloud Composer
Ative a API Cloud Composer no 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
}
Criar uma conta de serviço de ambiente no projeto
Este guia demonstra como criar uma conta de serviço de ambiente que tenha todas as permissões necessárias para executar um ambiente do Airflow gerenciado.
Recomendamos configurar uma conta de serviço gerenciado pelo usuário para seus ambientes do Airflow gerenciado que tenha apenas permissões necessárias para executar seu ambiente e operações nos DAGs, conforme descrito neste guia.
A conta de serviço do ambiente pode precisar de permissões extras para acessar outros recursos no projeto. Por exemplo, se os DAGs transferirem dados para o BigQuery, essa conta poderá precisar de permissões ou papéis específicos do BigQuery.
Defina uma conta de serviço personalizada com os seguintes papéis e permissõ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"
}
Criar um ambiente
Crie seu ambiente usando o Terraform.
O exemplo demonstra como criar um ambiente que usa uma conta de serviço personalizada. Você pode adicionar mais parâmetros que definem outros parâmetros de configuração do ambiente, como parâmetros de escalonamento e desempenho personalizados ou pacotes PyPI extras.
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-3-airflow-2.11.1-build.18"
}
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_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-3-airflow-2.11.1-build.18"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
A seguir
Consulte outras páginas de documentação para informações sobre como configurar o ambiente com o Terraform. Por 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