Como fazer upgrade de ambientes

Nesta página, você aprende a fazer upgrade das versões do Airflow ou do Cloud Composer executadas pelo seu ambiente.

Durante o upgrade, o Cloud Composer:

  • reimplementa os pods de worker e de trabalhador do Airflow em um novo namespace do Kubernetes. Após a conclusão do upgrade, o Airflow usa um novo banco de dados do Cloud SQL. O nome do banco de dados corresponde ao namespace do Kubernetes. O histórico de execuções do DAG é preservado;

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

Essas alterações afetam a maneira como você acessa os pods e se conecta ao banco de dados do Cloud SQL.

  • Para acessar pods no cluster do GKE após o upgrade, você precisa usar comandos kubectl que consideram namespace. Por exemplo, para listar pods no cluster, use kubectl get pods -A. Para executar um comando em um pod, use kubectl exec -n <NAMESPACE> ....
  • Se você usar conexões e cargas de trabalho do Airflow que referenciam o proxy SQL diretamente, use o namespace padrão como parte do nome do host: airflow-sqlproxy-service.default, não airflow-sqlproxy-service.

O upgrade do Cloud Composer não altera a maneira como você se conecta aos recursos do ambiente, incluindo os endereços IP da VM do nó do Google Kubernetes Engine e da instância do Cloud SQL, os intervalos do Cloud Storage ou o nome de domínio do servidor da Web do Airflow.

Antes de começar

  • No momento, os ambientes de upgrade estão na visualização. Use esse recurso com cuidado em ambientes de produção.

  • Você 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.

  • Pause todos os DAGs e aguarde o término das tarefas em andamento antes de fazer upgrade.

  • É possível fazer upgrade do Cloud Composer, da versão do Airflow ou de ambos ao mesmo tempo.

  • É necessário fazer upgrade para uma versão disponível do conjunto Cloud Composer/Airflow.

    • Para ver os upgrades disponíveis, vá até esta seção. Para garantir os recursos e as correções mais recentes, faça upgrade para a última versão do Cloud Composer.
    • Para acessar a lista de personalizações e de pacotes PyPI em uma versão compatível, consulte a lista de versões do Cloud Composer.

      Antes de fazer upgrade, você precisa entender as diferenças entre as versões atuais do Airflow e do Cloud Composer e as versões finais do upgrade. As alterações incompatíveis podem interromper os DAGs.

Limitações

  • Não é possível fazer downgrade para uma versão anterior do Cloud Composer ou do Airflow.
  • O Cloud Composer é compatível com a transferência manual de DAGs e configuração dos ambientes do Airflow 1.10.* para os ambientes do Airflow 2. Não é possível fazer upgrades no local para o Airflow 2 para ambientes com o Airflow 1.10.*.
  • Só é possível fazer upgrade para a versão mais recente do Cloud Composer na mesma versão principal, como composer-1.12.4-airflow-1.10.10 a composer-1.13.0-airflow-1.10.10. O upgrade de composer-1.4.0-airflow-1.10.0 para composer-2.0.0-airflow-1.10.0 não é permitido porque a versão principal do Cloud Composer muda de 1 para 2.
  • Você precisa fazer upgrade para uma versão de imagem que seja compatível com a versão atual do Python do seu ambiente.
  • Não será possível fazer upgrade do ambiente se o banco de dados do Airflow tiver mais de 16 GB de dados. Durante um upgrade, um aviso será exibido se o tamanho do banco de dados do Airflow for maior que 16 GB. Nesse caso, faça a manutenção do banco de dados para reduzir o tamanho dele.
  • Não é possível fazer upgrade do Cloud Composer 1 para o Cloud Composer 2.

    Se você quiser começar a usar o Cloud Composer 2, precisará criar novos ambientes.

    • Se você quiser migrar do Airflow 1 para o Airflow 2, consulte o guia de migração, que fornece instruções para transferir o histórico de execuções de DAG e tarefas do Cloud Composer 1 com o Airflow 1 para o Cloud Composer 2 com ambientes do Airflow 2.

Mensagens de suspensão de uso

O Cloud Composer exibe avisos quando a imagem do ambiente está se aproximando da data de término do suporte. Você pode usar esses avisos para sempre manter seus ambientes no período de suporte total.

Mensagem de suspensão de uso

O Cloud Composer monitora a versão da imagem do Cloud Composer em que seu ambiente se baseia. Quando a imagem 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 a imagem do ambiente está atualizada:

  1. Abra a página Ambientes no Console do Google Cloud.

    Abrir a página "Ambientes"

  2. Clique no nome do ambiente para ver os detalhes.

  3. Em Configuração do ambiente, localize o campo Versão da imagem.

  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.

Como ver os upgrades disponíveis

Para ver para quais versões do Cloud Composer é possível fazer upgrade, siga estas etapas:

Console

  1. Abra a página Ambientes no Google Cloud.

    Abrir a página "Ambientes"

  2. Clique no Nome do ambiente.

  3. Na guia Configuração do ambiente, clique em Fazer upgrade da versão da imagem.

  4. Para ver as versões disponíveis, clique no menu suspenso Versão de imagem do Cloud Composer.

