Configurar o cluster para receber notificações por e-mail


Neste tutorial, mostramos como configurar a Application Integration para receber notificações de cluster do Google Kubernetes Engine (GKE) por e-mail.

Você cria uma integração com um acionador do Pub/Sub para detectar um tópico que recebe notificações de um cluster do GKE. Em seguida, use as tarefas de mapeamento e transformação de dados para transformar a mensagem do Pub/Sub e criar um corpo de e-mail de texto simples.

Objetivos

  • Crie um aplicativo de Application Integration para receber e transformar notificações externas do GKE.
  • Crie uma tarefa de envio de e-mail que envie notificações do Pub/Sub para o e-mail.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the GKE, Application Integration and Pub/Sub APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the GKE, Application Integration and Pub/Sub APIs.

    Enable the APIs

  8. Ative as notificações de cluster do GKE.
  9. Se você estiver usando a Application Integration no seu projeto pela primeira vez, confira se ela está configurada.

Funções exigidas

Para garantir que service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com tenha as permissões necessárias para configurar notificações por e-mail em notificações de cluster, peça ao administrador para conceder a service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com os seguintes papéis do IAM no seu projeto:

Configurar notificações de cluster do GKE

Para usar o Pub/Sub e receber notificações sobre seu cluster do GKE, siga Receber notificações de cluster.

Criar uma nova integração

Para criar uma nova integração, execute as seguintes etapas:

  1. Acesse a página Application Integration no console do Google Cloud.

    Acessar o Application Integration

  2. No menu de navegação, clique em Integrações. A página Integrations aparece.

  3. Clique em CRIAR INTEGRAÇÃO.

  4. Em Nome da integração, insira um nome para a integração que você está criando.

  5. Se você tiver várias regiões ativadas, um menu suspenso vai aparecer para selecionar uma região para a integração. Quando apenas uma região é ativada, ela é definida como padrão e o menu suspenso não é exibido.

    Observação: o menu suspenso Regiões lista apenas as regiões provisionadas no projeto do Google Cloud. Para provisionar uma nova região, clique em Ativar região, que é exibido na parte de baixo da caixa.

  6. Clique em Criar para abrir o editor de integração.

Adicionar e configurar o gatilho do Pub/Sub

Para adicionar um gatilho do Pub/Sub à integração, siga estas etapas:

  1. No editor de integração, selecione Acionadores para exibir uma lista de acionadores disponíveis.

  2. Clique e posicione o elemento Gatilho do Pub/Sub no designer.

  3. Clique no elemento Gatilho do Pub/Sub no editor de integração para visualizar o painel de configuração do gatilho.

  4. Especifique o tópico que o gatilho ouvirá no campo Tópico do Pub/Sub no seguinte formato:

    projects/PROJECT_ID/topics/TOPIC_ID
    

    Substitua:

  • PROJECT_ID: o projeto do Google Cloud em que o tópico foi criado.

  • TOPIC_ID: o ID do tópico do Pub/Sub que você criou em Configurar seu ambiente.

    Por exemplo, se seu projeto for denominado my-project e você nomeou seu tópico gke-notifications, digite:

    projects/my-project/topics/gke-notifications
    

    Para exibir todos os tópicos disponíveis no seu projeto do Google Cloud, confira a coluna Nome do tópico em Tópicos. O painel de configuração Gatilho do Pub/Sub preencherá automaticamente o campo Saída do gatilho com uma variável para armazenar a mensagem do Pub/Sub.

Adicionar e configurar a tarefa de mapeamento de dados

A tarefa de mapeamento de dados ajuda a extrair variáveis relevantes da notificação do Pub/Sub. Ele usa o arquivo JSON da mensagem do Pub/Sub como entrada e extrai variáveis como saída.

