APIs do Kubernetes
Descrição
As APIs do Kubernetes são interfaces de programação baseadas em recursos (RESTful) fornecidas por meio de HTTP. Ele suporta consulta, criação, atualização e exclusão de vários recursos de cluster usando métodos de solicitação HTTP padrão (POST, PUT, PATCH, DELETE e GET).
O CCE permite que você use APIs do Kubernetes nativo das seguintes maneiras:
- Chamar APIs do Kubernetes por meio do servidor de API de cluster. É adequada para chamadas de API em escala graças à sua conexão direta com o servidor de API. Esta é uma opção recomendada.
- Chamar APIs do Kubernetes por meio do API Gateway. Aplica-se a chamadas de API em pequena escala. O controle de fluxo do gateway da API pode ser acionado quando as APIs são chamadas em escala.
Chamar APIs do Kubernetes por meio do servidor de API de cluster
Você pode usar o servidor de API de um cluster do Kubernetes para chamar APIs do Kubernetes nativo.
- Obtenha o certificado de cluster e o servidor de API.
- Método 1: obtenha o certificado chamando a API para obter o certificado do cluster, salve as informações retornadas no arquivo kubeconfig.json e extraia as informações do certificado, da chave privada e do servidor da API. Os comandos são os seguintes:
# Obtain the certificate and save it as client.crt. cat ./kubeconfig.json |grep client-certificate-data | awk -F '"' '{print $4}' | base64 -d > ./client.crt # Obtain the private key and save it as client.key. cat ./kubeconfig.json |grep client-key-data | awk -F '"' '{print $4}' | base64 -d > ./client.key # Obtain the API server. cat ./kubeconfig.json |grep server | awk -F '"' '{print $4}'
- Método 2: consulte o endereço do servidor API (endereço de rede privada ou pública) na página Cluster Information do console do CCE e baixe o certificado (arquivos client.crt e client.key).
- Método 1: obtenha o certificado chamando a API para obter o certificado do cluster, salve as informações retornadas no arquivo kubeconfig.json e extraia as informações do certificado, da chave privada e do servidor da API. Os comandos são os seguintes:
- Chame APIs do Kubernetes nativo usando o certificado de cluster.
Por exemplo, execute o comando curl para chamar uma API para visualizar as informações do pod. No exemplo a seguir, 192.168.0.198:5443 é o endereço IP do servidor da API do cluster.
curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://192.168.0.198:5443/api/v1/namespaces/default/pods/
Para obter mais APIs de cluster, consulte APIs do Kubernetes.
Chamar APIs do Kubernetes por meio do API Gateway
Você pode chamar APIs do Kubernetes nativo por meio do API Gateway usando o URL no formato https://{clusterid}.Endpoint/uri. No URL, {clusterid} indica o ID do cluster e uri indica o caminho do recurso, ou seja, o caminho para acesso à API.
Parâmetro |
Descrição |
---|---|
{clusterid} |
ID do cluster. Depois que um cluster é criado, chame a API para obter um cluster em um projeto especificado para obter o ID do cluster. |
Endpoint |
Entrada (URL) para um serviço Web, que pode ser obtido em Pontos de extremidade. |
uri |
Caminho no qual o recurso solicitado pela API está localizado. Obtenha o valor do URI da API. Para detalhes, veja API de Kubernetes. |
- Obtenha o token da região onde o cluster está localizado. Para obter detalhes sobre como obter o token, consulte Obtenção de um token.
- Obtenha o ID do cluster utilizando um dos seguintes métodos:
- Método 1: use a API para obter informações do cluster para consultar o UID do cluster.
- Método 2: consulte o cluster na página Cluster Information do console do CCE.
- Determine o URL solicitado com base no formato de URL https://{clusterid}.Endpoint/uri.
- {clusterid}: obtenha o valor usando 2.
- Endpoint: obtendo o ponto de extremidade de Regiões e pontos de extremidade.
Por exemplo, o ponto de extremidade do CCE na região AP-Singapore é cce.ap-southeast-3.myhuaweicloud.com.
- uri: defina esse parâmetro com base na API a ser chamada. Por exemplo, se você quiser criar uma Implementação, o método de solicitação é POST e o URI da API é /apis/apps/v1/namespaces/{namespace}/deployments, onde {namespace} indica o nome do namespace do cluster. Neste exemplo, o valor é default.
Para mais APIs, consulte APIs do Kubernetes.
Combine os parâmetros anteriores seguindo o formato de URL https://{clusterid}.Endpoint/uri.
Veja a seguir um exemplo do URL para chamar a API para visualizar informações sobre todos os pods:https://07da5*****.cce.ap-southeast-3.myhuaweicloud.com/apis/apps/v1/namespaces/default/deployments
- Use o método de solicitação especificado pela API e defina os parâmetros do cabeçalho da solicitação. Se os parâmetros no corpo precisarem ser adicionados, adicione a estrutura correspondente à API referindo-se às APIs do Kubernetes.
Exemplo de comando curl para chamar a API para criar uma Implementação usando POST e adicionar o corpo correspondente:
Neste exemplo, o arquivo nginx.json é usado para criar uma Implementação chamada nginx. A Implementação usa a imagem nginx:latest e contém dois pods. Cada pod ocupa 100m CPU e 200 MiB de memória.
curl --location --request POST 'https://07da5*****.cce.ap-southeast-3.myhuaweicloud.com/apis/apps/v1/namespaces/default/deployments' \ --header 'Content-Type: application/json' \ --header 'X-Auth-Token: MIIWvw******' \ --data @nginx.json
Os parâmetros de cabeçalho contidos na solicitação são os seguintes:Tabela 2 Parâmetros de cabeçalho de solicitação Parâmetro
Obrigatório
Tipo
Descrição
Content-Type
Sim
String
Tipo de corpo da mensagem (formato), por exemplo, application/json.
X-Auth-Token
Sim
String
As solicitações para chamar uma API podem ser autenticadas usando um token ou AK/SK. Se a autenticação baseada em token for usada, esse parâmetro é obrigatório e deve ser definido como um token de usuário. Para obter detalhes, consulte Obtenção de um token.
O conteúdo do arquivo nginx.json é o seguinte:
{ "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": "nginx" }, "spec": { "replicas": 2, "selector": { "matchLabels": { "app": "nginx" } }, "template": { "metadata": { "labels": { "app": "nginx" } }, "spec": { "containers": [ { "image": "nginx:latest", "name": "container-0", "resources": { "limits": { "cpu": "100m", "memory": "200Mi" }, "requests": { "cpu": "100m", "memory": "200Mi" } } } ], "imagePullSecrets": [ { "name": "default-secret" } ] } } } }
Documentos relacionados
- SDK oficial do Kubernetes (incluindo Go, Python e Java)
- Acesso de um cluster usando APIs do Kubernetes