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.
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
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE, Application Integration and Pub/Sub APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE, Application Integration and Pub/Sub APIs.
- Ative as notificações de cluster do GKE.
- 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:
-
Editor do Pub/Sub (
roles/pubsub.editor
) -
Editor do Application Integration (
roles/integrations.editor
)
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:
Acesse a página Application Integration no console do Google Cloud.
No menu de navegação, clique em Integrações. A página Integrations aparece.
Clique em CRIAR INTEGRAÇÃO.
Em Nome da integração, insira um nome para a integração que você está criando.
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.
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:
No editor de integração, selecione Acionadores para exibir uma lista de acionadores disponíveis.
Clique e posicione o elemento Gatilho do Pub/Sub no designer.
Clique no elemento Gatilho do Pub/Sub no editor de integração para visualizar o painel de configuração do gatilho.
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ópicogke-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:
Selecione Tarefas para mostrar uma lista das tarefas disponíveis.
Clique e posicione o elemento Mapeamento de dados no editor de integração.
Clique na tarefa Mapeamento de dados no designer para abrir o painel de configuração da tarefa.
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.
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:- Expanda a variável JSON
CloudPubSubMessage
na lista Variáveis e arraste a variávelCloudPubSubMessage.data
para a primeira linha de Entrada. - 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:
- No campo Nome, use
message_data
. - Na lista Tipo de variável, selecione Saída da integração.
- Na lista Tipo de dados, selecione String.
- Clique em Criar. A variável
message_data
aparece em Saída.
- No campo Nome, use
- Arraste a variável
CloudPubSubMessage.attributes
da lista Variáveis para a segunda linha na coluna de entrada. 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:
- No campo Nome, use
attributes
. - Na lista Tipo de variável, selecione Nenhum.
- Na lista Tipo de dados, selecione JSON.
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" } } }
Clique em Criar. A variável
attributes
aparece em Saída. Confira se a variável de atributos é semelhante a esta:
- No campo Nome, use
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.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:
- No campo Nome, use
cluster_name
. - Na lista Tipo de variável, selecione Saída da integração.
- Na lista Tipo de dados, selecione String.
- Clique em Criar. A variável
cluster_name
aparece em Saída.
- No campo Nome, use
Repita as etapas e e f para
project_id
,cluster_location
,type_url
epayload
.Feche o Editor de mapeamento de dados quando o mapeamento for concluído. Todas as alterações serão salvas automaticamente.
- Expanda a variável JSON
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:
- Selecione Tarefas para mostrar uma lista das tarefas disponíveis.
- Clique e posicione o elemento do (script) transformador de dados no editor de integração.
- Clique na tarefa Data Transformer no designer para abrir o painel de configuração da tarefa.
- 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.
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:
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.
- Nome: insira
Selecionar script.
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))}
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:
- Selecione Tasks no editor de integração para mostrar a lista de tarefas disponíveis.
- Clique e posicione o elemento Enviar e-mail no editor de integração.
- 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.
- Clique no elemento Enviar e-mail no designer para abrir o painel de configuração
da tarefa. Defina as seguintes propriedades:
- Para os destinatários: digite um endereço de e-mail. Você usará esse e-mail para confirmar a conclusão da integração.
- Assunto: insira
GKE Notifications
. - Corpo em texto simples: selecione a variável
full_message
criada anteriormente na tarefa Transformador de dados. - 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:
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
- 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.
Excluir recursos individuais
A seguir
- Saiba mais sobre os tipos de notificações de cluster.
- Confira a documentação do Pub/Sub.