Problemas conhecidos

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Nesta página, listamos os problemas conhecidos do Cloud Composer. Algumas correções para esses problemas estão em andamento e serão disponibilizadas em versões futuras.

Alguns problemas afetam versões mais antigas e podem ser corrigidos com o upgrade do ambiente.

Os intervalos de endereços não RFC 1918 são parcialmente compatíveis com pods e serviços

O Cloud Composer depende do GKE para fornecer suporte a endereços não RFC 1918 para pods e serviços. Atualmente, apenas a seguinte lista de intervalos não RFC 1918 é compatível com o Cloud Composer:

  • 100.64.0.0/10
  • 192.0.0.0/24
  • 192.0.2.0/24
  • 192.88.99.0/24
  • 198.18.0.0/15
  • 198.51.100.0/24
  • 203.0.113.0/24
  • 240.0.0.0/4

A IU do Airflow não mostra registros de tarefas quando a serialização do DAG está ativada no Composer 1.10.2 e no Composer 1.10.3

A ativação da serialização de DAG em ambientes usando as versões 1.10.2 e 1.10.3 do Composer impede a exibição dos registros no servidor da Web do Airflow. Faça upgrade para a versão 1.10.4 (ou mais recente) para corrigir esse problema.

Falha intermitente de tarefa durante a programação no Cloud Composer

O problema aparece em um programador do Airflow para a instância da tarefa durante a execução dela. No entanto, os registros não explicam a causa da falha na tarefa, e o Airflow Worker e o Airflow Scheduler pareciam relativamente íntegros.

A mensagem de erro no Airflow Scheduler pode ser semelhante ao seguinte erro:

Executor reports task instance <TaskInstance: xx.xxxx scheduled__2022-04-21T06:00:00+00:00 [queued]> finished (failed) although the task says its queued. (Info: None) Was the task killed externally?

Ou pode haver algum erro no Airflow Worker semelhante ao seguinte:

Log file is not found: gs://$BUCKET_NAME/logs/$DAG_NAME/$TASK_NAME/2023-01-25T05:01:17.044759+00:00/1.log.
The task might not have been executed or worker executing it might have finished abnormally (e.g. was evicted).

Para garantir robustez contra esses erros decorrentes de um problema antigo no Airflow, é recomendável implementar proativamente estratégias apropriadas de nova tentativa nos níveis da tarefa e do DAG. Ao incorporar essas medidas, o sistema pode reduzir efetivamente o impacto desses erros, aumentando assim a confiabilidade geral e a resiliência do fluxo de trabalho.

A Identidade da carga de trabalho do GKE não é compatível

Esse problema se aplica apenas aos ambientes do Cloud Composer 1. Os ambientes do Cloud Composer 2 usam a Identidade da carga de trabalho.

Não é possível ativar a Identidade da carga de trabalho para clusters de ambiente do Cloud Composer. Como resultado, é possível que você veja a descoberta WORKLOAD_IDENTITY_DISABLED no Security Command Center.

Os rótulos de ambiente adicionados durante uma atualização não são totalmente propagados

Os rótulos de ambiente atualizados não são aplicados às VMs do Compute Engine. Como solução alternativa, esses rótulos podem ser aplicados manualmente.

Upgrades do GKE no contexto do problema CVE-2020-14386

Estamos trabalhando para lidar com a vulnerabilidade CVE-2020-14386 (em inglês) para todos os ambientes do Cloud Composer. Como parte da correção, todos os clusters do GKE do Cloud Composer serão atualizados para uma versão mais recente.

Os clientes que decidirem resolver a vulnerabilidade imediatamente podem fazer upgrade do cluster do GKE do Composer seguindo estas instruções com as seguintes considerações:

Etapa 1: Se você estiver executando uma versão do Cloud Composer anterior à 1.7.2, atualize para uma versão mais recente do Cloud Composer. Se você já tiver a versão 1.7.2 ou posterior, vá para o próximo ponto.

Etapa 2: Atualize o cluster do GKE (mestre e nós) para a versão de patch mais recente 1.15 que contém a correção da vulnerabilidade.

Os registros de tarefas do Airflow não estão disponíveis no servidor da Web do Airflow após o upgrade do Airflow 1.9.0 para o Airflow 1.10.x.

O Airflow 1.10.x introduziu alterações incompatíveis com versões anteriores na convenção de nomenclatura de arquivos de registros. As informações de zona agora estão adicionadas aos nomes de registro das tarefas do Airflow.

