Aller au contenu

Se connecter au cluster Kubernetes

Trois outils, une commande de connexion, un fichier à poser. Ensuite kubectl parle au cluster avec votre compte Qim info, et il n’y a plus rien à refaire avant l’expiration du jeton.

kubectl pour parler au cluster, Azure CLI pour vous authentifier, kubelogin pour transformer votre session Azure CLI en jeton compris par l’API server.

Fenêtre de terminal
brew install kubernetes-cli azure-cli
brew install Azure/kubelogin/kubelogin
  1. Connectez-vous au tenant des labs en demandant un jeton pour le cluster. Les deux options comptent : sans --scope, Azure CLI délivre un jeton pour lui-même, que l’API server refusera.

    Fenêtre de terminal
    az login \
    --tenant 14d30a29-fece-4f5b-a459-2b436eacd496 \
    --scope 14a43433-2800-455b-b11b-744de5e6e18a/.default
  2. Posez le kubeconfig du cluster dans un fichier à lui, et pointez KUBECONFIG dessus. Le contenu est juste en dessous.

    Fenêtre de terminal
    mkdir -p ~/.kube
    # Coller le contenu de la section suivante dans ce fichier
    "${EDITOR:-nano}" ~/.kube/qiminfo-lab.yaml
    export KUBECONFIG="$HOME/.kube/qiminfo-lab.yaml"
  3. Vérifiez que l’accès fonctionne. La première commande déclenche l’échange de jeton par kubelogin, sans ouvrir de navigateur puisque votre session Azure CLI est déjà ouverte.

    Fenêtre de terminal
    kubectl config use-context kube-lab
    kubectl version --output=yaml # la section serverVersion prouve que le cluster répond
    kubectl get namespaces
  4. Travaillez dans un namespace à vous, et faites-en le namespace courant. Un nom identifiable, votre trigramme suivi du sujet, pour que personne n’ait à demander à qui appartient ce qui tourne.

    Fenêtre de terminal
    kubectl create namespace qro-demo
    kubectl config set-context --current --namespace=qro-demo

Vous êtes prêt à déployer : déployer et exposer une application.

À coller tel quel dans ~/.kube/qiminfo-lab.yaml. La valeur de certificate-authority-data est une seule longue ligne : une copie qui la coupe en deux fait échouer la vérification TLS.

apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzT0RNMk1EWTJOVEl3SGhjTk1qWXdOekE1TVRNeE56TXlXaGNOTXpZd056QTJNVE14TnpNeQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzT0RNMk1EWTJOVEl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTVUNXZ2JZVi9oZE84TUl2WTVrSlMrdC9KYi9OMU5LQSthWC8vMktLNGwKVE51RmFWbnAyQ0dmM0JQb2dNRDFkb0lsUlVmNHY1SXF4UHg3VG5TL1k2K1RvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUJxYkNPUlhXN3kzNFJZWVNOUmpMCjZDb3V1Ukl3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUp1UXdzNGk1TnFlMzYvRTQ4bEwzT1U1Q3kySDZtblYKYktPaDJXWEdpTlorQWlFQW1aMjhHRXBPOCsxUW1NdkhCRG5IdEE1a0V5WndpV3o2dDhFUW5Yam5jRk09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://k8s.qiminfo-lab.ch:6443
name: kube-lab
contexts:
- context:
cluster: kube-lab
namespace: default
user: kube-lab
name: kube-lab
current-context: kube-lab
kind: Config
preferences: {}
users:
- name: kube-lab
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
command: kubelogin
args:
- get-token
- --login
- azurecli
- --server-id
- 14a43433-2800-455b-b11b-744de5e6e18a
env: null
interactiveMode: IfAvailable
provideClusterInfo: false
installHint: |
kubelogin is not installed which is required to connect to AAD enabled cluster.
To learn more, please go to https://aka.ms/aks/kubelogin

Vous avez déjà des clusters dans ~/.kube/config ? kubectl sait fusionner : export KUBECONFIG="$HOME/.kube/config:$HOME/.kube/qiminfo-lab.yaml", puis kubectl config use-context kube-lab pour basculer. Mettez la variable dans votre profil de shell, sinon elle disparaît en fermant le terminal.

Le symptôme Ce qui se passe
kubelogin is not installed… Le kubeconfig appelle un outil absent du PATH. Reprenez l’installation, az aks install-cli suffit.
You must be logged in to the server (Unauthorized) Le jeton a été délivré pour la mauvaise audience. Rejouez az login avec l’option --scope de l’étape 1.
Un message de tenant introuvable ou de compte inconnu Votre session Azure CLI est ouverte sur un autre tenant. L’option --tenant de l’étape 1 n’est pas optionnelle.
x509: certificate signed by unknown authority La valeur de certificate-authority-data a été tronquée ou coupée en plusieurs lignes au collage.
Error from server (Forbidden) L’authentification a réussi, c’est l’autorisation qui refuse. Restez dans votre namespace. Si le besoin est réel, écrivez à lab@qiminfo.ch.
kubectl répond, mais pour un autre cluster Plusieurs kubeconfig fusionnés et un contexte courant qui n’est pas le bon : kubectl config use-context kube-lab.
Un délai d’attente, ou « connection refused » Le réseau bloque le port 6443 de l’API server. C’est fréquent derrière un VPN ou chez un client qui n’ouvre que le web : nc -vz k8s.qiminfo-lab.ch 6443 le confirme en une seconde. Le port 443 du même domaine sert les applications, pas kubectl.