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.
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
- 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.
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. -
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. - Ative a receção de notificações de clusters do GKE através do Pub/Sub.
- Se estiver a usar a Application Integration no seu projeto pela primeira vez, certifique-se de que configurou a Application Integration.
-
Editor do Pub/Sub (
roles/pubsub.editor
) -
Editor de integração de aplicações (
roles/integrations.editor
)
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:
Aceda à página Integração de aplicações na Google Cloud consola.
No menu de navegação, clique em Integrações. É apresentada a página Integrações.
Clique em Criar integração.
Em Nome da integração, introduza um nome para a integração que está a criar.
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.
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:
No editor de integração, selecione Acionadores para apresentar uma lista de acionadores disponíveis.
Clique e coloque o elemento acionador Pub/Sub no criador.
Clique no elemento Acionador do Pub/Sub no editor de integração para ver o painel de configuração do acionador.
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 nomegke-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:
Selecione Tarefas para apresentar uma lista de tarefas disponíveis.
Clique e coloque o elemento Mapeamento de dados no editor de integração.
Clique na tarefa Mapeamento de dados no criador para abrir o painel de configuração da tarefa.
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.
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:- Expanda a variável
CloudPubSubMessage
JSON na lista Variáveis e arraste a variávelCloudPubSubMessage.data
para a primeira linha Entrada. - 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:
- No campo Nome, introduza
message_data
. - Na lista Tipo de variável, selecione Resultado da integração.
- Na lista Tipo de dados, selecione String.
- Clique em Criar. A variável
message_data
é apresentada em Resultado.
- No campo Nome, introduza
- Arraste a variável
CloudPubSubMessage.attributes
da lista Variáveis para a segunda linha na coluna Entrada. 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:
- No campo Nome, introduza
attributes
. - Na lista Tipo de variável, selecione Nenhum.
- Na lista Tipo de dados, selecione JSON.
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" } } }
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:
- No campo Nome, introduza
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.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:
- No campo Nome, introduza
cluster_name
. - Na lista Tipo de variável, selecione Resultado da integração.
- Na lista Tipo de dados, selecione String.
- Clique em Criar. A variável
cluster_name
é apresentada em Resultado.
- No campo Nome, introduza
Repita os passos e e f para
project_id
,cluster_location
,type_url
epayload
.Feche o editor de mapeamento de dados assim que o mapeamento estiver concluído. As alterações são guardadas automaticamente.
- Expanda a variável
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:
- Selecione Tarefas para apresentar uma lista de tarefas disponíveis.
- Clique e coloque o elemento Transformador de dados (script) no editor de integração.
- Clique na tarefa Transformador de dados no criador para abrir o painel de configuração da tarefa.
- 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.
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:
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.
- Nome: introduza
Selecione Script.
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))}
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:
- Selecione Tarefas no editor de integração para apresentar a lista de tarefas disponíveis.
- Clique e coloque o elemento Enviar email no editor de integração.
- 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.
- Clique no elemento Enviar email no criador para abrir o painel de configuração da tarefa. Defina as seguintes propriedades:
- Para destinatários: introduza um endereço de email. Vai usar este email para confirmar a conclusão bem-sucedida da integração.
- Assunto: introduza
GKE Notifications
. - Corpo em texto simples: selecione a variável
full_message
criada anteriormente na tarefa Transformador de dados. - 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:
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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimine recursos individuais
O que se segue?
- Saiba mais sobre os tipos de notificações de clusters.
- Consulte a documentação do Pub/Sub.