Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-09-10 GMT+08:00

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

Você pode usar o servidor de API de um cluster do Kubernetes para chamar APIs do Kubernetes nativo.

  1. 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).

  2. 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.

Tabela 1 Parâmetros de URL

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.

  1. 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.
  2. Obtenha o ID do cluster utilizando um dos seguintes métodos:

  3. 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

  4. 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