O Airflow 1.9.0 armazena e espera que os nomes dos registros estejam no seguinte formato: BUCKET/logs/DAG/2020-03-30T10:29:06/1.log O Airflow 1.10.x armazena e espera que os nomes dos registros estejam no seguinte formato: BUCKET/logs/DAG/2020-03-30T10:29:06+00:00/1.log

Como resultado, se você fizer upgrade do Airflow 1.9.0 para o Airflow 1.10.x e quiser ler o registro de uma tarefa executada com o Airflow 1.9.0, o servidor da Web do Airflow exibirá a seguinte mensagem de erro : Unable to read remote log from BUCKET/logs/DAG/2020-03-30T10:29:06+00:00/1.log

Solução alternativa: renomeie os registros gerados pelo Airflow 1.9.0 no bucket do Cloud Storage usando o formato: BUCKET/logs/DAG/2020-03-30T10:29:06+00:00/1.log

Não é possível criar ambientes do Cloud Composer com a política da organização constraints/compute.disableSerialPortLogging aplicadas.

A criação do ambiente do Cloud Composer falhará se constraints/compute.disableSerialPortLogging for aplicada ao projeto de destino.

Diagnóstico

Para determinar se você foi afetado por esse problema, siga este procedimento:

Acesse o menu do GKE no console do Google Cloud. Acesse o menu do GKE

Em seguida, selecione o cluster recém-criado. Verifique o seguinte erro:

Not all instances running in IGM after 123.45s.
Expect <number of desired instances in IGM>. Current errors:

Constraint constraints/compute.disableSerialPortLogging violated for
project <target project number>.

Alternativas:

  1. Desative a política da organização no projeto em que o ambiente do Cloud Composer será criado.

    Uma política da organização sempre pode ser desativada para envolvidos no projeto, mesmo se os recursos pai (organização ou pasta) tiverem essa política ativada. Consulte a página Como personalizar políticas de restrições booleanas para mais detalhes.

  2. Usar filtros de exclusão

    Usar um filtro de exclusão para registros de porta serial tem a mesma meta que a desativação da política organizacional, já que haverá registros do console serial no Logging. Para mais detalhes, consulte a página Filtros de exclusão.

Uso do Deployment Manager para gerenciar recursos do Google Cloud protegidos pelo VPC Service Controls

O Composer usa o Deployment Manager para criar componentes de ambientes do Cloud Composer.

Em dezembro de 2020, talvez você tenha recebido informações dizendo que precisa executar mais configurações do VPC Service Controls para poder gerenciar recursos protegidos pelo VPC Service Controls usando o Deployment Manager.

Nenhuma ação é necessária se você estiver usando o Composer e não usando o Deployment Manager diretamente para gerenciar os recursos do Google Cloud mencionados no anúncio do Deployment Manager.

Não é possível excluir um ambiente após a exclusão do cluster do GKE

Se você excluir o cluster do ambiente antes do próprio ambiente, as tentativas de excluir o ambiente resultarão no seguinte erro:

 Got error "" during CP_DEPLOYMENT_DELETING [Rerunning Task. ]

Para excluir um ambiente quando o cluster do GKE já for excluído:

  1. Abra a página do Deployment Manager no console do Google Cloud.

    Abra a página do Deployment Manager

  2. Encontre todas as implantações marcadas com rótulos:

    • goog-composer-environment:<environment-name>
    • goog-composer-location:<environment-location>.

    Você verá duas implantações marcadas com os rótulos descritos:

    • Uma implantação chamada <environment-location>-<environment-name-prefix>-<hash>-sd
    • Uma implantação chamada addons-<uuid>
  3. Exclua manualmente os recursos que ainda estão listados nessas duas implantações e existem no projeto, como tópicos e assinaturas do Pub/Sub. Para fazer isso, siga estas etapas:

    1. Selecione as implantações.

    2. Clique em Excluir.

    3. Selecione a opção Excluir 2 implantações e todos os recursos criados por elas, como VMs, balanceadores de carga e discos e clique em Excluir tudo.

    A operação de exclusão falha, mas os recursos restantes são excluídos.

  4. Exclua as implantações usando uma destas opções:

    • No console do Google Cloud, selecione as duas implantações novamente. Clique em Excluir e selecione a opção Excluir duas implantações, mas manter os recursos criados por elas.

    • Execute um comando gcloud para excluir as implantações com a política ABANDON:

      gcloud deployment-manager deployments delete addons-<uuid> \
          --delete-policy=ABANDON
      
      gcloud deployment-manager deployments delete <location>-<env-name-prefix>-<hash>-sd \
          --delete-policy=ABANDON
      
  5. Exclua o ambiente do Cloud Composer.

