Fazer upgrade dos ambientes

Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)

Nesta página, descrevemos como fazer upgrade do seu ambiente para uma nova versão do Airflow.

Sobre as operações de upgrade

No Airflow Gerenciado (Geração 3), não é possível gerenciar a versão do Airflow Gerenciado do seu ambiente:

  • O Airflow Gerenciado faz upgrade automático dos componentes de infraestrutura do seu ambiente. Esses componentes estão relacionados à funcionalidade do Airflow Gerenciado e não mudam a forma como o Airflow funciona ou como os DAGs do Airflow são executados.
  • O Airflow Gerenciado não faz upgrade automático da versão e do build do Airflow, dos componentes do Airflow ou dos componentes relacionados a cargas de trabalho do Airflow. Elas não são alteradas quando os componentes da infraestrutura são atualizados automaticamente.
  • É possível fazer upgrade manual para uma nova versão ou build do Airflow.

Por exemplo, é possível usar a mesma versão e build do Airflow por vários meses, sem fazer upgrades, e seu ambiente ainda vai receber as atualizações, correções e melhorias mais recentes do Airflow gerenciado nos componentes de infraestrutura do ambiente. Quando você decidir migrar para uma nova versão ou build do Airflow, faça upgrade da versão do Airflow no seu ambiente.

Sobre o upgrade da versão do Airflow

Seu ambiente muda a versão ou o build do Airflow da seguinte maneira:

  • Você controla a versão (e o build) do Airflow do seu ambiente. É possível realizar a operação de upgrade da versão do Airflow quando você escolhe mudar seu ambiente para uma versão diferente do Airflow. Por exemplo, isso pode acontecer se a versão e o build atuais do Airflow não forem mais compatíveis.

  • O Airflow Gerenciado reimplanta os componentes do Airflow do seu ambiente usando a versão e o build especificados do Airflow.

  • O Airflow Gerenciado aplica mudanças de configuração do Airflow, como pacotes PyPI personalizados ou substituições de opções de configuração do Airflow, se o ambiente os tinha antes do upgrade.

  • O Airflow Gerenciado atualiza a conexão airflow_db do Airflow para apontar para o novo banco de dados do Cloud SQL.

Mudar a versão do Airflow não altera a forma como você se conecta aos recursos do seu ambiente, como o URL do bucket do ambiente ou o servidor da Web do Airflow.

Sobre operações automáticas de upgrade de infraestrutura

O Airflow Gerenciado executa periodicamente operações automáticas de upgrade de infraestrutura:

  • As operações de upgrade automático da infraestrutura são executadas periodicamente durante as janelas de manutenção especificadas para o ambiente.

  • Não é possível desativar os upgrades automáticos de infraestrutura no Airflow Gerenciado (Geração 3). É possível controlar os períodos em que os upgrades automáticos podem ser executados especificando janelas de manutenção personalizadas para seu ambiente.

  • Essa operação fica visível no console do Google Cloud e nos registros do ambiente, como qualquer outra operação de longa duração. Enquanto a operação está em execução, não é possível iniciar outras operações no nível do ambiente (mas ainda é possível executar DAGs do Airflow).

  • Em alguns casos, os upgrades automáticos de infraestrutura podem reiniciar os componentes do Airflow. Durante essas reinicializações, os workers do Airflow são encerrados de maneira otimizada com um período de carência de 24 horas. Se você tiver tarefas que precisam de mais de 24 horas para serem concluídas, use operadores adiáveis. Um upgrade pode resultar em um breve período de indisponibilidade para componentes de infraestrutura do ambiente, como o monitoramento.

Limitações das operações de upgrade