Para configurar a tarefa Mapeamento de dados:

  1. Selecione Tarefas para mostrar uma lista das tarefas disponíveis.

  2. Clique e posicione o elemento Mapeamento de dados no editor de integração.

  3. Clique na tarefa Mapeamento de dados no designer para abrir o painel de configuração da tarefa.

  4. Para adicionar uma conexão de borda do gatilho do Pub/Sub ao mapeamento de dados, mantenha o ponteiro sobre um ponto de controle no gatilho do Pub/Sub e, em seguida, arraste uma linha para um ponto de controle na tarefa de mapeamento de dados. A borda indica o fluxo de controle do acionador do Pub/Sub para a tarefa de mapeamento de dados.

  5. Clique em Abrir editor de mapeamento de dados. O Editor de mapeamento de dados permite mapear variáveis de entrada para as variáveis de saída selecionadas, usando as funções de transformação disponíveis. A saída é disponibilizada como uma variável para qualquer outra tarefa ou gatilho de integração. Para mais informações sobre variáveis na Application Integration, consulte Variáveis.

    Para este tutorial, siga estas etapas para criar um mapeamento usando CloudPubSubMessage como entrada:

    1. Expanda a variável JSON CloudPubSubMessage na lista Variáveis e arraste a variável CloudPubSubMessage.data para a primeira linha de Entrada.
    2. Para criar uma nova variável de saída que armazene o valor dos dados transformados, clique na primeira linha na coluna Saída. Em seguida, faça o seguinte:
      1. No campo Nome, use message_data.
      2. Na lista Tipo de variável, selecione Saída da integração.
      3. Na lista Tipo de dados, selecione String.
      4. Clique em Criar. A variável message_data aparece em Saída.
    3. Arraste a variável CloudPubSubMessage.attributes da lista Variáveis para a segunda linha na coluna de entrada.
    4. Clique na segunda linha na coluna Saída para criar uma nova variável de saída que armazene o valor do payload JSON com os atributos do cluster. Preencha os seguintes campos:

      1. No campo Nome, use attributes.
      2. Na lista Tipo de variável, selecione Nenhum.
      3. Na lista Tipo de dados, selecione JSON.
      4. Selecione Inserir um esquema JSON nas Opções de esquema JSON e cole o seguinte payload:

        {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "cluster_name": {
              "type": "string"
            },
            "payload": {
              "type": "string"
            },
            "project_id": {
              "type": "string"
            },
            "cluster_location": {
              "type": "string"
            },
            "type_url": {
              "type": "string"
            }
          }
        }
        
      5. Clique em Criar. A variável attributes aparece em Saída. Confira se a variável de atributos é semelhante a esta:

        Variáveis locais da Application Integration

    5. Clique na terceira linha na coluna Entrada e selecione attributes.cluster_name no painel Variáveis. Talvez seja necessário começar a digitar atributos para ver todos os 5 atributos definidos no esquema inserido na etapa anterior.

    6. Clique na linha correspondente da coluna Saída para criar uma nova variável de saída que armazene o valor do atributo de nome do cluster. Preencha os seguintes campos:

      1. No campo Nome, use cluster_name.
      2. Na lista Tipo de variável, selecione Saída da integração.
      3. Na lista Tipo de dados, selecione String.
      4. Clique em Criar. A variável cluster_name aparece em Saída.
    7. Repita as etapas e e f para project_id, cluster_location, type_url e payload.

    8. Feche o Editor de mapeamento de dados quando o mapeamento for concluído. Todas as alterações serão salvas automaticamente.

Adicionar e configurar a tarefa do Data Transformer (script)

A tarefa do Data Transformer usa as variáveis extraídas da tarefa de mapeamento de dados como entrada e as transforma em um corpo de mensagem para consumo do usuário final.