O Deployment Manager exibe informações sobre um recurso incompatível

O seguinte aviso pode ser exibido na guia "Deployment Manager":

The deployment uses actions, which are an unsupported feature. We recommend
that you avoid using actions.

Para as implantações do Deployment Manager de propriedade do Cloud Composer, ignore este aviso.

Avisos sobre entradas duplicadas da tarefa "echo" pertencente ao DAG "echo-airflow_monitoring"

Você talvez veja a seguinte entrada nos registros do Airflow:

in _query db.query(q) File "/opt/python3.6/lib/python3.6/site-packages/MySQLdb/
connections.py", line 280, in query _mysql.connection.query(self, query)
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry
'echo-airflow_monitoring-2020-10-20 15:59:40.000000' for key 'PRIMARY'")

Ignore essas entradas de registro, porque esse erro não afeta o DAG do Airflow e o processamento de tarefas.

Estamos trabalhando para melhorar o serviço do Cloud Composer e remover esses avisos dos registros do Airflow.

A criação de ambiente falha em projetos com as APIs Identity-Aware Proxy adicionadas ao perímetro do VPC Service Controls.

Em projetos com o VPC Service Controls ativado, a conta cloud-airflow-prod@system.gserviceaccount.com requer acesso explícito no perímetro de segurança para criar ambientes.

Para criar ambientes, é possível usar uma das seguintes soluções:

  • Não adicione a API Cloud Identity-Aware Proxy e a API TCP do Identity-Aware Proxy ao perímetro de segurança.

  • Adicione a conta de serviço cloud-airflow-prod@system.gserviceaccount.com como membro do perímetro de segurança usando a seguinte configuração no arquivo de condições YAML:

     - members:
        - serviceAccount:cloud-airflow-prod@system.gserviceaccount.com
    

A criação do ambiente do Cloud Composer 1 falha quando a política compute.requireOsLogin está ativada.

Se a política compute.requireOsLogin for definida como true no projeto, as operações de criação do ambiente do Cloud Composer 1 v1 falharão.

Para criar ambientes do Cloud Composer 1, desative essa política no seu projeto.

Para mais informações, consulte Restrições da política da organização.

A criação ou o upgrade do ambiente do Cloud Composer falha quando o compute.vmExternalIpAccess está desativado

Os clusters do GKE de propriedade do Cloud Composer configurados no modo IP público exigem conectividade externa para as VMs. Por isso, a política compute.vmExternalIpAccess não pode proibir a criação de VMs com endereços IP externos. Para mais informações sobre essa política organizacional, consulte Restrições da política da organização.

Falha na criação do ambiente do Cloud Composer quando a política compute.vmCanIpForward está desativada

Os ambientes do Cloud Composer 1 criados no modo não nativo de VPC (usando o IP do alias) exigem essa política para permitir a criação de VMs com o recurso "Encaminhamento de IP" ativado. Para mais informações sobre essa política organizacional, consulte Restrições da política da organização.

A primeira execução de DAG para um arquivo DAG enviado tem várias tarefas com falha

Quando você faz o upload de um arquivo DAG, às vezes as primeiras tarefas da primeira execução do DAG falham com o erro Unable to read remote log.... Esse problema ocorre porque o arquivo DAG é sincronizado entre o bucket do ambiente, os workers do Airflow e os programadores do Airflow do ambiente. Essas sincronizações são feitas de forma independente. Se o programador receber o arquivo DAG e programá-lo para ser executado por um worker, e se o worker ainda não tiver o arquivo DAG, a execução da tarefa falhará.

Como solução alternativa, os ambientes do Airflow 2 no Cloud Composer 1.17.0-preview.9 e versions posteriores são configurados para executar duas novas tentativas de uma tarefa com falha por padrão. Se uma tarefa falhar, ela será repetida duas vezes com intervalos de cinco minutos.

Para usar a solução alternativa para esse problema no Airflow 1, substituição core-default_task_retries Opção de configuração do Airflow e defini-la como um número maior ou igual a2 de dados.

A tarefa falha com "OSError: [Errno 5] erro de entrada/saída" no Airflow 1.10.15 ou versões anteriores.

Um bug nas versões do Airflow 1 faz com que as tarefas sejam colocadas na fila do Redis duas vezes em alguns casos raros.

Às vezes, pode levar a uma disputa no arquivo de registros e a uma falha de tarefa subsequente. As tarefas falham com OSError: [Errno 5] Input/output error no Cloud Logging e Task is in the 'running' state which is not a valid state for execution. no registro de tentativas da tarefa.

