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.
Les trois outils
Section intitulée « Les trois outils »kubectl pour parler au cluster, Azure CLI pour vous authentifier, kubelogin pour transformer votre session
Azure CLI en jeton compris par l’API server.
brew install kubernetes-cli azure-clibrew install Azure/kubelogin/kubeloginwinget install -e --id Kubernetes.kubectlwinget install -e --id Microsoft.AzureCLI# kubelogin, livré avec les outils AKSaz aks install-cliAzure CLI installé, az aks install-cli télécharge kubectl et kubelogin et les pose dans votre PATH. Le nom de
la commande parle d’AKS, mais l’outil récupéré est le même pour n’importe quel cluster authentifié par Entra ID.
az aks install-cliLa connexion
Section intitulée « La connexion »-
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 -
Posez le kubeconfig du cluster dans un fichier à lui, et pointez
KUBECONFIGdessus. 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.yamlexport KUBECONFIG="$HOME/.kube/qiminfo-lab.yaml" -
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-labkubectl version --output=yaml # la section serverVersion prouve que le cluster répondkubectl get namespaces -
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-demokubectl config set-context --current --namespace=qro-demo
Vous êtes prêt à déployer : déployer et exposer une application.
Le kubeconfig
Section intitulée « Le kubeconfig »À 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: v1clusters: - cluster: certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzT0RNMk1EWTJOVEl3SGhjTk1qWXdOekE1TVRNeE56TXlXaGNOTXpZd056QTJNVE14TnpNeQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzT0RNMk1EWTJOVEl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTVUNXZ2JZVi9oZE84TUl2WTVrSlMrdC9KYi9OMU5LQSthWC8vMktLNGwKVE51RmFWbnAyQ0dmM0JQb2dNRDFkb0lsUlVmNHY1SXF4UHg3VG5TL1k2K1RvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUJxYkNPUlhXN3kzNFJZWVNOUmpMCjZDb3V1Ukl3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUp1UXdzNGk1TnFlMzYvRTQ4bEwzT1U1Q3kySDZtblYKYktPaDJXWEdpTlorQWlFQW1aMjhHRXBPOCsxUW1NdkhCRG5IdEE1a0V5WndpV3o2dDhFUW5Yam5jRk09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K server: https://k8s.qiminfo-lab.ch:6443 name: kube-labcontexts: - context: cluster: kube-lab namespace: default user: kube-lab name: kube-labcurrent-context: kube-labkind: Configpreferences: {}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/kubeloginVous 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.
Ce qui coince à la première connexion
Section intitulée « Ce qui coince à la première connexion »| 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. |