gcloud

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

em que:

  • ENVIRONMENT_NAME é o nome do ambiente;
  • LOCATION é a região do Compute Engine em que o ambiente está localizado.

Exemplo:

gcloud beta composer environments list-upgrades test-environment \
    --location us-central1
┌─────────────────────────────────────────────────────────────────────────────┐
│                              AVAILABLE UPGRADES                             │
├──────────────────────────────┬──────────────────┬───────────────────────────┤
│        IMAGE VERSION         │ COMPOSER DEFAULT │ SUPPORTED PYTHON VERSIONS │
├──────────────────────────────┼──────────────────┼───────────────────────────┤
│ composer-1.4.0-airflow-1.9.0 │ True             │ 2,3                       │
└──────────────────────────────┴──────────────────┴───────────────────────────┘

API

Para ver as versões disponíveis usando a API REST do Cloud Composer, crie uma solicitação de API imageVersions.list e insira o projeto e o local no formato projects/{projectId}/locations/{locationId}.

Exemplo:

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

{
  "imageVersions": [
    {
      "imageVersionId": "composer-1.4.2-airflow-1.10.0",
      "supportedPythonVersions": [
        "2",
        "3"
      ]
    },
    {
      "imageVersionId": "composer-1.4.2-airflow-1.9.0",
      "isDefault": true,
      "supportedPythonVersions": [
        "2",
        "3"
      ]
    }
  ]
} 

Como verificar conflitos de pacote do PyPI antes de fazer o upgrade

É possível verificar se os pacotes PyPI instalados no ambiente têm conflitos com pacotes pré-instalados na nova imagem do Cloud Composer.

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

Console

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

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

    Acessar "Ambientes"

  2. Selecione o ambiente.

  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 do Cloud Composer 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 para o ambiente, execute o comando environments check-upgrade com a versão de imagem do Cloud Composer para a qual você quer fazer upgrade.

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

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente;
  • LOCATION pela região do Compute Engine em que o ambiente está localizado;
  • COMPOSER_IMAGE pela versão de imagem do Cloud Composer para a qual você quer fazer upgrade.

Exemplo:

gcloud beta composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-1.16.6-airflow-1.10.15

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-1.16.6-airflow-
1.10.15. Operation [projects/example-project/locations/us-central1/operations
/04d0e8b2-...]...done.
...

Response:
'@type': type.googleapis.com/
google.cloud.orchestration.airflow.service.v1beta1.CheckUpgradeResponse
buildLogUri: https://console.cloud.google.com/cloud-build/builds/79738aa7-...
containsPypiModulesConflict: CONFLICT
pypiConflictBuildLogExtract: |-
The Cloud Build image build failed: Build failed; check build logs for
details. Full log can be found at https://console.cloud.google.com/
cloud-build/builds/79738aa7-...
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": "COMPOSER_IMAGE"
}

Substitua COMPOSER_IMAGE pela versão de imagem do Cloud Composer para a qual você quer fazer upgrade.

Como fazer upgrade da versão do Cloud Composer

Para fazer upgrade da versão do Cloud Composer executada pelo seu ambiente, siga estas etapas:

Console

  1. Abra a página Ambientes no Google Cloud.

    Abrir a página "Ambientes"

  2. Clique no Nome do ambiente para fazer a modificação.

  3. Na guia Configuração do ambiente, clique em Fazer upgrade da versão da imagem.

  4. Clique no menu suspenso Versão de imagem do Cloud Composer e selecione uma versão.

  5. Clique em Enviar.

gcloud

gcloud beta composer environments update ENVIRONMENT_NAME \
    --location LOCATION --image-version VERSION

em que:

  • ENVIRONMENT_NAME é o nome do ambiente;
  • LOCATION é a região do Compute Engine em que o ambiente está localizado.
  • VERSION é a versão do Cloud Composer e a versão do Airflow a ser usada no ambiente no formato composer-a.b.c-airflow-x.y.z ou composer-a.b.c-airflow-x.y. Será usada a versão de patch mais atual disponível para as versões principal e secundária determinadas caso você não especifique o patch do Airflow.

Por exemplo:

gcloud beta composer environments update test-environment \
    --location us-central1 --image-version composer-latest-airflow-1.10.1 

API

Para fazer upgrade usando a API REST do Cloud Composer, faça uma solicitação de API environments.patch. Forneça a versão no formato composer-a.b.c-airflow-x.y.z.

Exemplo:

PATCH https://composer.googleapis.com/v1beta1/projects/test-project/locations/us-central1/environments/test-environment?updateMask=config.software_config.image_version

O corpo da solicitação inclui o imageVersion:

{
  "config": {
    "softwareConfig": {
      "imageVersion": "composer-1.6.0-airflow-1.10.1"
    }
  }
}

Como fazer upgrade da versão do Airflow

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

onde:

  • ENVIRONMENT_NAME é o nome do ambiente;
  • LOCATION é a região do Compute Engine em que o ambiente está localizado.
  • VERSION é a versão do Airflow a ser usada no ambiente no formato x.y.z ou x.y.

Exemplo:

gcloud beta composer environments update test-environment \
--location us-central1 --airflow-version=1.10.1