As operações de upgrade têm as seguintes limitações:

  • Os lançamentos do Airflow Gerenciado são lançados gradualmente em todas as regiões compatíveis com o Airflow Gerenciado ao longo de vários dias. A versão mais recente de um lançamento em andamento pode ainda não estar disponível na sua região.

  • Não é possível fazer downgrade para uma versão ou build anterior do Airflow.

  • Não é possível fazer upgrade do ambiente se o banco de dados do Airflow tiver mais de 20 GB de dados. Durante um upgrade, um aviso será exibido se o tamanho do banco de dados do Airflow for maior que 20 GB. Nesse caso, faça a manutenção do banco de dados para reduzir o tamanho dele.

  • Se você usar o mecanismo XCom para transferir arquivos, use-o de acordo com as diretrizes do Airflow. A transferência de arquivos grandes ou de um grande número de arquivos usando XCom afeta o desempenho do banco de dados do Airflow e pode causar falhas ao carregar snapshots ou fazer upgrade do ambiente. Considere usar alternativas como o Cloud Storage para transferir grandes volumes de dados.

Antes de começar

  • Recomendamos criar um novo snapshot do ambiente para poder recriá-lo, se necessário.

  • Sua conta precisa ter um papel que acione operações de upgrade de ambiente. Além disso, a conta de serviço do ambiente precisa ter um papel com permissões suficientes para executar operações de upgrade. Consulte Controle de acesso para mais informações.

Verificar se o ambiente está atualizado

O Airflow Gerenciado mostra avisos quando o build do Airflow do seu ambiente se aproxima da data de término do suporte. Você pode usar esses avisos para sempre manter seu ambiente compatível.

Uma mensagem de suspensão de uso é exibida na página de detalhes do ambiente.
Figura 1. Uma mensagem de suspensão de uso é exibida na página de detalhes do ambiente.

O Airflow Gerenciado acompanha a versão e o build do Airflow em que seu ambiente se baseia. Quando estiver próxima do fim da data de suporte, você verá um aviso na lista de ambientes e na página Detalhes do ambiente.

Para verificar se o ambiente está atualizado:

Console

  1. No console Google Cloud , acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.

  3. Acesse a guia Configuração do ambiente.

  4. No campo Versão da imagem, uma das seguintes mensagens será exibida:

    • Versão mais nova disponível. A imagem do ambiente é totalmente compatível.

    • Nova versão disponível. A imagem do ambiente é totalmente compatível e é possível fazer upgrade dela para uma versão posterior.

    • O suporte para esta versão de imagem termina em... A imagem do ambiente se aproxima do final do período de suporte completo.

    • Esta versão não é compatível desde... Seu ambiente já passou do período de suporte completo.

gcloud

Essa funcionalidade não está disponível na Google Cloud CLI. Você pode conferir os upgrades sugeridos, que mostram as novas versões disponíveis.

API

Essa funcionalidade não está disponível por API. Você pode conferir os upgrades sugeridos, que mostram as novas versões disponíveis.

Ver upgrades sugeridos

O Airflow Gerenciado oferece uma lista de builds do Airflow para as quais é possível fazer upgrade do seu ambiente.

Para conferir as versões do Airflow Gerenciado sugeridas para um upgrade:

Console

  1. No console Google Cloud , acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.

  3. Acesse a guia Configuração do ambiente e clique em Fazer upgrade da versão da imagem.

  4. Para conferir a lista de versões sugeridas, clique no menu suspenso versão de imagem do Airflow Gerenciado.

gcloud

gcloud composer environments list-upgrades \
  ENVIRONMENT_NAME \
  --location LOCATION

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente
  • LOCATION pela região em que o ambiente está localizado;

Exemplo:

gcloud composer environments list-upgrades example-environment \
  --location us-central1

API

É possível conferir as versões disponíveis para um local. Para isso, crie uma solicitação de API imageVersions.list.

Exemplo:

// GET https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/imageVersions

Verificar conflitos de pacotes PyPI

É possível verificar se os pacotes PyPI instalados no ambiente têm conflitos com pacotes pré-instalados na nova versão ou build do Airflow.

Uma verificação bem-sucedida significa que não há conflitos nas dependências de pacote PyPI entre a versão atual e a especificada. No entanto, uma operação de upgrade ainda pode não ser bem-sucedida devido a outros motivos.

Console