Para configurar a tarefa do transformador de dados:

  1. Selecione Tarefas para mostrar uma lista das tarefas disponíveis.
  2. Clique e posicione o elemento do (script) transformador de dados no editor de integração.
  3. Clique na tarefa Data Transformer no designer para abrir o painel de configuração da tarefa.
  4. Para adicionar uma conexão de borda da tarefa "Mapeamento de dados" à tarefa "Transformador de dados", mantenha o ponteiro sobre um ponto de controle no mapeamento de dados e arraste uma linha para um ponto de controle na tarefa do transformador de dados. A borda indica o fluxo de controle da tarefa de mapeamento de dados para a tarefa do Data Transformer.
  5. Clique em Abrir editor do transformador de dados. A tarefa do Editor transformador de dados permite escrever, editar e avaliar modelos personalizados em Jsonnet para realizar o mapeamento de dados na sua integração. A saída é disponibilizada como uma variável para qualquer outra tarefa ou gatilho de integração. Para mais detalhes sobre essa tarefa, consulte Tarefa do transformador de dados. Para este guia de início rápido, siga estas etapas para criar um script:

    1. Clique em Criar no painel esquerdo Variáveis. Isso vai abrir um painel Criar variável no lado direito. Preencha os seguintes campos:

      • Nome: insira full_message.
      • Selecione Output from integration no menu suspenso Tipo de variável.
      • Selecione String na caixa do menu suspenso Data Type.
      • Clique em Criar para criar a variável e fechar o painel. A nova variável full_message aparecerá na lista Variáveis.
    2. Selecionar script.

    3. Use o exemplo de script abaixo como modelo para o corpo da mensagem quando notificações forem enviadas do cluster:

      local message_data = std.extVar("message_data");
      local cluster_name = std.extVar("cluster_name");
      local project_id = std.extVar("project_id");
      local cluster_location = std.extVar("cluster_location");
      local type_url = std.extVar("type_url");
      local payload = std.extVar("payload");
      
      {full_message: "Project ID: " + project_id + "\n" +
                    "Cluster Name: " + cluster_name + "\n" +
                    "Location: " + cluster_location + "\n" +
                    "Event Type: " + type_url + "\n" +
                    "Message: " + message_data + "\n" +
                    "Payload: " + std.manifestJson(std.parseJson(payload))}
      
    4. Feche o Editor de mapeamento de dados quando o mapeamento for concluído. Todas as alterações serão salvas automaticamente.

Adicionar e configurar a tarefa "Enviar e-mail"

Para configurar a tarefa Enviar e-mail, siga estas etapas:

  1. Selecione Tasks no editor de integração para mostrar a lista de tarefas disponíveis.
  2. Clique e posicione o elemento Enviar e-mail no editor de integração.
  3. Para adicionar uma conexão de borda da tarefa do Data Transformer à tarefa Enviar e-mail, mantenha o ponteiro sobre um ponto de controle na tarefa do Data Transformer e arraste uma linha para um ponto de controle na tarefa Enviar e-mail. A borda indica o fluxo de controle da tarefa Mapeamento de dados para a tarefa Enviar e-mail.
  4. Clique no elemento Enviar e-mail no designer para abrir o painel de configuração da tarefa. Defina as seguintes propriedades:
    1. Para os destinatários: digite um endereço de e-mail. Você usará esse e-mail para confirmar a conclusão da integração.
    2. Assunto: insira GKE Notifications.
    3. Corpo em texto simples: selecione a variável full_message criada anteriormente na tarefa Transformador de dados.
    4. As opções restantes podem ser deixadas na configuração padrão.

As mudanças nas propriedades são salvas automaticamente, e sua tela deve ficar semelhante a esta:

Tela da Application Integration

Testar a integração

Para testar a nova integração, acesse a barra de navegação na parte de cima do diagrama de integração e clique em Testar. Um painel será aberto no lado direito. Use a mensagem de exemplo do Pub/Sub a seguir na seção Adicionar um valor JSON:

{
  "data": "Node pool projects/my-project/locations/us-central1-c/clusters/cluster-1/nodePools/default-pool is upgrading to version 1.29.1-gke.1589017.",
  "attributes": {
    "cluster_location": "us-central1-c",
    "cluster_name": "cluster-1",
    "payload": "{\"resourceType\":\"NODE_POOL\",\"operation\":\"operation-upgrade\",\"operationStartTime\":\"2024-05-07T20:09:35.528855756Z\",\"currentVersion\":\"1.28.7-gke.1026000\",\"targetVersion\":\"1.29.1-gke.1589017\",\"resource\":\"projects/my-project/locations/us-central1-c/clusters/cluster-1/nodePools/default-pool\"}",
    "project_id": "my-project",
    "type_url": "type.googleapis.com/google.container.v1beta1.UpgradeEvent"
  }
}

Um e-mail é enviado para o endereço de e-mail configurado na tarefa "Enviar e-mail" depois de clicar no botão Test Integration.

Publicar a integração

Depois de testar essa integração, clique em Publicar para que ela comece a processar as mensagens.

Só é possível editar uma versão DRAFT da integração e executar apenas a versão ACTIVE. Se você quiser editar a integração, clique em Ativar edição na página do designer de integração e crie uma versão de rascunho. Para mais informações, consulte Bloqueios de edição de integração.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Excluir recursos individuais

  1. Exclua a Application Integration.

  2. Exclua seu tópico do Pub/Sub.

A seguir