Configure o cluster para receber notificações por email


Este tutorial mostra como configurar a integração de aplicações para receber notificações de clusters do Google Kubernetes Engine (GKE) por email.

Cria uma integração com um acionador do Pub/Sub para ouvir um tópico existente que recebe notificações de um cluster do GKE. Em seguida, pode usar as tarefas de mapeamento de dados e transformador de dados para transformar a mensagem do Pub/Sub e criar um corpo de email de texto simples.

Objetivos

  • Crie uma aplicação de integração de aplicações para receber e transformar notificações externas do GKE.
  • Escreva uma tarefa de envio de email que envie notificações do Pub/Sub por email.

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custos com base na sua utilização projetada, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.

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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Ative a receção de notificações de clusters do GKE através do Pub/Sub.
  9. Se estiver a usar a Application Integration no seu projeto pela primeira vez, certifique-se de que configurou a Application Integration.
  10. Funções necessárias

    Para garantir que service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com tem as autorizações necessárias para configurar notificações por email para notificações de clusters, peça ao seu administrador para conceder a service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com as seguintes funções do IAM no seu projeto:

Configure notificações de cluster para o seu cluster do GKE

Para usar o Pub/Sub para receber notificações sobre o seu cluster do GKE, siga as instruções em Receba notificações de clusters através do Pub/Sub.

Crie uma nova integração

Para criar uma nova integração, siga estes passos:

  1. Aceda à página Integração de aplicações na Google Cloud consola.

    Aceda à solução Application Integration

  2. No menu de navegação, clique em Integrações. É apresentada a página Integrações.

  3. Clique em Criar integração.

  4. Em Nome da integração, introduza um nome para a integração que está a criar.

  5. Se tiver várias regiões ativadas, é apresentada uma opção de menu pendente para selecionar uma região para a integração. Quando apenas uma região está ativada, esta é a região predefinida e o menu pendente não é apresentado.

    Nota: o menu pendente Regiões apenas apresenta as regiões aprovisionadas no seu Google Cloud projeto. Para aprovisionar uma nova região, clique em Ativar região, que é apresentado na parte inferior da caixa.

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

Adicione e configure o acionador do Pub/Sub

Para adicionar um acionador do Pub/Sub à integração, siga estes passos:

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

  2. Clique e coloque o elemento acionador Pub/Sub no criador.

  3. Clique no elemento Acionador do Pub/Sub no editor de integração para ver o painel de configuração do acionador.

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

    projects/PROJECT_ID/topics/TOPIC_ID
    

    Substitua o seguinte:

  • PROJECT_ID: o Google Cloud projeto onde o seu tópico foi criado.

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

    Por exemplo, se o seu projeto se chamar my-project e tiver dado o nome gke-notifications ao seu tópico, introduza:

    projects/my-project/topics/gke-notifications
    

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

Adicione e configure a tarefa de mapeamento de dados

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

Para configurar a tarefa de mapeamento de dados:

  1. Selecione Tarefas para apresentar uma lista de tarefas disponíveis.

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

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

  4. Para adicionar uma associação de limite do acionador do Pub/Sub ao mapeamento de dados, mantenha o ponteiro sobre um ponto de controlo no acionador do Pub/Sub e, em seguida, arraste uma linha para um ponto de controlo na tarefa de mapeamento de dados. A aresta indica o fluxo de controlo 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-lhe 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 fica então disponível como uma variável para qualquer outra tarefa de integração ou acionador. Para mais informações sobre as variáveis na integração de aplicações, consulte o artigo Variáveis.

    Para este tutorial, siga estes passos para criar um mapeamento com o CloudPubSubMessage como entrada:

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

      1. No campo Nome, introduza attributes.
      2. Na lista Tipo de variável, selecione Nenhum.
      3. Na lista Tipo de dados, selecione JSON.
      4. Selecione Introduzir um esquema JSON nas Opções do 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 é apresentada em Resultado. Certifique-se de que a variável de atributos tem um aspeto semelhante ao seguinte:

        Variáveis locais da Application Integration

    5. Clique na terceira linha da coluna Entrada e selecione attributes.cluster_name no painel Variáveis. Pode ter de começar a escrever atributos para ver todos os 5 atributos definidos a partir do esquema introduzido no passo anterior.

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

      1. No campo Nome, introduza cluster_name.
      2. Na lista Tipo de variável, selecione Resultado da integração.
      3. Na lista Tipo de dados, selecione String.
      4. Clique em Criar. A variável cluster_name é apresentada em Resultado.
    7. Repita os passos e e f para project_id, cluster_location, type_url e payload.

    8. Feche o editor de mapeamento de dados assim que o mapeamento estiver concluído. As alterações são guardadas automaticamente.