Esse bug foi corrigido no Airflow 2. Se encontrar esse problema no Airflow 1 em uma tarefa de longa duração, aumente o valor da opção de configuração [celery_broker_transport_options]visibility_timeout do Airflow (o valor padrão). é o 604800 para o Composer 1.17.0, 21600 para ambientes mais antigos. Para tarefas de curta duração, considere adicionar novas tentativas às tarefas afetadas ou migrar seu ambiente para o Airflow 2.

Falha nos operadores do Dataproc/Dataflow com Negsignal.SIGSEGV

Esse é um problema intermitente da biblioteca grcpio, quando usado por um worker do Celery. Esse problema afeta o Airflow 1.10.14 e versões posteriores.

A solução é alterar a estratégia de pesquisa grpcio adicionando a seguinte variável de ambiente ao seu ambiente: GRPC_POLL_STRATEGY=epoll1. Essa solução já está aplicada ao Cloud Composer 1.17.1 e versões posteriores.

Anúncios sobre a remoção do suporte para APIs Beta obsoletas das versões do GKE

O Cloud Composer gerencia clusters subjacentes do GKE do Cloud Composer. A menos que você use explicitamente essas APIs nos DAGs e no código, ignore os avisos sobre as suspensões de uso da API GKE. O Cloud Composer cuida de todas as migrações, se necessário.

Upgrades do GKE no contexto do problema de segurança CVE-2021-25741

Todos os clusters do GKE existentes do Cloud Composer serão atualizados automaticamente para as versões mais recentes do GKE com uma correção para os problemas descritos na CVE-2021-25741.

Se você quiser corrigir essa vulnerabilidade imediatamente, faça upgrade do cluster do GKE do ambiente seguindo as instruções para fazer upgrade de um cluster.

  • Se você tiver um ambiente do Cloud Composer 1 e o GKE versão 1.18.x ou anterior, faça upgrade para 1.18.20-gke.4501.

  • Se você tiver um ambiente do Cloud Composer 1 e a versão 1.19.x do GKE, faça upgrade para 1.19.14-gke.301.

  • Se você tiver um ambiente do Cloud Composer 2 e a versão 1.21.x do GKE, faça upgrade para 1.21.4-gke.301

O Cloud Composer não pode ser afetado pela vulnerabilidade do Apache Log4j 2 (CVE-2021-44228)

Em resposta à vulnerabilidade do Apache Log4j 2 (CVE-2021-44228) (em inglês), o Cloud Composer realizou uma investigação detalhada, e acreditamos que o Cloud Composer não está vulnerável a essa exploração.

Cloud Composer 2: os workers ou programadores do Airflow podem ter problemas ao acessar os buckets do Cloud Storage.

Em algumas situações esporádicas, nos ambientes do Cloud Composer 2 quando o worker do Airflow ou o programador do Airflow é reiniciado, ele pode apresentar mau funcionamento e problemas ao acessar o conteúdo do bucket do Cloud Storage.

Nessa situação, você pode ver erros começando com: Transport endpoint is not connected nos registros do Airflow.

Por exemplo, o registro de erros do worker do Airflow pode ter a seguinte aparência:

[Errno 107] Transport endpoint is not connected: '/home/airflow/gcs/logs/airflow_monitoring/echo/2022-01-11T22:50:48+00:00'

Solução:

  • Fazer upgrade para o Cloud Composer 2.0.26 ou uma versão mais recente

Às vezes, a interface do Airflow pode não recarregar um plug-in depois que ele é alterado

Se um plug-in consiste em muitos arquivos que importam outros módulos, a IU do Airflow pode não conseguir reconhecer o fato de que um plug-in precisa ser carregado novamente. Nesse caso, é necessário reiniciar o servidor da Web do Airflow. Para fazer isso, adicione uma variável de ambiente ou instale ou desinstale as dependências do PYPI. Também é possível reiniciar o servidor da Web do Airflow.

Problemas intermitentes na comunicação com o banco de dados de metadados do Airflow

Esse problema conhecido só se aplica ao Cloud Composer 1.

Alguns ambientes mais antigos do Cloud Composer 1 (1.16.3 ou anteriores) criados antes de 12 de agosto de 2021 podem apresentar problemas temporários relacionados à comunicação com os bancos de dados de metadados do Airflow.

Se esse problema ocorrer, a seguinte mensagem de erro será exibida nos registros de tarefas do Airflow:

"Can't connect to MySQL server on 'airflow-sqlproxy-service.default.svc.cluster.local' (104)"