Para executar uma verificação de upgrade no ambiente:

  1. No console Google Cloud , acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.

  3. Acesse a guia Configuração do ambiente, localize a entrada Versão da imagem e clique em Fazer upgrade.

  4. Na caixa de diálogo Upgrade da versão do ambiente, na lista suspensa Nova versão, selecione uma versão ou build do Airflow para a qual quer fazer upgrade.

  5. Na seção Compatibilidade de pacotes PyPI, clique em Verificar conflitos.

  6. Aguarde a conclusão da verificação. Se houver conflitos de dependência de pacote PyPI, as mensagens de erro exibidas conterão detalhes sobre pacotes conflitantes e versões de pacotes.

gcloud

Para executar uma verificação de upgrade no ambiente, execute o comando environments check-upgrade com a versão ou build do Airflow para a qual você quer fazer upgrade.

gcloud composer environments check-upgrade \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --airflow-version VERSION

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente
  • LOCATION pela região em que o ambiente está localizado;
  • VERSION com a nova versão e build do Airflow para fazer upgrade, no formato airflow-x.y.z-build.t. Você pode usar todos os aliases de versão.

Exemplo:

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --airflow-version airflow-2.11.1-build.3

Exemplo de saída:

Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-3-airflow-2.11.1-build.3. Operation [projects/example-project/locations/
us-central1/operations/04d0e8b2-...]...done.
...

Response:
'@type': type.googleapis.com/
google.cloud.orchestration.airflow.service.v1.CheckUpgradeResponse
buildLogUri: ...
containsPypiModulesConflict: CONFLICT
pypiConflictBuildLogExtract: |-
The Cloud Build image build failed: Build failed; check build logs for
details. Full log can be found at ...
Error details: tensorboard 2.2.2 has requirement
setuptools>=41.0.0, but you have setuptools 40.3.0.

Como alternativa, é possível executar uma verificação de upgrade de forma assíncrona. Use o argumento --async para fazer uma chamada assíncrona e verifique o resultado com o comando gcloud composer operations describe.

API

Crie uma solicitação de API environments.checkUpgrade.

Especifique a versão da imagem no campo imageVersion:

{
  "imageVersion": "VERSION"
}

Substitua VERSION pela nova versão para a qual você quer fazer upgrade, no formato composer-3-airflow-x.y.z-build.t.

Verificar conflitos com o Airflow gerenciado (Geração 3)

O Airflow Gerenciado (Geração 3) é a versão principal mais recente do Airflow Gerenciado. É possível verificar se um ambiente do Airflow gerenciado (Geração 2) pode ser atualizado para o Airflow gerenciado (Geração 3) com uma verificação de upgrade. A descrição a seguir se aplica aos ambientes do Airflow Gerenciado (Geração 2).

Não é possível migrar seu ambiente do Airflow Gerenciado (Geração 2) para o Airflow Gerenciado (Geração 3) no local, mas você pode verificar problemas de compatibilidade usando uma verificação de upgrade. Recomendamos fazer isso antes de migrar para o Airflow gerenciado (geração 3).

Para verificar a compatibilidade com o Airflow gerenciado (Geração 3), faça uma verificação de upgrade regular do ambiente do Airflow gerenciado (Geração 2) e especifique uma versão do Airflow gerenciado (Geração 3) como destino.

Cada conflito informado pode ter os seguintes tipos:

  • O relatório de conflitos de BLOCKING mostra elementos de configuração de ambiente incompatíveis que não são compatíveis com o Airflow gerenciado (geração 3). Recomendamos resolver esses conflitos antes de iniciar uma migração para o Airflow Gerenciado (Geração 3).

  • Os conflitos de NON_BLOCKING informam elementos de configuração de ambiente diferentes no Airflow gerenciado (geração 3) e podem causar comportamentos inesperados. Por exemplo, mudanças nos valores padrão, como janelas de manutenção padrão, são informadas como conflitos não bloqueadores. Recomendamos verificar se esses conflitos podem causar problemas antes de iniciar o processo de migração.

  • Os conflitos de pacotes PyPI também são informados como parte dessa verificação. Eles são informados separadamente dos conflitos de configuração, da mesma forma que em uma verificação de compatibilidade de pacote PyPI normal.

