Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Call the Kubernetes API with client certificates

Última atualização: Jun 27, 2026

A API do Kubernetes é uma interface HTTP RESTful baseada em recursos que aceita os métodos GET, POST, PUT, PATCH e DELETE. Utilize-a para consultar e gerenciar recursos do cluster programaticamente, sem depender do kubectl. Autentique-se com certificados de cliente e chame a API via curl para gerenciar pods e Deployments.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Um cluster ACK

  • Permissão para acessar o console ACK

  • curl instalado na sua máquina local

Extrair credenciais do kubeconfig

  1. Faça login no console ACK.

  2. Clique em Go to RAM console para acessar a página de Autorização Rápida do Resource Access Management e clique em Confirm Authorization Policy. Após a autorização, atualize a página do console ACK.

  3. No painel de navegação à esquerda, clique em Clusters.

  4. Na página Clusters, clique no nome do cluster ou em Details na coluna Actions.

  5. Selecione a aba Connection Information. Copie o conteúdo de kubeconfig e salve-o localmente como ./kubeconfig.

  6. Extraia o certificado de cliente, a chave privada e o endereço do servidor de API do arquivo kubeconfig:

    cat ./kubeconfig | grep client-certificate-data | awk -F ' ' '{print $2}' | base64 -d > ./client-cert.pem
    cat ./kubeconfig | grep client-key-data | awk -F ' ' '{print $2}' | base64 -d > ./client-key.pem
    APISERVER=`cat ./kubeconfig | grep server | awk -F ' ' '{print $2}'`

    Esses comandos decodificam os dados do certificado e armazenam a URL do servidor de API na variável $APISERVER. Todos os comandos curl subsequentes utilizam essas credenciais e a variável $APISERVER.

A flag -k ignora a verificação TLS do servidor. Em ambientes de produção, substitua -k por --cacert <path-to-ca.pem> para validar a identidade do servidor e evitar ataques man-in-the-middle.

Gerenciar pods

Todas as chamadas de API para pods utilizam o caminho $APISERVER/api/v1/namespaces/<namespace>/pods.

Operação

Método HTTP

Caminho

Listar todos os namespaces

GET

/api/v1/namespaces

Listar todos os pods

GET

/api/v1/namespaces/default/pods

Criar um pod

POST

/api/v1/namespaces/default/pods

Obter status do pod

GET

/api/v1/namespaces/default/pods/nginx

Obter logs do pod

GET

/api/v1/namespaces/default/pods/nginx/log

Obter métricas do pod

GET

/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx

Excluir um pod

DELETE

/api/v1/namespaces/default/pods/nginx

Listar todos os namespaces do cluster:

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces

Listar todos os pods no namespace default:

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods

Criar um pod a partir de um manifesto JSON:

cat nginx-pod.json
{
    "apiVersion": "v1",
    "kind": "Pod",
    "metadata": {
        "name": "nginx",
        "namespace": "default"
    },
    "spec": {
        "containers": [
            {
                "name": "nginx",
                "image": "nginx:alpine",
                "ports": [
                    {
                        "containerPort": 80
                    }
                ]
            }
        ]
    }
}

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods \
  -X POST --header 'content-type: application/json' -d@nginx-pod.json

Criar um pod a partir de um manifesto YAML:

cat nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: default
spec:
  containers:
  - name: nginx
    image: nginx:alpine
    ports:
    - containerPort: 80

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods \
  -X POST --header 'content-type: application/yaml' --data-binary @nginx-pod.yaml

Obter o status do pod:

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx

Obter os logs do pod:

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx/log

Consultar métricas do pod pela API do Metrics Server:

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx

Excluir um pod:

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx -X DELETE

Gerenciar Deployments

As chamadas de API para Deployment utilizam o caminho $APISERVER/apis/apps/v1/namespaces/<namespace>/deployments.

Criar um Deployment:

cat nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "2"
            memory: "4Gi"

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments \
  -X POST --header 'content-type: application/yaml' --data-binary @nginx-deploy.yaml

Listar todos os Deployments no namespace default:

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments

Dimensionar um Deployment:

curl --cert ./client-cert.pem --key ./client-key.pem -k \
  $APISERVER/apis/apps/v1/namespaces/default/deployments/nginx-deploy \
  -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' \
  -d '{"spec": {"replicas": 4}}'

Atualizar a imagem do contêiner:

curl --cert ./client-cert.pem --key ./client-key.pem -k \
  $APISERVER/apis/apps/v1/namespaces/default/deployments/nginx-deploy \
  -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' \
  -d '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image": "nginx:1.7.9"}]}}}}'

Próximos passos

Para acesso programático além do curl, utilize uma biblioteca de cliente oficial do Kubernetes:

Linguagem

Biblioteca de cliente

Exemplos

Go

client-go

Navegar

Python

client-python

Navegar

Java

client-java

Navegar

Consulte a lista completa de linguagens suportadas em Bibliotecas de cliente do Kubernetes.

Explore métodos alternativos de acesso em Acessar clusters usando a API do Kubernetes.