A equipe do Cloud Composer trabalha para resolver esse problema. Enquanto isso, se você acredita que seu problema é altamente afetado, faça o seguinte para eliminá-lo:

  1. No console do Google Cloud, acesse a página Configuração do ambiente dos ambientes do Cloud Composer afetados.
  2. Siga o link ver detalhes do cluster para navegar até o cluster do GKE subjacente do ambiente.
  3. Navegue até a guia Nós e clique no default-pool visível na seção Pools de nós. selecionar default-pool
  4. Clique em Editar no topo da página.
  5. Altere o tipo de imagem para Container-Optimized OS com containerd e salve a configuração como mostrado abaixo. Alterar o tipo de imagem do pool de nós do Docker para o containerd
  6. Depois que a alteração for enviada, seu pool de nós default-pool será reconfigurado para usar o containerd como seu ambiente de execução de contêiner. Algumas das tarefas do Airflow podem falhar durante a reconfiguração do pool de nós. Se essas tarefas tiverem novas tentativas configuradas, elas serão executadas novamente pelo Airflow assim que a operação no pool de nós for concluída.

O cluster do ambiente tem cargas de trabalho no estado não programável

Esse problema conhecido só se aplica ao Cloud Composer 2.

No Cloud Composer 2, depois que um ambiente é criado, várias cargas de trabalho no cluster do ambiente permanecem no estado "Não programável".

Quando um ambiente é escalonado, novos pods de worker são criados, e o Kubernetes tenta executá-los. Se não houver recursos gratuitos disponíveis para executá-los, os pods de worker serão marcados como Não programáveis.

Nessa situação, o escalonador automático de cluster adiciona mais nós, o que leva alguns minutos. Até que seja concluído, os pods permanecem no estado não programável e não executam nenhuma tarefa.

As cargas de trabalho de DaemonSet não programáveis chamadas composer-gcsfuse e composer-fluentd que não podem ser iniciadas em nós onde não há componentes do Airflow não afetam o ambiente.

Se o problema persistir por muito tempo (mais de uma hora), verifique os registros do escalonador automático de cluster. É possível encontrá-los no visualizador de registros com o seguinte filtro:

resource.type="k8s_cluster"
logName="projects/<project-name>/logs/container.googleapis.com%2Fcluster-autoscaler-visibility"
resource.labels.cluster_name="<cluster-name>"

Ele contém informações sobre as decisões tomadas pelo escalonador automático de cluster: expanda qualquer noDecisionStatus para saber por que não é possível escalonar o cluster para mais ou para menos.

Erro 504 ao acessar a interface do Airflow

Você pode receber o erro 504 Gateway Timeout ao acessar a interface do Airflow. Esse erro pode ter várias causas:

  • Problema de comunicação temporário. Nesse caso, tente acessar a interface do Airflow mais tarde. Também é possível reiniciar o servidor da Web do Airflow.
  • (Somente no Cloud Composer 2) Problema de conectividade. Se a interface do Airflow estiver permanentemente indisponível e o tempo limite ou os erros 504 forem gerados, verifique se seu ambiente pode acessar *.composer.cloud.google.com. Se você usa o Acesso privado do Google e envia tráfego por IPs virtuais private.googleapis.com ou VPC Service Controls e envia tráfego por IPs virtuais restricted.googleapis.com, verifique se o Cloud DNS também está configurado para nomes de domínio *.composer.cloud.google.com.
  • O servidor da Web do Airflow não responde. Se o erro 504 persistir, mas você ainda conseguir acessar a interface do Airflow em determinados momentos, talvez o servidor da Web do Airflow não responda por estar sobrecarregado. Tente aumentar os parâmetros de escala e desempenho do servidor da Web.

Erro 502 ao acessar a interface do Airflow

O erro 502 Internal server exception indica que a interface do Airflow não pode veicular solicitações recebidas. Esse erro pode ter várias causas:

  • Problema de comunicação temporário. Tente acessar a interface do Airflow mais tarde.

  • Falha ao iniciar o servidor da Web. Para começar, o servidor da Web exige que os arquivos de configuração sejam sincronizados primeiro. Verifique se há entradas de registro semelhantes a: GCS sync exited with 1: gsutil -m cp gs://<bucket-name>/airflow.cfg /home/airflow/gcs/airflow.cfg.tmp ou GCS sync exited with 1: gsutil -m cp gs://<bucket-name>/env_var.json.cfg /home/airflow/gcs/env_var.json.tmp nos registros do servidor da Web. Se você encontrar esses erros, verifique se os arquivos mencionados nas mensagens de erro ainda estão presentes no bucket do ambiente.

    Em caso de remoção acidental (por exemplo, porque uma política de retenção foi configurada), é possível restaurá-los:

    1. Defina uma nova variável de ambiente no ambiente. É possível usar qualquer nome e valor de variável.

    2. Substituir uma opção de configuração do Airflow. É possível usar uma opção de configuração do Airflow que não existe.