Console

Para verificar a compatibilidade com o Airflow Gerenciado (Geração 3), use a CLI gcloud ou a API Cloud Composer. O consoleGoogle Cloud só é compatível com verificações de compatibilidade de pacotes PyPI.

gcloud

Para verificar a compatibilidade com o Airflow gerenciado (Geração 3), execute o comando environments check-upgrade e especifique uma versão do Airflow gerenciado (Geração 3) como destino.

gcloud composer environments check-upgrade \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version COMPOSER_3_VERSION

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente
  • LOCATION pela região em que o ambiente está localizado;
  • COMPOSER_3_VERSION com a versão e o build do Airflow para fazer upgrade, no formato airflow-x.y.z-build.t. Você pode usar todos os aliases de versão.

Exemplo:

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-3-airflow-2

Exemplos de mensagens de conflito:

...
- message: Error validating property [core]unit_test_mode. Overriding [core]
unit_test_mode is not permitted.
type: BLOCKING
- message: Environment variables [GOOGLE_CLOUD_PROJECT] may not be overridden.
type: BLOCKING
- message: You have to specify Worker CPUs to be 0.5, 1.0 or multiples of 2.0.
type: BLOCKING
- message: The environment uses a default maintenance window, which is
different in Composer 2 and Composer 3. Unless set to a custom value, the
maintenance window will be changed to a new default after the upgrade.
type: NON_BLOCKING
...

Como alternativa, é possível executar essa verificação de forma assíncrona. Use o argumento --async para fazer uma chamada assíncrona e verifique o resultado com o comando gcloud composer operations describe.

API

Crie uma solicitação de API environments.checkUpgrade.

Especifique a versão da imagem no campo imageVersion:

{
  "imageVersion": "COMPOSER_3_VERSION"
}

Substitua COMPOSER_3_VERSION pela versão e build do Airflow para que você quer fazer upgrade, no formato airflow-x.y.z-build.t. Você pode usar todos os aliases de versão.

Fazer upgrade do ambiente

Para fazer upgrade do ambiente para uma nova versão ou build do Airflow:

Console

  1. No console Google Cloud , acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.

  3. Acesse a guia Configuração do ambiente.

  4. Localize o item versão de imagem e clique em Fazer upgrade.

  5. No menu suspenso Versão da imagem, selecione uma versão ou build do Airflow para fazer upgrade.

  6. Clique em Fazer upgrade.

gcloud

gcloud composer environments update \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --airflow-version VERSION

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente
  • LOCATION pela região em que o ambiente está localizado;
  • VERSION com a nova versão e build do Airflow para fazer upgrade, no formato airflow-x.y.z-build.t. Também é possível usar todos os aliases de versão.

Exemplo:

gcloud composer environments update
  example-environment \
  --location us-central1 \
  --airflow-version airflow-2.11.1-build.3

API

  1. Crie uma solicitação de API environments.patch.

  2. Nesta solicitação:

    1. No parâmetro updateMask, especifique a máscara config.softwareConfig.imageVersion.

    2. No corpo da solicitação, no campo imageVersion, especifique uma nova versão para fazer upgrade.

Exemplo:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.imageVersion

  {
    "config": {
      "softwareConfig": {
        "imageVersion": "composer-3-airflow-2.11.1-build.3"
      }
    }
  }

Terraform

O campo image_version no bloco config.software_config controla a versão e o build do Airflow do seu ambiente. Nesse campo, especifique uma nova versão e build do Airflow.

  resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    software_config {
      image_version = "VERSION"
    }
  }
}

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente
  • LOCATION pela região em que o ambiente está localizado; a nova versão e build do Airflow para fazer upgrade, no formato airflow-x.y.z-build.t. Também é possível usar todos os aliases de versão.

Exemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    software_config {
      image_version = "airflow-2.11.1-build.3"
    }
  }
}

A seguir