Adicione e configure a tarefa do transformador de dados (script)

A tarefa Data Transformer usa como entrada variáveis extraídas da tarefa Data Mapping e transforma-as num corpo de mensagem para consumo do utilizador final.

Para configurar a tarefa do transformador de dados:

  1. Selecione Tarefas para apresentar uma lista de tarefas disponíveis.
  2. Clique e coloque o elemento Transformador de dados (script) no editor de integração.
  3. Clique na tarefa Transformador de dados no criador para abrir o painel de configuração da tarefa.
  4. Para adicionar uma associação de limite da tarefa de mapeamento de dados à tarefa de transformador de dados, mantenha o ponteiro sobre um ponto de controlo no mapeamento de dados e, em seguida, arraste uma linha para um ponto de controlo na tarefa de transformador de dados. A aresta denota o fluxo de controlo da tarefa de mapeamento de dados para a tarefa de transformador de dados.
  5. Clique em Abrir editor do transformador de dados. O editor do transformador de dados permite-lhe escrever, editar e avaliar modelos Jsonnet personalizados para realizar o mapeamento de dados na sua integração. A saída fica então disponível como uma variável para qualquer outra tarefa de integração ou acionador. Para mais detalhes sobre esta tarefa do transformador, consulte o artigo Tarefa do transformador de dados. Para este início rápido, siga estes passos para criar um script:

    1. Clique em Criar no painel do lado esquerdo Variáveis. É aberto um painel Criar variável no lado direito. Preencha os seguintes campos:

      • Nome: introduza full_message.
      • Selecione Output from integration na caixa pendente Tipo de variável.
      • Selecione String na caixa pendente Tipo de dados.
      • Clique em Criar para criar a variável e fechar o painel. A nova full_message variável aparece na lista Variáveis.
    2. Selecione Script.

    3. Use o seguinte script de exemplo como modelo para o corpo da mensagem quando são enviadas notificações do seu 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 assim que o mapeamento estiver concluído. As alterações são guardadas automaticamente.

Adicione e configure a tarefa Enviar email

Para configurar a tarefa Enviar email:

  1. Selecione Tarefas no editor de integração para apresentar a lista de tarefas disponíveis.
  2. Clique e coloque o elemento Enviar email no editor de integração.
  3. Para adicionar uma ligação de aresta da tarefa Data Transformer à tarefa Send email, mantenha o ponteiro sobre um ponto de controlo na tarefa Data Transformer e, em seguida, arraste uma linha para um ponto de controlo na tarefa Send email. A aresta denota o fluxo de controlo da tarefa Data Transformer para a tarefa Send email.
  4. Clique no elemento Enviar email no criador para abrir o painel de configuração da tarefa. Defina as seguintes propriedades:
    1. Para destinatários: introduza um endereço de email. Vai usar este email para confirmar a conclusão bem-sucedida da integração.
    2. Assunto: introduza GKE Notifications.
    3. Corpo em texto simples: selecione a variável full_message criada anteriormente na tarefa Transformador de dados.
    4. As restantes opções podem ser deixadas na configuração predefinida.

As alterações às propriedades são guardadas automaticamente e a tela deve ter um aspeto semelhante ao seguinte:

Tela do Application Integration

Teste a integração

Para testar a nova integração, aceda à barra de navegação na parte superior do diagrama de integração e clique em Testar. É aberto um painel no lado direito. Pode usar a seguinte mensagem Pub/Sub de exemplo na secçã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"
  }
}

É enviado um email para o endereço de email que configurou na tarefa Enviar email depois de clicar no botão Testar integração.

Publique a sua integração

Depois de testar esta integração com êxito, clique em Publicar para que a integração comece a processar as mensagens.

Só pode editar uma versão DRAFT da integração e executar apenas a versão ACTIVE da integração. Se quiser editar a integração, clique em Ativar edição na página do criador de integrações e, de seguida, crie uma versão de rascunho. Para mais informações, consulte o artigo Bloqueios de edição de integração.

Limpar

Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.

Elimine 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.

Elimine recursos individuais

  1. Elimine a integração da aplicação.

  2. Elimine o seu tópico do Pub/Sub.

O que se segue?