A interface do Airflow no Airflow 2.2.3 ou versões anteriores está vulnerável ao CVE-2021-45229

Conforme indicado na CVE-2021-45229 (em inglês), a tela "Acionar DAG com configuração" era suscetível a ataques XSS com o argumento de consulta origin.

Recomendação: faça upgrade para a versão mais recente do Cloud Composer compatível com o Airflow 2.2.5.

Os workers exigem mais memória do que nas versões anteriores do Airflow

Sintomas:

  • No ambiente do Cloud Composer 2, todas as cargas de trabalho de cluster dos workers do Airflow estão no status CrashLoopBackOff e não executam tarefas. Você também vai poder conferir avisos OOMKilling que são gerados se esse problema afetar você.

  • Esse problema pode impedir upgrades de ambiente.

Causa:

  • Se você usar um valor personalizado para a opção de configuração [celery]worker_concurrency do Airflow e as configurações de memória personalizada para workers do Airflow, talvez tenha esse problema quando o consumo de recursos se aproximar do limite.
  • Os requisitos de memória do worker do Airflow no Airflow 2.6.3 com Python 3.11 são 10% maiores em comparação com os workers em versões anteriores.
  • Os requisitos de memória do worker do Airflow no Airflow 2.3 e versões posteriores são 30% maiores em comparação com os workers no Airflow 2.2 ou 2.1.

Soluções:

  • Remova a substituição de worker_concurrency para que o Cloud Composer calcule esse valor automaticamente.
  • Se você usar um valor personalizado para worker_concurrency, defina-o com um valor menor. Use o valor calculado automaticamente como ponto de partida.
  • Como alternativa, é possível aumentar a quantidade de memória disponível para os workers do Airflow.
  • Se não for possível fazer upgrade do ambiente para uma versão posterior por causa desse problema, aplique uma das soluções propostas antes de fazer upgrade.

Como acionar DAGs por redes privadas usando o Cloud Functions

O Cloud Composer não oferece suporte ao acionamento de DAGs com o Cloud Functions por redes privadas usando o conector VPC.

Recomendação: use o Cloud Functions para publicar mensagens no Pub/Sub. Esses eventos podem ativar os sensores do Pub/Sub para acionar os DAGs do Airflow ou implementar uma abordagem com base em operadores adiáveis.

Problema com os comandos do gcloud composer na versão 410.0.0

Na versão 410.0.0 do gcloud, os seguintes comandos do Cloud Composer:

  • gcloud composer environments run
  • gcloud composer environments list-packages

retornar um código de erro diferente de zero e exibir esta mensagem de erro:

  (ERROR: gcloud crashed (TypeError): 'NoneType' object is not callable)

Esse comportamento ocorre além da saída normal produzida pelos comandos gcloud e não afeta a funcionalidade deles.

Se esse problema não afetar suas operações, continue usando a versão 410.0.0 e ignore a mensagem de erro incorreta. Caso você precise usar a versão 410.0.0 e usar o comando gcloud de forma programática, implemente uma lógica adicional para ignorar códigos de erro diferentes de zero e informações sobre o stack trace de erro na saída. Você também pode consultar a seção "Solução" para encontrar outras soluções.

Solução

Pastas vazias no programador e workers

O Cloud Composer não remove ativamente as pastas vazias de workers e programadores do Airflow. Essas entidades podem ser criadas como resultado do processo de sincronização de bucket do ambiente quando essas pastas já existiam no bucket e foram removidas.

Recomendação: ajuste os DAGs para que estejam preparados para pular essas pastas vazias.

Em algum momento, essas entidades são removidas dos armazenamentos locais dos programadores e workers do Airflow quando esses componentes são reiniciados, por exemplo, como resultado da redução da escala ou das operações de manutenção no cluster do Cloud Composer.

Compatibilidade com Kerberos

O Cloud Composer ainda não é compatível com a configuração do Kerberos do Airflow.

Suporte a classes de computação no Cloud Composer 2

O Cloud Composer 2 é compatível apenas com a classe de computação de uso geral. Isso significa que não é possível executar pods que solicitam outras classes de computação (como Balanced ou Scale-Out).

