Um cluster do Google Kubernetes Engine (GKE) consiste num plano de controlo e em máquinas de trabalho denominadas nós. Pode executar as suas cargas de trabalho do Kubernetes contentorizadas num cluster do GKE. Os nós são as máquinas de trabalho que executam as suas aplicações em contentores e outras cargas de trabalho, e o plano de controlo é o ponto final unificado do seu cluster. Para mais informações, consulte o artigo Arquitetura do cluster do GKE.
O servidor da API Kubernetes é executado no plano de controlo, o que lhe permite interagir com objetos do Kubernetes no cluster através de chamadas da API Kubernetes. Os objetos são entidades persistentes no sistema Kubernetes e representam o estado do seu cluster. Para mais informações, na documentação do Kubernetes, consulte Objetos no Kubernetes, e a vista geral da API, que inclui links para as páginas de "Referência da API Kubernetes".
Este documento mostra-lhe como usar o conector da API Kubernetes num fluxo de trabalho para fazer pedidos ao ponto final do serviço Kubernetes alojado no plano de controlo de um cluster do GKE. Por exemplo, pode usar o conetor para criar implementações do Kubernetes, executar tarefas, gerir pods ou aceder a apps implementadas através de um proxy. Para mais informações, consulte a vista geral do conetor da API Kubernetes.
Antes de começar
Antes de avançar com as tarefas neste documento, certifique-se de que concluiu determinados pré-requisitos.
Ativar APIs
Antes de poder aceder a objetos da API Kubernetes através do conetor da API Kubernetes, tem de ativar as seguintes APIs:
- API Google Kubernetes Engine: para criar e gerir aplicações baseadas em contentores com o GKE
APIs Workflows: para gerir definições e execuções de fluxos de trabalho. A ativação da API Workflows ativa automaticamente a API Workflow Executions
Consola
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
Criar uma conta de serviço
Crie uma conta de serviço gerida pelo utilizador que
atua como a identidade do seu fluxo de trabalho e conceda-lhe a função
Kubernetes Engine Developer
(roles/container.developer
) para que o fluxo de trabalho possa aceder aos objetos da API Kubernetes
nos clusters.
Consola
Na Google Cloud consola, aceda à página Contas de serviço.
Selecione um projeto e, de seguida, clique em Criar conta de serviço.
No campo Nome da conta de serviço, introduza um nome. A Google Cloud consola preenche o campo ID da conta de serviço com base neste nome.
No campo Descrição da conta de serviço, introduza uma descrição. Por exemplo,
Service account for Kubernetes API
.Clique em Criar e continuar.
Na lista Selecionar uma função, filtre e selecione a função Kubernetes Engine Developer.
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.Conceda a função
container.developer
à sua conta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/container.developer
Substitua
PROJECT_ID
pelo seu Google Cloud ID do projeto.
Tenha em atenção que pode usar o IAM e o controlo de acesso baseado em funções (CABF) do Kubernetes para controlar o acesso ao seu cluster do GKE:
O IAM não é específico do Kubernetes. Fornece gestão de identidades para vários Google Cloud produtos e funciona principalmente ao nível do Google Cloud projeto.
O RBAC do Kubernetes é um componente essencial do Kubernetes e permite-lhe criar e conceder funções (conjuntos de autorizações) para qualquer objeto ou tipo de objeto no cluster. Se usar principalmente o GKE e precisar de autorizações detalhadas para cada objeto e operação no seu cluster, o RBAC do Kubernetes é a melhor escolha.
Para mais informações, consulte o artigo Controlo de acesso.
Crie um cluster do GKE
Para usar o conector da API Kubernetes, já tem de ter criado um cluster do GKE público ou privado. Num cluster privado, os nós só têm endereços IP internos, o que significa que os nós e os pods estão isolados da Internet por predefinição. Para mais informações, consulte o artigo Clusters privados.
Também pode especificar o modo de funcionamento que lhe oferece diferentes níveis de flexibilidade, responsabilidade e controlo. Por exemplo, pode criar um cluster do Autopilot, que é um modo de funcionamento no GKE em que a Google gere a configuração do cluster, incluindo os nós, o escalonamento, a segurança e outras definições pré-configuradas. Para mais informações, consulte o artigo Escolha um modo de funcionamento do GKE.
Se ainda não criou um cluster do GKE, pode implementar uma aplicação contentorizada de servidor Web num cluster do GKE. Em alternativa, para experimentar as instruções neste documento, pode criar um cluster do Autopilot concluindo os seguintes passos.
Consola
Na Google Cloud consola, aceda à página Clusters do Kubernetes.
Clique em add_box Criar.
Se lhe for pedido que selecione um modo de cluster, selecione Autopilot.
Na secção Noções básicas do cluster, conclua o seguinte:
- Introduza o Nome do cluster, como
hello-cluster
. - Selecione uma região para o seu cluster, como
us-central1
.
- Introduza o Nome do cluster, como
Clique em Seguinte: rede.
Na secção Acesso à rede IPv4, para criar um cluster com um ponto final acessível publicamente, escolha Cluster público.
Para todas as outras definições, aceite as predefinições.
Clique em Criar.
A criação do cluster pode demorar vários minutos a ser concluída. Depois de criar o cluster, é apresentada uma marca de verificação
a indicar que está em execução.gcloud
Execute o seguinte comando:
gcloud container clusters create-auto CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID
Substitua o seguinte:
CLUSTER_NAME
: o nome do seu cluster do GKE, comohello-cluster
LOCATION
: a região do seu cluster, comous-central1
PROJECT_ID
: o ID do seu Google Cloud projeto
A criação do cluster pode demorar vários minutos a ser concluída. Depois de criar o cluster, o resultado deve ser semelhante ao seguinte:
Creating cluster hello-cluster...done.
Created [https://container.googleapis.com/v1/projects/MY_PROJECT
/zones/us-central1/clusters/hello-cluster].
[...]
STATUS: RUNNING
Use o conetor para enviar um pedido HTTP
Pode usar o conector da API Kubernetes para enviar um pedido HTTP para o plano de controlo de um cluster do GKE. Por exemplo, o fluxo de trabalho seguinte
cria uma implementação denominada nginx-deployment
no cluster do Kubernetes
especificado. A implementação descreve um estado necessário; neste caso, para executar três pods com a imagem nginx:1.14.2
e expor o respetivo serviço na porta 80. (Se não for especificado, os valores project
e location
são os do fluxo de trabalho por predefinição.)
Para mais informações, consulte a página de referência da função do conector da API Kubernetes, gke.request.
Tenha em conta o seguinte:
- O campo
path
corresponde ao caminho do método da API Kubernetes. Para mais informações, na documentação do Kubernetes, consulte a vista geral da API, que inclui links para as páginas de "referência da API Kubernetes". - Pode capturar e processar erros de pedidos HTTP no seu fluxo de trabalho. Para mais informações, consulte o artigo Erros de fluxo de trabalho.
Implemente o seu fluxo de trabalho
Antes de executar um fluxo de trabalho, tem de o criar e implementar.
Consola
Na Google Cloud consola, aceda à página Fluxos de trabalho.
Clique em
Criar.Introduza 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 criou anteriormente.
Clicar em Seguinte.
No editor de fluxos de trabalho, introduza a seguinte definição para o seu fluxo de trabalho:
YAML
JSON
Substitua o seguinte:
CLUSTER_NAME
: o nome do seu cluster do GKE, comohello-cluster
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a região do seu cluster, comous-central1
Clique em Implementar.
gcloud
Crie um ficheiro de código-fonte para o seu fluxo de trabalho:
touch kubernetes-api-request.JSON_OR_YAML
Substitua
JSON_OR_YAML
poryaml
oujson
, consoante o formato do seu fluxo de trabalho.Num editor de texto, copie o seguinte fluxo de trabalho para o ficheiro de código-fonte:
YAML
JSON
Substitua o seguinte:
CLUSTER_NAME
: o nome do seu cluster do GKE, comohello-cluster
LOCATION
: a região do seu cluster, comous-central1
Implemente 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
Execute o seu fluxo de trabalho
Depois de implementar o fluxo de trabalho com êxito, pode executá-lo. A execução de um fluxo de trabalho executa a definição do fluxo de trabalho atual associada ao fluxo de trabalho.
Consola
Na Google Cloud consola, aceda à página Fluxos de trabalho.
Na página Fluxos de trabalho, selecione o fluxo de trabalho para aceder à respetiva página de detalhes.
Na página Detalhes do fluxo de trabalho, clique em play_arrow Executar.
Clique novamente em Executar.
Veja os resultados do fluxo de trabalho no painel Saída.
Se for bem-sucedido, o estado de execução deve ser
Succeeded
e o corpo da resposta é devolvido.
gcloud
Execute o fluxo de trabalho:
gcloud workflows run kubernetes-api-request \ --location=LOCATION
Se for bem-sucedido, o estado deve ser SUCCEEDED
e o corpo da resposta é devolvido.
Use o conetor para executar uma tarefa do Kubernetes
Pode usar o conector da API Kubernetes para implementar e executar uma tarefa Kubernetes num cluster do GKE. O fluxo de trabalho seguinte cria um trabalho do Kubernetes que executa um script Bash que itera através de uma sequência de números. O fluxo de trabalho aguarda até 90 segundos pela conclusão da tarefa do Kubernetes; caso contrário, é gerado um erro. Se a tarefa for concluída, é eliminada.
Tenha em atenção que um trabalho é considerado concluído se o respetivo estado incluir um tipo de condição Complete
. Por exemplo:
"status": { "conditions": [ { "type": "Complete", "status": "True" } ] }
Se a tarefa falhar, é devolvida uma etiqueta FailedJobError
. Por exemplo:
{ "tags": ["FailedJobError"] "job": {...} "message":"Kubernetes job failed" }
Para mais informações, consulte as páginas de referência das seguintes funções do conetor da API Kubernetes:
Implemente o seu fluxo de trabalho
Antes de executar um fluxo de trabalho, tem de o criar e implementar.
Consola
Na Google Cloud consola, aceda à página Fluxos de trabalho.
Clique em
Criar.Introduza 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 criou anteriormente.
Clicar em Seguinte.
No editor de fluxos de trabalho, introduza a seguinte definição para o seu fluxo de trabalho:
YAML
JSON
Substitua o seguinte:
LOCATION
: a região do seu cluster, comous-central1
CLUSTER_NAME
: o nome do seu cluster do GKE, comohello-cluster
JOB_NAME
: o nome da tarefa do Kubernetes, comohello-job
Clique em Implementar.
gcloud
Crie um ficheiro de código-fonte para o seu fluxo de trabalho:
touch kubernetes-api-job.JSON_OR_YAML
Substitua
JSON_OR_YAML
poryaml
oujson
, consoante o formato do seu fluxo de trabalho.Num editor de texto, copie o seguinte fluxo de trabalho para o ficheiro de código-fonte:
YAML
JSON
Substitua o seguinte:
LOCATION
: a região do seu cluster, comous-central1
CLUSTER_NAME
: o nome do seu cluster do GKE, comohello-cluster
JOB_NAME
: o nome da tarefa do Kubernetes, comohello-job
Implemente 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
Execute o seu fluxo de trabalho
Depois de implementar o fluxo de trabalho com êxito, pode executá-lo. A execução de um fluxo de trabalho executa a definição do fluxo de trabalho atual associada ao fluxo de trabalho.
Consola
Na Google Cloud consola, aceda à página Fluxos de trabalho.
Na página Fluxos de trabalho, selecione o fluxo de trabalho para aceder à respetiva página de detalhes.
Na página Detalhes do fluxo de trabalho, clique em play_arrow Executar.
Clique novamente em Executar.
A execução do fluxo de trabalho pode demorar alguns minutos.
Veja os resultados do fluxo de trabalho no painel Saída.
Os resultados devem ser semelhantes aos seguintes:
{ ... }, "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 demorar alguns minutos. Os resultados devem ser semelhantes aos seguintes:
{
...
},
"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": {}
}
}