Um cluster do Google Kubernetes Engine (GKE) consiste em um plano de controle e um worker de máquinas virtuais chamadas nós. É possível executar cargas de trabalho do Kubernetes conteinerizadas em um cluster do GKE. Nós são as máquinas de worker que executam aplicativos conteinerizados e outras cargas de trabalho, e o plano de controle é a um endpoint unificado para o cluster. Para mais informações, consulte Arquitetura de cluster do GKE.
O servidor da API Kubernetes é executado no plano de controle, permitindo que você interaja com os objetos do Kubernetes no cluster por meio de chamadas da API Kubernetes. Objetos são entidades persistentes no sistema Kubernetes e representam o estado cluster. Para saber mais, na documentação do Kubernetes, consulte Objetos no Kubernetes e a Visão geral da API, que links para a "Referência da API Kubernetes" páginas de destino.
Este documento mostra como usar o conector da API Kubernetes em um fluxo de trabalho para fazer solicitações ao endpoint do serviço Kubernetes hospedado no plano de controle de um cluster do GKE. Por exemplo, é possível usar o conector para criar implantações do Kubernetes, executar jobs, gerenciar pods ou acessar apps implantados por meio de um proxy. Para mais informações, consulte a Visão geral do conector para a API Kubernetes.
Antes de começar
Antes de prosseguir com as tarefas neste documento, verifique se você tem ou cumpriu alguns pré-requisitos.
Ativar APIs
Antes de acessar os objetos da API Kubernetes usando o conector, ative as seguintes APIs:
- API Google Kubernetes Engine: crie e gerencie aplicativos baseados em contêiner usando o GKE.
APIs Workflows: para gerenciar definições e execuções de fluxos de trabalho. Ativar a API Workflows ativa automaticamente a API Workflow Executions.
Console
Ative as APIs:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Ative as APIs:
gcloud services enable container.googleapis.com workflows.googleapis.com
Crie uma conta de serviço
Crie uma conta de serviço gerenciada pelo usuário que
funcione como a identidade do seu fluxo de trabalho e conceda a ela o papel de
desenvolvedor do Kubernetes Engine
(roles/container.developer
) para que o fluxo de trabalho possa acessar objetos da API
do Kubernetes dentro de clusters.
Console
No console do Google Cloud, acesse a página Contas de serviço.
Selecione um projeto e clique em Criar conta de serviço.
No campo Nome da conta de serviço, insira um nome. O console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.
No campo Descrição da conta de serviço, insira uma descrição. Por exemplo,
Service account for Kubernetes API
.Clique em Criar e continuar.
Na lista Selecionar um papel, filtre e selecione as opções do Kubernetes Developer Engine.
Clique em Continuar.
Para concluir a criação da conta, clique em Concluído.
gcloud
Crie a conta de serviço:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Substitua
SERVICE_ACCOUNT_NAME
pelo nome da conta de serviço.Atribua o papel
container.developer
à conta de usuário:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/container.developer
Substitua o
PROJECT_ID
pelo ID do projeto do Google Cloud.
É possível usar o controle de acesso baseado em função (RBAC) do IAM e do Kubernetes para controlar o acesso ao seu cluster do GKE:
O IAM não é específico do Kubernetes. ele fornece identidade gerenciamento de vários produtos do Google Cloud e opera principalmente no nível do projeto do Google Cloud.
O RBAC do Kubernetes é um componente principal do Kubernetes e permite criar e conceder papéis (conjuntos de permissões) para qualquer objeto ou tipo de objeto no cluster. Se você usa principalmente o GKE e precisa de permissões refinadas para cada objeto e operação no cluster, o RBAC do Kubernetes é a melhor escolha.
Para mais informações, consulte Controle de acesso.
Criar um cluster do GKE
Para usar o conector da API Kubernetes, é preciso ter criado um cluster particular do GKE. Em um cluster particular, os nós têm apenas endereços IP internos, o que significa que os nós e os pods estão isolados da Internet por padrão. Para mais informações, consulte Clusters particulares.
Você também pode especificar o modo de operação, que oferece diferentes níveis de flexibilidade, responsabilidade e controle. Por exemplo, é possível criar cluster do Autopilot, que é um modo de operação no GKE em como o Google gerencia a configuração do cluster, incluindo nós, escalonamento, segurança e outras configurações predefinidas. Para mais informações, consulte Escolher um modo de operação do GKE.
Se você ainda não criou um cluster do GKE, é possível implantar um aplicativo conteinerizado de servidor da Web em um cluster do GKE. Ou, para testar as instruções neste documento, crie um cluster do Autopilot seguindo as instruções abaixo.
Console
No Console do Google Cloud, acesse a página de clusters do Kubernetes.
Clique em add_box Criar.
Se for solicitado que você escolha um modo de cluster, selecione Autopilot.
Na seção Princípios básicos do cluster, conclua o seguinte:
- Insira o Nome do cluster, como
hello-cluster
. - Selecione uma região para o cluster, como
us-central1
.
- Insira o Nome do cluster, como
Clique em Próxima: Rede.
Na seção Acesso à rede IPv4, para criar um cluster com um endpoint acessível publicamente, escolha Cluster público.
Para todas as outras configurações, aceite os padrões.
Clique em Criar.
A criação do cluster pode levar vários minutos para ser concluída. Depois que o cluster é criado, uma marca de seleção
indica que ele está em execução.gcloud
Execute este comando:
gcloud container clusters create-auto CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID
Substitua:
CLUSTER_NAME
: o nome do GKE cluster, comohello-cluster
LOCATION
: a região do cluster, comous-central1
.PROJECT_ID
: o ID do projeto do Google Cloud
A criação do cluster pode levar vários minutos para ser concluída. Depois que o cluster é criado, a saída fica mais ou menos assim:
Creating cluster hello-cluster...done.
Created [https://container.googleapis.com/v1/projects/MY_PROJECT
/zones/us-central1/clusters/hello-cluster].
[...]
STATUS: RUNNING
Usar o conector para enviar uma solicitação HTTP
Você pode usar o conector da API Kubernetes para enviar uma solicitação HTTP ao plano de controle de um cluster do GKE. Por exemplo, o fluxo de trabalho a seguir
cria uma implantação chamada nginx-deployment
no objeto especificado
cluster. A implantação descreve um estado obrigatório. nesse caso, executar três
Pods com a imagem nginx:1.14.2
e expor o serviço na porta 80. (Caso contrário,
especificado, project
e location
são padronizados para o fluxo de trabalho.
Para mais informações, consulte a página de referência do conector da API Kubernetes. gke.request.
Observe o seguinte:
- O campo
path
corresponde ao caminho do método da API Kubernetes. Para mais mais informações, na documentação do Kubernetes, consulte a Visão geral da API, que contém a "Referência da API Kubernetes" páginas de destino. - É possível detectar e processar erros de solicitação HTTP no seu fluxo de trabalho. Para mais informações, consulte Erros de fluxo de trabalho.
Implantar seu fluxo de trabalho
Antes de executar um fluxo de trabalho, você precisa criá-lo e implantá-lo.
Console
No console do Google Cloud, abra a página Workflows.
Clique em
Criar.Insira um nome para o novo fluxo de trabalho, como
kubernetes-api-request
.Na lista Região, selecione us-central1.
Selecione a conta de serviço que você criou anteriormente.
Clique em Próxima.
No editor de fluxo de trabalho, insira a seguinte definição para seu fluxo de trabalho:
YAML
JSON
Substitua:
CLUSTER_NAME
: o nome do cluster do GKE, comohello-cluster
PROJECT_ID
: o ID do projeto do Google CloudLOCATION
: o region para seu cluster, comous-central1
Clique em Implantar.
gcloud
Crie um arquivo de código-fonte para seu fluxo de trabalho:
touch kubernetes-api-request.JSON_OR_YAML
Substitua
JSON_OR_YAML
poryaml
oujson
. dependendo do formato do seu fluxo de trabalho.Em um editor de texto, copie o seguinte fluxo de trabalho para o arquivo de código-fonte:
YAML
JSON
Substitua:
CLUSTER_NAME
: o nome do GKE cluster, comohello-cluster
LOCATION
: o region para seu cluster, comous-central1
Implante o fluxo de trabalho:
gcloud workflows deploy kubernetes-api-request \ --source=kubernetes-api-request.
JSON_OR_YAML
\ --location=LOCATION
\ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Executar seu fluxo de trabalho
Depois de implantar o fluxo de trabalho, você pode executá-lo. Quando um fluxo de trabalho é executado, a definição atual associada a ele também é.
Console
No console do Google Cloud, abra a página Workflows.
Na página Fluxos de trabalho, selecione o fluxo de trabalho para acessar a página de detalhes dele.
Na página Detalhes do fluxo de trabalho, clique em play_arrow Execução.
Clique em Executar novamente.
Confira os resultados do fluxo de trabalho no painel Saída.
Se for bem-sucedido, o estado de execução deverá ser
Succeeded
e o corpo do a resposta será retornada.
gcloud
Execute o fluxo de trabalho:
gcloud workflows run kubernetes-api-request \ --location=LOCATION
Se for bem-sucedido, o estado precisará ser SUCCEEDED
e o corpo da resposta
é retornado.
Usar o conector para executar um job do Kubernetes
Você pode usar o conector da API Kubernetes para implantar e executar um job do Kubernetes em um do cluster do GKE. O fluxo de trabalho a seguir cria um job do Kubernetes que executa um script Bash que faz iterações em uma sequência de números. O fluxo de trabalho aguarda até 90 segundos para que o job do Kubernetes seja concluído; caso contrário, um é gerado. Se o job for concluído, ele será excluído.
Um job será considerado concluído se o status dele incluir uma condição
tipo de Complete
. Exemplo:
"status": { "conditions": [ { "type": "Complete", "status": "True" } ] }
Se o job falhar, uma tag FailedJobError
será retornada. Exemplo:
{ "tags": ["FailedJobError"] "job": {...} "message":"Kubernetes job failed" }
Para mais informações, consulte as páginas de referência da seguinte API Kubernetes: funções do conector:
Implantar seu fluxo de trabalho
Antes de executar um fluxo de trabalho, você precisa criá-lo e implantá-lo.
Console
No console do Google Cloud, abra a página Workflows.
Clique em
Criar.Insira um nome para o novo fluxo de trabalho, como
kubernetes-api-job
.Na lista Região, selecione us-central1.
Selecione a conta de serviço que você criou anteriormente.
Clique em Próxima.
No editor de fluxo de trabalho, insira a seguinte definição para seu fluxo de trabalho:
YAML
JSON
Substitua:
LOCATION
: o region para seu cluster, comous-central1
CLUSTER_NAME
: o nome do GKE cluster, comohello-cluster
JOB_NAME
: o nome do job do Kubernetes, comohello-job
Clique em Implantar.
gcloud
Crie um arquivo de código-fonte para seu fluxo de trabalho:
touch kubernetes-api-job.JSON_OR_YAML
Substitua
JSON_OR_YAML
poryaml
oujson
. dependendo do formato do seu fluxo de trabalho.Em um editor de texto, copie o seguinte fluxo de trabalho para o arquivo de código-fonte:
YAML
JSON
Substitua:
LOCATION
: a região do cluster, comous-central1
.CLUSTER_NAME
: o nome do GKE cluster, comohello-cluster
JOB_NAME
: o nome do job do Kubernetes, como comohello-job
Implante o fluxo de trabalho:
gcloud workflows deploy kubernetes-api-job \ --source=kubernetes-api-job.
JSON_OR_YAML
\ --location=LOCATION
\ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Executar seu fluxo de trabalho
Depois de implantar o fluxo de trabalho, você pode executá-lo. Quando um fluxo de trabalho é executado, a definição atual associada a ele também é.
Console
No console do Google Cloud, abra a página Workflows.
Na página Fluxos de trabalho, selecione seu fluxo de trabalho para acessar a página de detalhes.
Na página Detalhes do fluxo de trabalho, clique em play_arrow Execução.
Clique em Executar novamente.
A execução do fluxo de trabalho pode levar alguns minutos.
Veja os resultados do fluxo de trabalho no painel Saída.
Os resultados serão semelhantes a estes:
{ ... }, "status": { "completionTime": "2023-10-31T17:04:32Z", "conditions": [ { "lastProbeTime": "2023-10-31T17:04:33Z", "lastTransitionTime": "2023-10-31T17:04:33Z", "status": "True", "type": "Complete" } ], "ready": 0, "startTime": "2023-10-31T17:04:28Z", "succeeded": 1, "uncountedTerminatedPods": {} } }
gcloud
Execute o fluxo de trabalho:
gcloud workflows run kubernetes-api-job \ --location=LOCATION
A execução do fluxo de trabalho pode levar alguns minutos. Os resultados serão semelhantes a este:
{
...
},
"status": {
"completionTime": "2023-10-31T17:04:32Z",
"conditions": [
{
"lastProbeTime": "2023-10-31T17:04:33Z",
"lastTransitionTime": "2023-10-31T17:04:33Z",
"status": "True",
"type": "Complete"
}
],
"ready": 0,
"startTime": "2023-10-31T17:04:28Z",
"succeeded": 1,
"uncountedTerminatedPods": {}
}
}