A classe de uso geral permite a execução de pods que solicitam até 110 GB de memória e até 30 CPU, conforme descrito em Solicitações máximas de classe do Compute.

Se você quiser usar uma arquitetura baseada em ARM ou precisar de mais CPU e memória, use uma classe de computação diferente, que não é compatível com os clusters do Cloud Composer 2.

Recomendação: use GKEStartPodOperator para executar pods do Kubernetes em um cluster diferente que ofereça suporte à classe de computação selecionada. Se você executar pods personalizados que exigem uma classe de computação diferente, eles também precisam ser executados em um cluster que não seja do Cloud Composer 2.

Suporte para operadores do Google Campaign Manager 360

Os operadores do Google Campaign Manager nas versões do Cloud Composer anteriores à 2.1.13 são baseados na API Campaign Manager 360 v3.5, que foi descontinuada, e a data de desativação é 1o de maio de 2023.

Se você usar operadores do Google Campaign Manager, faça upgrade do ambiente para a versão 2.1.13 ou posterior do Cloud Composer.

Suporte para os operadores do Google Display & Video 360

Os operadores do Google Display & Video 360 nas versões do Cloud Composer anteriores à 2.1.13 se baseiam na API Display & Video 360 v1.1, que foi descontinuada, e a data de desativação é 27 de abril de 2023.

Se você usa os operadores do Google Display & Video 360, faça upgrade do seu ambiente para a versão 2.1.13 ou posterior do Cloud Composer. Além disso, talvez seja necessário alterar os DAGs porque alguns dos operadores do Google Display & Video 360 foram descontinuados e substituídos por novos.

  • O uso de GoogleDisplayVideo360CreateReportOperator foi descontinuado. Em vez disso, use GoogleDisplayVideo360CreateQueryOperator. Esse operador retorna query_id em vez de report_id.
  • O uso de GoogleDisplayVideo360RunReportOperator foi descontinuado. Em vez disso, use GoogleDisplayVideo360RunQueryOperator. Esse operador retorna query_id e report_id em vez de apenas report_id e requer query_id em vez de report_id como um parâmetro.
  • Para verificar se um relatório está pronto, use o novo sensor GoogleDisplayVideo360RunQuerySensor, que usa os parâmetros query_id e report_id. O sensor GoogleDisplayVideo360ReportSensor descontinuado exigia apenas report_id.
  • GoogleDisplayVideo360DownloadReportV2Operator agora requer os parâmetros query_id e report_id.
  • Em GoogleDisplayVideo360DeleteReportOperator não há alterações que possam afetar os DAGs.

Restrições de nome do intervalo secundário

CVE-2023-29247 (a página de detalhes da instância de tarefa na UI está vulnerável a um XSS armazenado)

A interface do Airflow nas versões 2.0.x a 2.5.x está vulnerável a CVE-2023-29247 (em inglês).

Se você usa uma versão anterior do Cloud Composer que não a 2.4.2 e acha que seu ambiente pode estar vulnerável à exploração, leia a descrição a seguir e as possíveis soluções.

No Cloud Composer, o acesso à interface do Airflow é protegido com IAM e controle de acesso da interface do Airflow.

Isso significa que, para explorar a vulnerabilidade da interface do Airflow, os invasores primeiro precisam ter acesso ao projeto, além das permissões e papéis do IAM necessários.

Solução:

  • Verifique as permissões e os papéis do IAM no projeto, incluindo os papéis do Cloud Composer atribuídos a usuários individuais. Verifique se somente usuários aprovados podem acessar a interface do Airflow.

  • Verifique os papéis atribuídos aos usuários por meio do mecanismo de controle de acesso da IU do Airflow, que é um mecanismo separado que fornece acesso mais granular à interface do Airflow. Verifique se apenas os usuários aprovados podem acessar a interface do Airflow e se todos os novos usuários estão registrados com um papel adequado.

  • Considere aumentar a proteção com o VPC Service Controls.

O DAG de monitoramento de Airflow do ambiente do Cloud Composer 2 do Composer não é recriado após a exclusão

O DAG de monitoramento do Airflow não é recriado automaticamente se for excluído pelo usuário ou movido do bucket em ambientes do Composer com composer-2.1.4-airflow-2.4.3.

Solução:

  • Isso foi corrigido em versões posteriores, como composer-2.4.2-airflow-2.5.3. A abordagem sugerida é fazer upgrade do ambiente para uma versão mais recente.
  • Uma solução alternativa ou temporária para um upgrade de ambiente seria copiar o DAG airflow_monitoring de outro ambiente com a mesma versão.

