Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 27, 2026

L'API Kubernetes est une interface HTTP RESTful basée sur les ressources, qui prend en charge les méthodes GET, POST, PUT, PATCH et DELETE. Elle permet d'interroger et de gérer les ressources du cluster par programmation, sans recourir à kubectl. Authentifiez-vous à l'aide de certificats clients et appelez l'API avec cURL pour gérer les pods et les Deployments.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster ACK

  • Des autorisations d'accès à la console ACK

  • cURL installé sur votre machine locale

Extraire les identifiants depuis le fichier kubeconfig

  1. Connectez-vous à la console ACK.

  2. Cliquez sur Go to RAM consoleGo to RAM console pour accéder à la page Resource Access Management Quick Authorization, puis cliquez sur Confirm Authorization PolicyConfirm Authorization Policy. Une fois l'autorisation accordée, actualisez la console ACK.

  3. Dans le volet de navigation de gauche, cliquez sur ClustersClusters.

  4. Sur la page ClustersClusters, cliquez sur le nom du cluster ou sur DetailsDetails dans la colonne ActionsActions.

  5. Sélectionnez l'onglet Connection InformationConnection Information. Copiez le contenu de kubeconfigkubeconfig et enregistrez-le localement sous le nom ./kubeconfig.

  6. Extrayez le certificat client, la clé privée et l'adresse du serveur API à partir du fichier 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}'`

    Ces commandes décodent les données du certificat et stockent l'URL du serveur API dans la variable $APISERVER. Toutes les commandes cURL suivantes utilisent ces identifiants ainsi que la variable $APISERVER.

L'option -k ignore la vérification TLS du serveur. En production, remplacez -k par --cacert <path-to-ca.pem> afin de vérifier l'identité du serveur et de prévenir les attaques de type « man-in-the-middle ».

Gérer les pods

Tous les appels d'API relatifs aux pods utilisent le chemin $APISERVER/api/v1/namespaces/<namespace>/pods.

Opération Méthode HTTP Chemin
Répertorier tous les namespaces GET /api/v1/namespaces
Répertorier tous les pods GET /api/v1/namespaces/default/pods
Créer un pod POST /api/v1/namespaces/default/pods
Obtenir le statut d'un pod GET /api/v1/namespaces/default/pods/nginx
Obtenir les journaux d'un pod GET /api/v1/namespaces/default/pods/nginx/log
Obtenir les métriques d'un pod GET /apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx
Supprimer un pod DELETE /api/v1/namespaces/default/pods/nginx

Répertorier tous les namespaces du cluster :

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

Répertorier tous les pods du namespace default :

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

Créer un pod à partir d'un manifeste 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

Créer un pod à partir d'un manifeste 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

Obtenir le statut d'un pod :

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

Obtenir les journaux d'un pod :

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

Obtenir les métriques d'un pod via l'API Metrics Server :

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

Supprimer un pod :

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

Gérer les Deployments

Tous les appels d'API relatifs aux Deployments utilisent le chemin $APISERVER/apis/apps/v1/namespaces/<namespace>/deployments.

Créer un 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

Répertorier tous les Deployments du namespace default :

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

Mettre à l'échelle un 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}}'

Mettre à jour l'image du conteneur :

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"}]}}}}'

Étapes suivantes

Pour un accès programmatique au-delà de cURL, utilisez une bibliothèque cliente Kubernetes officielle :

Langage Bibliothèque cliente Exemples
Go client-go Parcourir
Python client-python Parcourir
Java client-java Parcourir

Consultez la documentation Kubernetes client libraries pour obtenir la liste complète des langages pris en charge.

Découvrez d'autres méthodes d'accès dans la rubrique Access clusters using the Kubernetes API.