Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)
Nesta página, explicamos como criar um ambiente do Airflow gerenciado.
- Para mais informações sobre ambientes, consulte Arquitetura de ambiente.
- Para mais informações sobre como criar um ambiente com o Terraform, consulte Criar ambientes (Terraform).
Antes de começar
Ative a API Cloud Composer. Para ver a lista completa de serviços usados pelo Airflow Gerenciado, consulte Serviços exigidos pelo Airflow Gerenciado.
O tempo aproximado para criar um ambiente é de 25 minutos.
Se você criar um ambiente com o Terraform, a conta de serviço usada pelo Terraform precisará ter um papel com a permissão
composer.environments.createativada.Para mais informações sobre a conta de serviço do Terraform, consulte Referência de configuração do provedor do Google.
Para mais informações sobre como usar o Terraform para criar um ambiente Airflow Gerenciado, consulte a documentação do Terraform.
Para mais informações sobre parâmetros adicionais, consulte Referência de argumentos do Terraform.
VPC SC: para implantar ambientes gerenciados do Airflow em um perímetro de segurança, consulte Configurar o VPC SC. Quando usado com o Airflow gerenciado, o VPC Service Controls tem várias limitações conhecidas.
Etapa 1. Criar ou escolher uma conta de serviço do ambiente
Ao criar um ambiente, você especifica uma conta de serviço. Essa conta de serviço é chamada de conta de serviço do ambiente. Seu ambiente usa essa conta de serviço para realizar a maioria das operações.
A conta de serviço do seu ambiente não é uma conta de usuário. Uma conta de serviço é um tipo especial de conta usada por um aplicativo ou uma instância de máquina virtual (VM), e não por uma pessoa.
Não é possível mudar a conta de serviço do ambiente depois.
Se você ainda não tiver uma conta de serviço para ambientes do Airflow Gerenciado no projeto, crie uma.
Consulte Criar ambientes (Terraform) para ver um exemplo estendido de como criar uma conta de serviço para seu ambiente no Terraform.
Para criar uma nova conta de serviço para seu ambiente:
Crie uma nova conta de serviço, conforme descrito na documentação do Identity and Access Management.
Conceda um papel a ela, conforme descrito na documentação do Identity and Access Management. O papel necessário é Worker do Composer (
composer.worker).Para acessar outros recursos no seu projeto Google Cloud , conceda permissões extras a essa conta de serviço. O papel Worker do Composer (
composer.worker) fornece esse conjunto de permissões obrigatório na maioria dos casos. Adicione outras permissões a essa conta de serviço apenas quando for necessário para a operação dos DAGs.
Etapa 2. Configuração básica
Esta etapa cria um ambiente do Airflow gerenciado com parâmetros padrão no local especificado.
Todas as outras etapas deste guia explicam como personalizar e configurar diferentes aspectos do ambiente. Todas as etapas restantes são opcionais.
Console
No console do Google Cloud , acesse a página Criar ambiente.
No campo Nome, digite um nome para o ambiente.
O nome precisa começar com uma letra minúscula seguida por até 62 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. O nome do ambiente é usado para criar subcomponentes para o ambiente. Você precisa fornecer um nome que também seja válido como um nome de bucket do Cloud Storage. Para ver uma lista de restrições, consulte Diretrizes de nomenclatura de bucket.
Na lista suspensa Local, escolha um local para o ambiente.
Um local é a região onde o ambiente está localizado.
Na lista suspensa Versão da imagem, selecione uma imagem do Airflow Gerenciado com a versão necessária do Airflow.
Na lista suspensa Conta de serviço, selecione uma conta para seu ambiente.
Se você ainda não tiver uma conta de serviço para seu ambiente, consulte Criar ou escolher uma conta de serviço do ambiente.
gcloud
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--service-account "SERVICE_ACCOUNT"
Substitua:
ENVIRONMENT_NAMEpelo nome do ambiente;O nome precisa começar com uma letra minúscula seguida por até 62 letras minúsculas, números ou hifens, e não pode terminar com um hífen. O nome do ambiente é usado para criar subcomponentes para o ambiente. Você precisa fornecer um nome que também seja válido como um nome de bucket do Cloud Storage. Para ver uma lista de restrições, consulte Diretrizes de nomenclatura de bucket.
LOCATIONpela região do ambiente.Um local é a região onde o ambiente está localizado.
SERVICE_ACCOUNTpela conta de serviço do seu ambiente.IMAGE_VERSIONpelo nome de uma imagem do Airflow gerenciado.
Exemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
"
API
Crie uma solicitação de API environments.create. Especifique a
configuração no recurso Environment.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"imageVersion": "IMAGE_VERSION"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Substitua:
PROJECT_IDpelo ID do projeto;LOCATIONpela região do ambiente.Um local é a região onde o ambiente está localizado.
ENVIRONMENT_NAMEpelo nome do ambiente.O nome precisa começar com uma letra minúscula seguida por até 62 letras minúsculas, números ou hífens, e não pode terminar com um hífen. O nome do ambiente é usado para criar subcomponentes para o ambiente. Você precisa fornecer um nome que também seja válido como um nome de bucket do Cloud Storage. Para ver uma lista de restrições, consulte Diretrizes de nomenclatura de bucket.
IMAGE_VERSIONpelo nome de uma imagem do Airflow gerenciado.SERVICE_ACCOUNTpela conta de serviço do seu ambiente.
Exemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"softwareConfig": {
"imageVersion": "composer-3-airflow-2.11.1-build.20"
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Para criar um ambiente com parâmetros padrão como um local especificado,
adicione o seguinte bloco de recursos à configuração do Terraform e execute
terraform apply.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
image_version = "IMAGE_VERSION"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Substitua:
ENVIRONMENT_NAMEpelo nome do ambiente;O nome precisa começar com uma letra minúscula seguida por até 62 letras minúsculas, números ou hífens, e não pode terminar com um hífen. O nome do ambiente é usado para criar subcomponentes para o ambiente. Você precisa fornecer um nome que também seja válido como um nome de bucket do Cloud Storage. Para ver uma lista de restrições, consulte Diretrizes de nomenclatura de bucket.
LOCATIONpela região do ambiente.Um local é a região onde o ambiente está localizado.
IMAGE_VERSIONcom o nome de uma imagem do Airflow gerenciado.SERVICE_ACCOUNTpela conta de serviço do seu ambiente.
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
image_version = "composer-3-airflow-2.11.1-build.20"
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Etapa 3. (Opcional) Ativar o modo de desenvolvimento
Os ambientes do modo de desenvolvimento podem ser usados para testar e desenvolver DAGs antes que eles sejam publicados para produção. É possível hibernar um ambiente de modo de desenvolvimento quando ele não estiver em uso.
Os ambientes do modo de desenvolvimento têm as seguintes restrições:
- Somente o Airflow Gerenciado (3ª geração) com o Airflow 3.
- Somente o modo de resiliência padrão.
Tamanho de ambiente pequeno e limites de recursos padrão fornecidos pela predefinição de ambiente pequeno. Não é possível alterar o número de componentes do Airflow ou os limites de recursos de um ambiente de modo de desenvolvimento.
Console
Na página Criar ambiente:
- Em versão de imagem, selecione uma versão com o Airflow 3.
- Selecione Modo de desenvolvimento.
gcloud
Ao criar um ambiente, o argumento --enable-development-mode
ativa o modo de desenvolvimento:
gcloud beta composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-3 \
--service-account "SERVICE_ACCOUNT" \
--enable-development-mode
API
Ao criar um ambiente, no recurso Ambiente, defina o campo mode como DEVELOPMENT:
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"mode": "DEVELOPMENT"
}
Exemplo:
// POST https://composer.googleapis.com/v1beta1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"mode": "DEVELOPMENT"
}
Terraform
O suporte do Terraform para esse recurso ainda não está disponível.
Depois que o ambiente do modo de desenvolvimento for criado, ele vai estar no estado "Em execução". É possível hibernar ou retomar a qualquer momento.
Etapa 4. (Opcional) Configurar a escala do ambiente e os parâmetros de desempenho
Para especificar a configuração de escalonamento e desempenho do ambiente, selecione o tamanho do ambiente e a configuração de cargas de trabalho.
É possível alterar todos os parâmetros de desempenho e escalonamento depois de criar um ambiente.
Os seguintes parâmetros controlam a escala e o desempenho:
Tamanho do ambiente. Controla os parâmetros de desempenho da infraestrutura gerenciada do Airflow Gerenciado, que inclui o banco de dados do Airflow. Selecione um tamanho maior de ambiente se você quiser executar um grande número de DAGs e tarefas com maior desempenho de infraestrutura. Por exemplo, um ambiente maior aumenta a quantidade de entradas de registro de tarefas do Airflow que o ambiente pode processar com o mínimo de atraso.
Configuração das cargas de trabalho. Controla a escala e o desempenho dos componentes do Airflow que são executados em um cluster do GKE do seu ambiente.
Programador do Airflow. Analisa arquivos de definição DAG, programa execuções de DAG com base no intervalo de programação e coloca em fila as tarefas a serem executadas pelos workers do Airflow.
Seu ambiente pode executar mais de um programador do Airflow ao mesmo tempo. Use vários programadores para distribuir a carga entre várias instâncias do programador e tenha melhor desempenho e confiabilidade.
Aumentar o número de programadores nem sempre melhora o desempenho do Airflow. Por exemplo, ter apenas um programador pode proporcionar um desempenho melhor do que com dois. Isso pode acontecer quando o programador extra não é utilizado e, portanto, consome recursos do seu ambiente sem contribuir com o desempenho geral. O desempenho real do programador depende do número de workers do Airflow, do número de DAGs e tarefas executados no ambiente e da configuração do Airflow e do ambiente.
Recomendamos começar com dois programadores e depois monitorar o desempenho do ambiente. Se você alterar o número de programadores, será possível escalonar o ambiente novamente para o número original de programadores.
Para mais informações sobre como configurar vários programadores, consulte a documentação do Airflow.
Acionador do Airflow. Monitora de forma assíncrona todas as tarefas adiadas no seu ambiente. Se você tiver pelo menos uma instância de acionador no seu ambiente (ou pelo menos duas em ambientes altamente resilientes), poderá usar operadores adiáveis nos seus DAGs.
No Airflow gerenciado (Geração 3), o gatilho do Airflow é ativado por padrão. Se você quiser criar um ambiente sem um acionador, defina o número de acionadores como zero.
Processador de DAG do Airflow. Processa arquivos DAG e os transforma em objetos DAG. No Airflow Gerenciado (Geração 3), essa parte do programador é executada como um componente de ambiente separado.
Servidor da Web do Airflow. Executa a interface da Web do Airflow em que você pode monitorar, gerenciar e visualizar os DAGs.
Workers do Airflow. Executar tarefas programadas pelos programadores do Airflow. Os números mínimo e máximo de workers no ambiente mudam dinamicamente dependendo do número de tarefas na fila.
Console
É possível selecionar uma predefinição para o ambiente. Quando você seleciona uma predefinição, os parâmetros de escala e desempenho dela são selecionados automaticamente. Você também tem a opção de selecionar uma predefinição personalizada e especificar todos os parâmetros de escala e desempenho para seu ambiente.
Para selecionar a configuração de escala e desempenho do ambiente, na página Criar ambiente:
Para usar valores predefinidos, na seção Recursos do ambiente, clique em Pequeno, Médio, Grande ou Extra grande.
Para especificar valores personalizados para os parâmetros de escala e desempenho, siga estas etapas:
Na seção Recursos do ambiente, clique em Personalizado.
Na seção Programador, defina o número de programadores que você quer usar e a alocação de recursos para CPU, memória e armazenamento.
Na seção Acionador, use o campo Número de acionadores para inserir o número de acionadores no ambiente.
Se você não quiser usar operadores adiáveis nos DAGs, defina o número de gatilhos como zero.
Se você definir pelo menos um acionador para seu ambiente, use os campos CPU e Memória para configurar a alocação de recursos para os acionadores.
Na seção Processador de DAG, especifique o número de processadores de DAG no seu ambiente e a quantidade de CPUs, memória e armazenamento para cada processador de DAG.
Ambientes altamente resilientes exigem pelo menos dois processadores de DAG.
Na seção Servidor da Web, especifique a quantidade de CPUs, memória e armazenamento para o servidor da Web.
Na seção Worker, especifique:
- O número mínimo e máximo de workers para limites de escalonamento automático no ambiente.
- A alocação de CPU, memória e armazenamento para seus workers
Na seção Infraestrutura principal, selecione o tamanho do ambiente na lista suspensa Tamanho do ambiente.
gcloud
Ao criar um ambiente, os argumentos a seguir controlam os parâmetros de escalonamento e desempenho dele.
--environment-sizeespecifica o tamanho do ambiente.--scheduler-countespecifica o número de programadores.--scheduler-cpuespecifica o número de CPUs para um programador do Airflow.--scheduler-memoryespecifica a quantidade de memória para um programador do Airflow.--scheduler-storageespecifica a quantidade de espaço em disco para um programador do Airflow.--triggerer-countespecifica o número de acionadores do Airflow no seu ambiente. O valor padrão dessa flag é0. Você precisa de acionadores se quiser usar operadores adiáveis nos DAGs.- Para ambientes de resiliência padrão, use um valor entre
0e10. - Para ambientes altamente resilientes, use
0ou um valor entre2e10.
- Para ambientes de resiliência padrão, use um valor entre
--triggerer-cpuespecifica o número de CPUs para um acionador do Airflow, em unidades de vCPU. Valores permitidos:0.5,0.75e1. O valor padrão é0.5.--triggerer-memoryespecifica a quantidade de memória para um acionador do Airflow, em GB. O valor padrão é0.5.A memória mínima necessária é igual ao número de CPUs alocadas para os acionadores. O valor máximo permitido é igual ao número de CPUs do acionador multiplicado por 6,5.
Por exemplo, se você definir a flag
--triggerer-cpucomo1, o valor mínimo para--triggerer-memoryserá1e o valor máximo será6.5.--dag-processor-countespecifica o número de processadores de DAG no seu ambiente.Ambientes altamente resilientes exigem pelo menos dois processadores de DAG.
--dag-processor-cpuespecifica o número de CPUs para o processador de DAG.--dag-processor-memoryespecifica a quantidade de memória para o processador de DAG.--dag-processor-storageespecifica a quantidade de espaço em disco para o processador de DAG.--web-server-cpuespecifica o número de CPUs para o servidor da Web do Airflow.--web-server-memoryespecifica a quantidade de memória do servidor da Web do Airflow.--web-server-storageespecifica a quantidade de espaço em disco para o servidor da Web do Airflow.--worker-cpuespecifica o número de CPUs para um worker do Airflow.--worker-memoryespecifica a quantidade de memória para um worker do Airflow.--worker-storageespecifica a quantidade de espaço em disco para um worker do Airflow.--min-workersespecifica o número mínimo de workers do Airflow. O cluster do ambiente é executado com pelo menos esse número de workers.--max-workersespecifica o número máximo de workers do Airflow. O cluster do ambiente é executado com no máximo esse número de workers.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "SERVICE_ACCOUNT" \
--environment-size ENVIRONMENT_SIZE \
--scheduler-count SCHEDULER_COUNT \
--scheduler-cpu SCHEDULER_CPU \
--scheduler-memory SCHEDULER_MEMORY \
--scheduler-storage SCHEDULER_STORAGE \
--triggerer-count TRIGGERER_COUNT \
--triggerer-cpu TRIGGERER_CPU \
--triggerer-memory TRIGGERER_MEMORY \
--dag-processor-count DAG_PROCESSOR_COUNT \
--dag-processor-cpu DAG_PROCESSOR_CPU \
--dag-processor-memory DAG_PROCESSOR_MEMORY \
--dag-processor-storage DAG_PROCESSOR_STORAGE \
--web-server-cpu WEB_SERVER_CPU \
--web-server-memory WEB_SERVER_MEMORY \
--web-server-storage WEB_SERVER_STORAGE \
--worker-cpu WORKER_CPU \
--worker-memory WORKER_MEMORY \
--worker-storage WORKER_STORAGE \
--min-workers WORKERS_MIN \
--max-workers WORKERS_MAX
Substitua:
ENVIRONMENT_SIZEcomsmall,medium,large,extra-large.SCHEDULER_COUNTpelo número de programadores.SCHEDULER_CPUpelo número de CPUs de um programador, em unidades de vCPU.SCHEDULER_MEMORYpela quantidade de memória de um programador.SCHEDULER_STORAGEpelo tamanho do disco de um programador.TRIGGERER_COUNTpelo número de acionadores.TRIGGERER_CPUcom o número de CPUs para um acionador, em unidades de vCPU.TRIGGERER_MEMORYpela quantidade de memória de um acionador, em GB.DAG_PROCESSOR_COUNTpelo número de processadores de DAG.DAG_PROCESSOR_CPUcom o número de CPUs para o processador de DAG.DAG_PROCESSOR_MEMORYcom a quantidade de memória para o processador de DAG.DAG_PROCESSOR_STORAGEcom a quantidade de espaço em disco para o processador de DAG.WEB_SERVER_CPUpelo número de CPUs do servidor da Web, em unidades de vCPU.WEB_SERVER_MEMORYpela quantidade de memória do servidor da Web.WEB_SERVER_STORAGEpela quantidade de memória do servidor da Web.WORKER_CPUpelo número de CPUs de um worker em unidades de vCPU.WORKER_MEMORYpela quantidade de memória de um worker.WORKER_STORAGEpelo tamanho do disco de um worker.WORKERS_MINpelo número mínimo de workers do Airflow que o ambiente pode executar. O número de workers no ambiente não ultrapassa esse número, mesmo que um número menor de workers possa processar a carga.WORKERS_MAXpelo número máximo de workers do Airflow que o ambiente pode executar. O número de workers no ambiente não ultrapassa esse número, mesmo que seja necessário um número maior de workers para processar a carga.
Exemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--environment-size small \
--scheduler-count 1 \
--scheduler-cpu 0.5 \
--scheduler-memory 2.5GB \
--scheduler-storage 2GB \
--triggerer-count 1 \
--triggerer-cpu 0.5 \
--triggerer-memory 0.5GB \
--dag-processor-count 1 \
--dag-processor-cpu 0.5 \
--dag-processor-memory 2GB \
--dag-processor-storage 1GB \
--web-server-cpu 1 \
--web-server-memory 2.5GB \
--web-server-storage 2GB \
--worker-cpu 1 \
--worker-memory 2GB \
--worker-storage 2GB \
--min-workers 2 \
--max-workers 4
API
Ao criar um ambiente, no recurso Ambiente > EnvironmentConfig > WorkloadsConfig, especifique os parâmetros de escala e desempenho do ambiente.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"workloadsConfig": {
"scheduler": {
"cpu": SCHEDULER_CPU,
"memoryGb": SCHEDULER_MEMORY,
"storageGb": SCHEDULER_STORAGE,
"count": SCHEDULER_COUNT
},
"triggerer": {
"count": TRIGGERER_COUNT,
"cpu": TRIGGERER_CPU,
"memoryGb": TRIGGERER_MEMORY
},
"dagProcessor": {
"count": DAG_PROCESSOR_COUNT,
"cpu": DAG_PROCESSOR_CPU,
"memoryGb": DAG_PROCESSOR_MEMORY,
"storageGb": DAG_PROCESSOR_STORAGE
},
"webServer": {
"cpu": WEB_SERVER_CPU,
"memoryGb": WEB_SERVER_MEMORY,
"storageGb": WEB_SERVER_STORAGE
},
"worker": {
"cpu": WORKER_CPU,
"memoryGb": WORKER_MEMORY,
"storageGb": WORKER_STORAGE,
"minCount": WORKERS_MIN,
"maxCount": WORKERS_MAX
}
},
"environmentSize": "ENVIRONMENT_SIZE",
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Substitua:
SCHEDULER_CPUpelo número de CPUs de um programador, em unidades de vCPU.SCHEDULER_MEMORYpela quantidade de memória de um programador, em GB.SCHEDULER_STORAGEpelo tamanho do disco de um programador, em GB.SCHEDULER_COUNTpelo número de programadores.TRIGGERER_COUNTcom o número de acionadores. O valor padrão é0. Você precisa de gatilhos se quiser usar operadores adiáveis nos seus DAGs.- Para ambientes de resiliência padrão, use um valor entre
0e10. - Para ambientes altamente resilientes, use
0ou um valor entre2e10.
Se você usar pelo menos um acionador, também precisará especificar os parâmetros
TRIGGERER_CPUeTRIGGERER_MEMORY:- Para ambientes de resiliência padrão, use um valor entre
TRIGGERER_CPUespecifica o número de CPUs para um acionador, em unidades de vCPU. Valores permitidos:0.5,0.75e1.TRIGGERER_MEMORYconfigura a quantidade de memória para um acionador. A memória mínima necessária é igual ao número de CPUs alocadas para os acionadores. O valor máximo permitido é igual ao número de CPUs do acionador multiplicado por 6,5.Por exemplo, se você definir
TRIGGERER_CPUcomo1, o valor mínimo deTRIGGERER_MEMORYserá1e o valor máximo será6.5.DAG_PROCESSOR_COUNTpelo número de processadores de DAG.Ambientes altamente resilientes exigem pelo menos dois processadores de DAG.
DAG_PROCESSOR_CPUpelo número de CPUs do processador de DAG, em unidades de vCPU.DAG_PROCESSOR_MEMORYpela quantidade de memória do processador de DAG, em GB.DAG_PROCESSOR_STORAGEcom a quantidade de espaço em disco para o processador de DAG, em GB.WEB_SERVER_CPUpelo número de CPUs do servidor da Web, em unidades de vCPU.WEB_SERVER_MEMORYpela quantidade de memória do servidor da Web, em GB.WEB_SERVER_STORAGEpelo tamanho do disco do servidor da Web, em GB.WORKER_CPUpelo número de CPUs de um worker em unidades de vCPU.WORKER_MEMORYpela quantidade de memória de um worker, em GB.WORKER_STORAGEpelo tamanho do disco de um worker, em GB.WORKERS_MINpelo número mínimo de workers do Airflow que o ambiente pode executar. O número de workers no ambiente não ultrapassa esse número, mesmo que um número menor de workers possa processar a carga.WORKERS_MAXpelo número máximo de workers do Airflow que o ambiente pode executar. O número de workers no ambiente não ultrapassa esse número, mesmo que seja necessário um número maior de workers para processar a carga.ENVIRONMENT_SIZEcom o tamanho do ambiente:ENVIRONMENT_SIZE_SMALL,ENVIRONMENT_SIZE_MEDIUM,ENVIRONMENT_SIZE_LARGE,ENVIRONMENT_SIZE_EXTRA_LARGE.
Exemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"workloadsConfig": {
"scheduler": {
"cpu": 2.5,
"memoryGb": 2.5,
"storageGb": 2,
"count": 1
},
"triggerer": {
"cpu": 0.5,
"memoryGb": 0.5,
"count": 1
},
"dagProcessor": {
"count": 1,
"cpu": 0.5,
"memoryGb": 2,
"storageGb": 1
},
"webServer": {
"cpu": 1,
"memoryGb": 2.5,
"storageGb": 2
},
"worker": {
"cpu": 1,
"memoryGb": 2,
"storageGb": 2,
"minCount": 2,
"maxCount": 4
}
},
"environmentSize": "ENVIRONMENT_SIZE_SMALL",
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Quando você cria um ambiente, os argumentos a seguir controlam os parâmetros de escala e desempenho do seu ambiente.
No bloco
config:- O campo
environment_sizecontrola o tamanho do ambiente.
- O campo
No bloco
workloads_config:- O campo
scheduler.cpuespecifica o número de CPUs para um programador do Airflow. - O campo
scheduler.memory_gbespecifica a quantidade de memória para um programador do Airflow. - O campo
scheduler.storage_gbespecifica a quantidade de espaço em disco para um programador. - O campo
scheduler.countespecifica o número de programadores no seu ambiente. - O campo
triggerer.cpuespecifica o número de CPUs para um acionador do Airflow. - O campo
triggerer.memory_gbespecifica a quantidade de memória para um engatilhador do Airflow. O campo
triggerer.countespecifica o número de acionadores no seu ambiente.O campo
dag_processor.cpuespecifica o número de CPUs para um processador de DAG.O campo
dag_processor.memory_gbespecifica a quantidade de memória para um processador de DAG.O campo
dag_processor.storage_gbespecifica a quantidade de espaço em disco para um processador de DAG.O campo
dag_processor.countespecifica o número de processadores de DAG.Ambientes altamente resilientes exigem pelo menos dois processadores de DAG.
O campo
web_server.cpuespecifica o número de CPUs para o servidor da Web do Airflow.O campo
web_server.memory_gbespecifica a quantidade de memória do servidor da Web do Airflow.O campo
web_server.storage_gbespecifica a quantidade de espaço em disco para o servidor da Web do Airflow.O campo
worker.cpuespecifica o número de CPUs para um worker do Airflow.O campo
worker.memory_gbespecifica a quantidade de memória para um worker do Airflow.O campo
worker.storage_gbespecifica a quantidade de espaço em disco para um worker do Airflow.O campo
worker.min_countespecifica o número mínimo de workers no ambiente.O campo
worker.max_countespecifica o número máximo de workers no ambiente.
- O campo
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
workloads_config {
scheduler {
cpu = SCHEDULER_CPU
memory_gb = SCHEDULER_MEMORY
storage_gb = SCHEDULER_STORAGE
count = SCHEDULER_COUNT
}
triggerer {
count = TRIGGERER_COUNT
cpu = TRIGGERER_CPU
memory_gb = TRIGGERER_MEMORY
}
dag_processor {
cpu = DAG_PROCESSOR_CPU
memory_gb = DAG_PROCESSOR_MEMORY
storage_gb = DAG_PROCESSOR_STORAGE
count = DAG_PROCESSOR_COUNT
}
web_server {
cpu = WEB_SERVER_CPU
memory_gb = WEB_SERVER_MEMORY
storage_gb = WEB_SERVER_STORAGE
}
worker {
cpu = WORKER_CPU
memory_gb = WORKER_MEMORY
storage_gb = WORKER_STORAGE
min_count = WORKERS_MIN
max_count = WORKERS_MAX
}
}
environment_size = "ENVIRONMENT_SIZE"
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Substitua:
ENVIRONMENT_NAMEpelo nome do ambienteLOCATIONpela região em que o ambiente está localizado;SERVICE_ACCOUNTpela conta de serviço do seu ambiente.SCHEDULER_CPUpelo número de CPUs de um programador, em unidades de vCPU.SCHEDULER_MEMORYpela quantidade de memória de um programador, em GB.SCHEDULER_STORAGEpelo tamanho do disco de um programador, em GB.SCHEDULER_COUNTpelo número de programadores.TRIGGERER_COUNTpelo número de acionadores.TRIGGERER_CPUcom o número de CPUs para um acionador, em unidades de vCPU.TRIGGERER_MEMORYpela quantidade de memória de um acionador, em GB.DAG_PROCESSOR_CPUcom o número de CPUs para o processador de DAG, em unidades de vCPU.DAG_PROCESSOR_MEMORYpela quantidade de memória do processador de DAG, em GB.DAG_PROCESSOR_STORAGEpela quantidade de espaço em disco para o processador de DAG, em GB.DAG_PROCESSOR_COUNTcom o número de processadores de DAG.WEB_SERVER_CPUpelo número de CPUs do servidor da Web, em unidades de vCPU.WEB_SERVER_MEMORYpela quantidade de memória do servidor da Web, em GB.WEB_SERVER_STORAGEpelo tamanho do disco do servidor da Web, em GB.WORKER_CPUpelo número de CPUs de um worker em unidades de vCPU.WORKER_MEMORYpela quantidade de memória de um worker, em GB.WORKER_STORAGEpelo tamanho do disco de um worker, em GB.WORKERS_MINpelo número mínimo de workers do Airflow que o ambiente pode executar. O número de workers no ambiente não ultrapassa esse número, mesmo que um número menor de workers possa processar a carga.WORKERS_MAXpelo número máximo de workers do Airflow que o ambiente pode executar. O número de workers no ambiente não ultrapassa esse número, mesmo que seja necessário um número maior de workers para processar a carga.ENVIRONMENT_SIZEcom o tamanho do ambiente:ENVIRONMENT_SIZE_SMALL,ENVIRONMENT_SIZE_MEDIUM,ENVIRONMENT_SIZE_LARGE,ENVIRONMENT_SIZE_EXTRA_LARGE.
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
workloads_config {
scheduler {
cpu = 2.5
memory_gb = 2.5
storage_gb = 2
count = 1
}
triggerer {
count = 1
cpu = 0.5
memory_gb = 0.5
}
dag_processor {
cpu = 1
memory_gb = 2
storage_gb = 1
count = 1
}
web_server {
cpu = 1
memory_gb = 2.5
storage_gb = 2
}
worker {
cpu = 1
memory_gb = 2
storage_gb = 2
min_count = 2
max_count = 4
}
}
environment_size = "ENVIRONMENT_SIZE_SMALL"
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Etapa 5. (Opcional) Ativar o modo de alta capacidade de recuperação
Altamente resiliente (alta disponibilidade) Os ambientes do Airflow Gerenciado usam mecanismos de redundância e failover integrados que reduzem a suscetibilidade do ambiente a falhas de zona e interrupções de ponto único de falha.
No Airflow gerenciado (Geração 3), ambientes altamente resilientes estão disponíveis a partir dos builds do Airflow composer-3-airflow-2.10.2-build.13 e composer-3-airflow-2.9.3-build.20.
Um ambiente altamente resiliente é multizonal e executado em pelo menos duas zonas de uma região selecionada. Os seguintes componentes são executados em zonas separadas:
Exatamente dois programadores do Airflow
Pelo menos dois acionadores (se o número de acionadores não estiver definido como
0)Pelo menos dois processadores de DAG
Dois servidores da Web
O número mínimo de workers é definido como dois, e o cluster do ambiente distribui instâncias de worker entre as zonas. Em caso de interrupção temporária na zona, as instâncias de worker afetadas são reagendadas em uma zona diferente. O componente do Cloud SQL de um ambiente altamente resiliente tem uma instância principal e uma instância em espera distribuídas entre zonas.
Console
Na página Criar ambiente:
Na seção Modo de resiliência, selecione Alta resiliência.
Na seção Recursos do ambiente, selecione parâmetros de escalonamento para um ambiente altamente resiliente. Ambientes altamente resilientes exigem exatamente dois programadores, zero ou entre dois e dez acionadores e pelo menos dois workers:
Clique em Custom.
Na lista suspensa Número de programadores, selecione
2.Na lista suspensa Número de acionadores, selecione
0ou um valor entre2e10. Configure a alocação de CPU e memória para os acionadores.Na lista suspensa Número mínimo de workers, selecione
2ou mais, dependendo do número necessário de workers.
Na seção Configuração de rede:
Em Tipo de rede, selecione Ambiente de IP privado.
Se necessário, especifique outros parâmetros de rede.
gcloud
Ao criar um ambiente, o argumento --enable-high-resilience
ativa o modo de alta resiliência.
Defina os seguintes argumentos:
--enable-high-resilience--enable-private-environmente outros parâmetros de rede para um ambiente de IP privado, se necessário.--scheduler-counta2--triggerer-counta0ou um valor entre2e10. Se você usar gatilhos, as flags--triggerer-cpu and--triggerer-memory` também serão necessárias para a criação do ambiente.Para mais informações sobre as flags
--triggerer-count,--triggerer-cpue--triggerer-memory, consulte Configurar parâmetros de escala e desempenho do ambiente.--min-workersa2ou mais
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "SERVICE_ACCOUNT" \
--enable-high-resilience \
--enable-private-environment \
--scheduler-count 2 \
--triggerer-count 2 \
--triggerer-cpu 0.5 \
--triggerer-memory 0.5 \
--min-workers 2
API
Ao criar um ambiente, no recurso Environment > EnvironmentConfig, ative o modo de alta capacidade de recuperação.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"resilience_mode": "HIGH_RESILIENCE",
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Exemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"resilience_mode": "HIGH_RESILIENCE",
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Ao criar um ambiente, o campo resilience_mode no bloco config
ativa o modo de alta resiliência.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
resilience_mode = "HIGH_RESILIENCE"
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
resilience_mode = "HIGH_RESILIENCE"
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Etapa 6. (Opcional) Especifique uma zona para o banco de dados do ambiente
É possível especificar uma zona preferencial do Cloud SQL ao criar um ambiente de resiliência padrão.
Console
Na página Criar ambiente:
Na seção Configuração avançada, expanda o item Mostrar configuração avançada.
Na lista Zona do banco de dados do Airflow, selecione uma zona preferencial do Cloud SQL.
gcloud
Ao criar um ambiente, o argumento --cloud-sql-preferred-zone especifica uma zona preferencial do Cloud SQL.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "SERVICE_ACCOUNT" \
--cloud-sql-preferred-zone SQL_ZONE
Substitua:
SQL_ZONE: zona preferida do Cloud SQL. Essa zona precisa estar localizada na região em que o ambiente está localizado.
Exemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--cloud-sql-preferred-zone us-central1-a
API
Ao criar um ambiente, no recurso Ambiente > DatabaseConfig, especifique a zona preferencial do Cloud SQL.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"databaseConfig": {
"zone": "SQL_ZONE"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Substitua:
SQL_ZONE: zona preferida do Cloud SQL. Essa zona precisa estar localizada na região em que o ambiente está localizado.
Exemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"databaseConfig": {
"zone": "us-central1-a"
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Quando você cria um ambiente, o campo zone no bloco database_config
especifica a zona preferencial do Cloud SQL.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
database_config {
zone = "SQL_ZONE"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Substitua:
SQL_ZONE: zona preferencial do Cloud SQL. Essa zona precisa estar localizada na região em que o ambiente está localizado.
Etapa 7. (Opcional) Configurar a rede do ambiente
É possível configurar a rede do Airflow gerenciado (3ª geração) das seguintes maneiras:
- Em um ambiente de IP público, os componentes do Airflow do seu ambiente podem acessar a Internet.
- Em um ambiente de IP privado, os componentes do Airflow do seu ambiente não têm acesso à Internet.
- Os ambientes de IP particular e público podem se conectar à sua rede VPC como uma opção separada.
- É possível especificar o intervalo de IP interno do ambiente. Não será possível alterar esse intervalo depois.
É possível ativar o acesso à Internet ao instalar pacotes PyPI. Por exemplo, seu ambiente de IP privado ainda pode instalar pacotes PyPI do índice de pacotes do Python se você ativar essa opção.
Para um ambiente de VPC compartilhada, é preciso fazer mais configurações de rede para o projeto host e, em seguida, criar um ambiente de IP público ou particular em um projeto de serviço. Siga as instruções na página Como configurar a VPC compartilhada.
Console
Verifique se a rede está configurada para o tipo de ambiente que você quer criar.
Na seção Configuração de rede, expanda o item Mostrar configuração de rede.
Se você quiser conectar seu ambiente a uma rede VPC, no campo Anexo de rede, selecione um anexo de rede. Também é possível criar um novo anexo de rede. Para mais informações, consulte Conectar um ambiente a uma rede VPC.
Se você quiser criar um ambiente de IP privado, na seção Tipo de rede, selecione a opção Ambiente de IP privado.
Se você quiser adicionar tags de rede, consulte Adicionar tags de rede para mais informações.
gcloud
Verifique se a rede está configurada para o tipo de ambiente que você quer criar.
Quando você cria um ambiente, os argumentos a seguir controlam os parâmetros de rede. Se você omitir um parâmetro, o valor padrão será usado.
--enable-private-environmentativa um ambiente de IP particular.--networkespecifica o ID da rede VPC.--subnetworkespecifica o ID da sub-rede VPC.
--composer-internal-ipv4-cidr-blockespecifica o intervalo de IP interno do ambiente. Esse intervalo é usado pelo Airflow Gerenciado no projeto de locatário do seu ambiente.
Exemplo (ambiente de IP particular com uma rede VPC conectada)
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "SERVICE_ACCOUNT" \
--enable-private-environment \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID \
Substitua:
NETWORK_IDpelo ID de rede VPC.SUBNETWORK_IDpelo ID de sub-rede VPC.
Etapa 8. (Opcional) Adicionar tags de rede
As tags de rede são aplicadas a todas as VMs de nó no cluster do ambiente. As tags são usadas para identificar origens ou destinos válidos em firewalls de rede. Cada tag na lista precisa estar em conformidade com o RFC 1035.
Por exemplo, talvez você queira adicionar tags de rede se planeja restringir o tráfego de um ambiente de IP particular com regras de firewall.
Console
Na página Criar ambiente:
- Localize a seção Configuração de rede.
- No campo Tags de rede, insira as tags de rede do seu ambiente.
gcloud
Ao criar um ambiente, os seguintes argumentos controlam as tags de rede:
--tagsespecifica uma lista separada por vírgulas de tags de rede aplicadas a todas as VMs de nós.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "SERVICE_ACCOUNT" \
--tags TAGS
Substitua:
TAGScom uma lista separada por vírgulas de tags de rede.
Exemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.20 \
--tags group1,production
API
Ao criar um ambiente, no recurso Ambiente > EnvironmentConfig, especifique tags de rede para o ambiente.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"tags": [
"TAG"
],
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Substitua:
TAGpor uma tag de rede.
Exemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeConfig": {
"tags": [
"group1",
"production"
],
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Ao criar um ambiente, os campos a seguir definem as tags de rede dele:
- O campo
tagsno bloconode_configespecifica uma lista separada por vírgulas de tags de rede aplicadas a todas as VMs de nós.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
tags = ["TAGS"]
service_account = "SERVICE_ACCOUNT"
}
}
}
Substitua:
TAGScom uma lista separada por vírgulas de tags de rede.
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
tags = ["group1","production"]
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Etapa 9: (Opcional) Configurar o acesso à rede do servidor da Web
Os parâmetros de acesso do servidor da Web do Airflow não dependem do tipo de ambiente. Em vez disso, você pode configurar o acesso ao servidor da Web separadamente. Por exemplo, um ambiente de IP privado ainda pode ter a IU do Airflow acessível pela Internet.
Não é possível configurar os intervalos de IP permitidos usando endereços IP particulares.
Console
Na página Criar ambiente:
Na seção Configuração de rede, expanda o item Mostrar configuração de rede.
Na seção Controle de acesso à rede do servidor da Web:
Para fornecer acesso ao servidor da Web do Airflow de todos os endereços IP, selecione Permitir acesso de todos os endereços IP.
Para restringir o acesso somente a intervalos de IP específicos, selecione Permitir acesso apenas de endereços IP específicos . No campo Intervalo de IP, especifique um intervalo de IP na notação CIDR. No campo Descrição, especifique uma descrição opcional para este intervalo. Se você quiser especificar mais de um intervalo, clique em Adicionar intervalo de IP.
Para proibir o acesso de todos os endereços IP, selecione Permitir acesso somente de endereços IP específicos e clique em Excluir item ao lado da entrada de intervalo vazia.
gcloud
Quando você cria um ambiente, os seguintes argumentos controlam o nível de acesso do servidor da Web:
--web-server-allow-allfornece acesso ao Airflow de todos os endereços IP. Essa é a opção padrão.--web-server-allow-iprestringe o acesso apenas a intervalos de IP de origem específicos. Para especificar vários intervalos de IP, use esse argumento várias vezes.--web-server-deny-allproíbe o acesso a todos os endereços IP.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
Substitua:
WS_IP_RANGEpelo intervalo de IP, na notação CIDR, que pode acessar a IU do Airflow.WS_RANGE_DESCRIPTIONpela descrição do intervalo de IP;
Exemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--web-server-allow-ip ip_range=192.0.2.0/24,description="office net 1" \
--web-server-allow-ip ip_range=192.0.4.0/24,description="office net 3"
API
Ao criar um ambiente, no recurso Ambiente > EnvironmentConfig, especifique os parâmetros de acesso do servidor da Web.
Para fornecer acesso ao servidor da Web do Airflow de todos os endereços IP, omita
webServerNetworkAccessControl.Para restringir o acesso apenas a intervalos de IP específicos, especifique um ou mais intervalos em
allowedIpRanges.Para proibir o acesso de todos os endereços IP, adicione
allowedIpRangese transforme-o em uma lista vazia. Não especifique intervalos de IP nele.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Substitua:
WS_IP_RANGEpelo intervalo de IP, na notação CIDR, que pode acessar a IU do Airflow.WS_RANGE_DESCRIPTIONpela descrição do intervalo de IP;
Exemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "192.0.2.0/24",
"description": "office net 1"
},
{
"value": "192.0.4.0/24",
"description": "office net 3"
}
]
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Quando você cria um ambiente, o bloco allowed_ip_range no bloco web_server_network_access_control contém intervalos de IP que podem acessar o servidor da Web.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
web_server_network_access_control {
allowed_ip_range {
value = "WS_IP_RANGE"
description = "WS_RANGE_DESCRIPTION"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Substitua:
WS_IP_RANGEpelo intervalo de IP, na notação CIDR, que pode acessar a IU do Airflow.WS_RANGE_DESCRIPTIONpela descrição do intervalo de IP;
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
web_server_network_access_control {
allowed_ip_range {
value = "192.0.2.0/24"
description = "office net 1"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "office net 3"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
Etapa 10: (Opcional) Especificar substituições de configuração e variáveis de ambiente do Airflow
É possível configurar substituições de configuração do Airflow e variáveis de ambiente ao criar um ambiente. Como alternativa, faça isso mais tarde, depois que seu ambiente for criado.
Algumas opções de configuração do Airflow estão bloqueadas e não podem ser substituídas.
Para ver a lista de opções de configuração disponíveis do Airflow, consulte Referência de configuração do Airflow 2 e Airflow 1.10.*.
Para especificar substituições de configuração e variáveis de ambiente do Airflow:
Console
Na página Criar ambiente:
Na seção Variáveis de ambiente, clique em Adicionar variável de ambiente.
Digite o Nome e o Valor da variável de ambiente.
Na seção Substituições de configuração do Airflow, clique em Adicionar substituição da configuração do Airflow.
Insira a Seção, a Chave e o Valor para substituir a opção de configuração.
Exemplo:
Seção Chave Valor webserverdag_orientationTB
gcloud
Quando você cria um ambiente, os argumentos a seguir controlam as variáveis de ambiente e as substituições de configuração do Airflow:
--env-variablesespecifica uma lista separada por vírgulas de variáveis de ambiente.Os nomes das variáveis podem conter letras maiúsculas e minúsculas, dígitos e sublinhados, mas não podem começar com um dígito.
--airflow-configsespecifica uma lista de chaves e valores separada por vírgula para substituições de configuração do Airflow.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "SERVICE_ACCOUNT" \
--env-variables ENV_VARS \
--airflow-configs CONFIG_OVERRIDES
Substitua:
ENV_VARSpor uma lista de paresNAME=VALUEseparados por vírgulas para variáveis de ambiente.CONFIG_OVERRIDESpor uma lista de paresSECTION-KEY=VALUEseparados por vírgulas para substituições de configuração. Separe o nome da seção de configuração com um símbolo-, seguido pelo nome da chave. Por exemplo,core-dags_are_paused_at_creation.
Exemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--env-variables SENDGRID_MAIL_FROM=user@example.com,SENDGRID_API_KEY=example-key \
--airflow-configs core-dags_are_paused_at_creation=True,webserver-dag_orientation=TB
API
Ao criar um ambiente, no recurso Environment > EnvironmentConfig, especifique variáveis de ambiente e substituições de configuração do Airflow.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"airflowConfigOverrides": {
"SECTION-KEY": "OVERRIDE_VALUE"
},
"envVariables": {
"VAR_NAME": "VAR_VALUE",
}
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Substitua:
SECTIONpela seção no arquivo de configuração em que a opção de configuração do Airflow está localizada;KEYpelo nome da opção de configuração do Airflow;OVERRIDE_VALUEpor um valor da opção de configuração do Airflow;VAR_NAMEpelo nome da variável de ambiente;VAR_VALUEpelo valor da variável de ambiente.
Exemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"softwareConfig": {
"airflowConfigOverrides": {
"core-dags_are_paused_at_creation": "True",
"webserver-dag_orientation": "TB"
},
"envVariables": {
"SENDGRID_MAIL_FROM": "user@example.com",
"SENDGRID_API_KEY": "example-key"
}
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Quando você cria um ambiente, os seguintes blocos controlam as variáveis de ambiente e as substituições de configuração do Airflow:
O bloco
env_variablesno blocosoftware_configespecifica as variáveis de ambiente.Os nomes das variáveis podem conter letras maiúsculas e minúsculas, dígitos e sublinhados, mas não podem começar com um dígito.
O bloco
airflow_config_overridesno blocosoftware_configespecifica substituições de configuração do Airflow.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
airflow_config_overrides = {
SECTION-KEY = "OVERRIDE_VALUE"
}
env_variables = {
VAR_NAME = "VAR_VALUE"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Substitua:
SECTIONpela seção no arquivo de configuração em que a opção de configuração do Airflow está localizada;KEYpelo nome da opção de configuração do Airflow;OVERRIDE_VALUEpor um valor da opção de configuração do Airflow;VAR_NAMEpelo nome da variável de ambiente;VAR_VALUEpelo valor da variável de ambiente.
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
airflow_config_overrides = {
core-dags_are_paused_at_creation = "True"
webserver-dag_orientation = "TB"
}
env_variables = {
SENDGRID_MAIL_FROM = "user@example.com"
SENDGRID_API_KEY = "example-key"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Etapa 11: (Opcional) Especificar janelas de manutenção
As janelas de manutenção padrão no Airflow Gerenciado (Geração 3) são definidas da seguinte maneira:
- Todos os horários estão no fuso horário local da região em que o ambiente está, mas o horário de verão é ignorado.
- Na terça, quarta, quinta e sexta-feira, as janelas de manutenção são das 00h às 2h.
- No sábado, domingo e segunda-feira, as janelas de manutenção são das 00h00min00s às 04h00min00s.
Para especificar janelas de manutenção personalizadas para seu ambiente:
Console
Na página Criar ambiente
Localize a seção Janelas de manutenção.
Na lista suspensa Fuso horário, escolha um fuso horário para janelas de manutenção.
Defina o Horário de início, os Dias e a Duração para que:
Pelo menos 12 horas são alocadas em uma única semana.
É possível usar vários intervalos de tempo, mas cada um precisa ter pelo menos 4 horas de duração.
Por exemplo, um período de 4 horas todas as segundas, quartas e sextas-feiras fornece o tempo necessário.
gcloud
Os argumentos a seguir definem os parâmetros das janelas de manutenção:
--maintenance-window-startdefine o horário de início de uma janela de manutenção.--maintenance-window-enddefine o horário de término de uma janela de manutenção.--maintenance-window-recurrencedefine a recorrência da janela de manutenção.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "SERVICE_ACCOUNT" \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
Substitua:
ENVIRONMENT_NAMEpelo nome do ambiente;DATETIME_STARTcom a data e hora de início no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada.DATETIME_ENDpela data e hora de término no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada. A data e hora especificadas precisam ser posteriores à data de início.MAINTENANCE_RECURRENCEpor um RFC 5545 RRULE para recorrência de janelas de manutenção. O Airflow gerenciado é compatível com dois formatos:O formato
FREQ=DAILYespecifica uma recorrência diária.O formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica uma recorrência nos dias da semana selecionados.
O exemplo a seguir especifica uma janela de manutenção de 6 horas entre 1h e 7h (UTC) às quartas, sábados e domingos. A data de 1º de janeiro de 2023 é ignorada.
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--maintenance-window-start '2023-01-01T01:00:00Z' \
--maintenance-window-end '2023-01-01T07:00:00Z' \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'
API
Ao criar um ambiente, no recurso Ambiente > EnvironmentConfig, especifique os parâmetros das janelas de manutenção:
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"maintenanceWindow": {
"startTime": "DATETIME_START",
"endTime": "DATETIME_END",
"recurrence": "MAINTENANCE_RECURRENCE"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Substitua:
DATETIME_STARTcom a data e hora de início no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada.DATETIME_ENDpela data e hora de término no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada. A data e a hora especificadas precisam ser posteriores à data de início.MAINTENANCE_RECURRENCEpor um RFC 5545 RRULE para a recorrência de janelas de manutenção. O Airflow gerenciado aceita dois formatos:O formato
FREQ=DAILYespecifica uma recorrência diária.O formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica uma recorrência nos dias da semana selecionados.
O exemplo a seguir especifica uma janela de manutenção de seis horas entre 1h e 7h (UTC) às quartas-feiras, sábados e domingos. A data de 1º de janeiro de 2023 é ignorada.
Exemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"maintenanceWindow": {
"startTime": "2023-01-01T01:00:00Z",
"endTime": "2023-01-01T07:00:00Z",
"recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Terraform
O bloco maintenance_window especifica as janelas de manutenção do seu
ambiente:
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
maintenance_window {
start_time = "DATETIME_START"
end_time = "DATETIME_END"
recurrence = "MAINTENANCE_RECURRENCE"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Substitua:
DATETIME_STARTpela data e hora de início no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada.DATETIME_ENDpela data e hora de término no formato de entrada de data/hora. Somente a hora especificada do dia é usada, a data especificada é ignorada. A data e a hora especificadas precisam ser posteriores à data de início.MAINTENANCE_RECURRENCEpor um RFC 5545 RRULE para a recorrência de janelas de manutenção. O Airflow gerenciado aceita dois formatos:- O formato
FREQ=DAILYespecifica uma recorrência diária. - O formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica uma recorrência nos dias da semana selecionados.
- O formato
O exemplo a seguir especifica uma janela de manutenção de 6 horas entre 1h e 7h (UTC) às quartas, sábados e domingos. A data de 1º de janeiro de 2023 é ignorada.
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
maintenance_window {
start_time = "2023-01-01T01:00:00Z"
end_time = "2023-01-01T07:00:00Z"
recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
}
}
}
Etapa 12: (Opcional) Integração da linhagem de dados
A linhagem de dados é um recurso do Knowledge Catalog que permite acompanhar o movimento dos dados.
A integração da linhagem de dados está disponível em todas as versões do Airflow gerenciado (3ª geração).A integração da linhagem de dados é ativada automaticamente em um novo ambiente do Airflow Gerenciado se as seguintes condições forem atendidas:
A API Data Lineage está ativada no seu projeto. Para mais informações, consulte Como ativar a API Data Lineage na documentação do Knowledge Catalog.
Um back-end de linhagem personalizado não está configurado no Airflow.
É possível desativar a integração do rastreamento da origem de dados ao criar um ambiente. Por exemplo, se você quiser substituir o comportamento automático ou ativar a linhagem de dados depois que o ambiente for criado.
Console
Para desativar a integração da linhagem de dados, na página Criar ambiente, faça o seguinte:
Na seção Configuração avançada, expanda Mostrar configuração avançada.
No menu Integração da linhagem do Knowledge Catalog, selecione Desativar a integração com a linhagem do Knowledge Catalog.
gcloud
Quando você cria um ambiente, o argumento --disable-cloud-data-lineage-integration
desativa a integração do rastreamento de dados.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "SERVICE_ACCOUNT" \
--disable-cloud-data-lineage-integration
Substitua:
ENVIRONMENT_NAMEpelo nome do ambienteLOCATIONpela região em que o ambiente está localizado;
Exemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--disable-cloud-data-lineage-integration
Etapa 13. (Opcional) Configurar criptografia de dados (CMEK)
Por padrão, os dados do seu ambiente são criptografados com uma chave fornecida pelo Google.
Para usar chaves de criptografia gerenciadas pelo cliente (CMEK) para criptografar dados no ambiente, siga as instruções descritas em Como usar chaves de criptografia gerenciadas pelo cliente.
Etapa 14. (Opcional) Usar o bucket de um ambiente personalizado
Quando você cria um ambiente, o Airflow Gerenciado cria um bucket para ele automaticamente.
Como alternativa, é possível especificar um bucket personalizado do Cloud Storage no seu projeto. Seu ambiente usa esse bucket da mesma forma que o bucket criado automaticamente.
Para usar um bucket de ambiente personalizado, siga as instruções em Usar o bucket de um ambiente personalizado.
Etapa 15. (Opcional) Configurar a retenção do banco de dados
Se você ativar a retenção do banco de dados no seu ambiente, o Airflow Gerenciado vai remover periodicamente os registros relacionados às execuções de DAG e às sessões de usuário mais antigas que o período especificado do banco de dados do Airflow. As informações mais recentes da execução do DAG são sempre mantidas.
Por padrão, a retenção do banco de dados está ativada. Para configurar o período de armazenamento de um novo ambiente ou desativar a retenção do banco de dados, siga as instruções descritas em Configurar a política de retenção do banco de dados. Também é possível configurar a retenção de banco de dados depois.
Etapa 16. (Opcional) Especificar identificadores de ambiente
É possível atribuir rótulos aos seus ambientes para dividir os custos faturados com base neles.
Console
Na página Criar ambiente, na seção Identificadores:
Clique em Adicionar rótulo.
Nos campos Chave e Valor, especifique os pares de chave e valor para os identificadores de ambiente.
gcloud
Quando você cria um ambiente, o argumento --labels especifica uma lista de chaves e valores separada por vírgulas com identificadores de ambiente.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "SERVICE_ACCOUNT" \
--labels LABELS
Substitua:
LABELSpor uma lista de paresKEY=VALUEseparados por vírgulas para identificadores de ambiente.
Exemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.20 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--labels owner=engineering-team,env=production
API
Ao criar um ambiente, no recurso Ambiente, especifique identificadores para o ambiente.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"labels": {
"LABEL_KEY": "LABEL_VALUE"
}
}
Substitua:
LABEL_KEYpor uma chave do identificador do ambiente.LABEL_VALUEpor um valor do identificador de ambiente.
Exemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"labels": {
"owner": "engineering-team",
"env": "production"
}
}
Terraform
Ao criar um ambiente, especifique identificadores no bloco labels
(fora do bloco config).
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
labels = {
LABEL_KEY = "LABEL_VALUE"
}
}
Substitua:
LABEL_KEYpor uma chave do identificador do ambiente.LABEL_VALUEpor um valor do identificador de ambiente.
Exemplo:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
labels = {
owner = "engineering-team"
env = "production"
}
}
A seguir
- Como resolver problemas da criação de ambientes
- Como configurar a VPC compartilhada
- Como configurar o VPC Service Controls
- Como adicionar e atualizar DAGs
- Como acessar a IU do Airflow
- Como atualizar e excluir ambientes
- Sobre as versões do Airflow gerenciado