As operações de upgrade poderão falhar se o Sentry estiver ativado

A operação de upgrade de um ambiente do Cloud Composer pode falhar se você tiver configurado o Sentry no ambiente e definido a configuração [sentry]sentry_on como true.

Solução:

  • Desative o Sentry no ambiente, faça o upgrade e configure-o novamente.

Não é possível reduzir o armazenamento do Cloud SQL

O Cloud Composer usa o Cloud SQL para executar um banco de dados do Airflow. Com o tempo, o armazenamento em disco da instância do Cloud SQL pode aumentar porque o disco é escalonado verticalmente para se ajustar aos dados armazenados pelas operações do Cloud SQL quando o banco de dados do Airflow aumenta.

Não é possível reduzir o tamanho do disco do Cloud SQL.

Como solução alternativa, se você quiser usar o menor tamanho de disco do Cloud SQL, recrie os ambientes do Cloud Composer com snapshots.

A métrica de uso do disco do banco de dados não diminui após a remoção de registros do Cloud SQL

Bancos de dados relacionais, como o Postgres ou o MySQL, não removem fisicamente as linhas quando são excluídas ou atualizadas. Em vez disso, ele os marca como "tuplas inativas" para manter a consistência dos dados e evitar o bloqueio de transações simultâneas.

O MySQL e o Postgres implementam mecanismos de recuperação de espaço após a exclusão de registros.

Embora seja possível forçar o banco de dados a recuperar o espaço em disco não utilizado, essa é uma operação que consome recursos e bloqueia o banco de dados, tornando o Cloud Composer indisponível. Portanto, é recomendável usar os mecanismos de criação para recuperar o espaço não utilizado.

Acesso bloqueado: erro de autorização

Se esse problema afetar um usuário, a caixa de diálogo Acesso bloqueado: erro de autorização vai mostrar a mensagem Error 400: admin_policy_enforced.

Se a opção Controles de API > Apps de terceiros não configurados > Não permitir que usuários acessem apps de terceiros estiver ativada no Google Workspace e o Apache Airflow no app Cloud Composer não for explicitamente permitido, os usuários não poderão acessar a interface do Airflow, a menos que permitam explicitamente o aplicativo.

Para permitir o acesso, execute as etapas fornecidas em Permitir acesso à interface do Airflow no Google Workspace.

As instâncias de tarefas bem-sucedidas no passado foram marcadas como "FALHADAS"

Em algumas circunstâncias e cenários raros, as instâncias de tarefa do Airflow que tiveram êxito no passado podem ser marcadas como FAILED.

Se acontecer, geralmente ele foi acionado por uma atualização de ambiente ou operação de upgrade, ou pela manutenção do GKE.

Observação:o problema em si não indica nenhum problema no ambiente e não causa falhas reais na execução da tarefa.

O problema foi corrigido no Cloud Composer versão 2.6.5 ou posterior.

Os componentes do Airflow têm problemas ao se comunicar com outras partes da configuração do Cloud Composer

Em casos muito raros, a lentidão da comunicação com o servidor de metadados do Compute Engine pode fazer com que os componentes do Airflow não funcionem de maneira ideal. Por exemplo, o programador do Airflow pode ser reiniciado, as tarefas do Airflow podem precisar ser repetidas ou o tempo de inicialização da tarefa pode ser maior.

Sintomas:

Os erros a seguir aparecem nos registros dos componentes do Airflow (como programadores, workers ou servidor da Web do Airflow):

Authentication failed using Compute Engine authentication due to unavailable metadata server

Compute Engine Metadata server unavailable on attempt 1 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 2 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 3 of 3. Reason: timed out

Solução:

Defina a seguinte variável de ambiente: GCE_METADATA_TIMEOUT=30.

A pasta "/data" não está disponível no servidor da Web do Airflow

No Cloud Composer 2, o servidor da Web do Airflow é principalmente um componente somente leitura, e o Cloud Composer não sincroniza a pasta data/ com esse componente.

Às vezes, pode ser que você queira compartilhar arquivos comuns entre todos os componentes do Airflow, incluindo o servidor da Web do Airflow.

Solução:

  • Una os arquivos a serem compartilhados com o servidor da Web em um módulo PYPI e instale-o como um pacote PYPI normal. Depois que o módulo PYPI for instalado no ambiente, os arquivos serão adicionados às imagens dos componentes do Airflow e ficarão disponíveis para eles.

  • Adicione arquivos à pasta plugins/. Essa pasta é sincronizada com o servidor da Web do Airflow.

A seguir