Formation-K8S

Formation K8S avec exercices et labs

View project on GitHub

KubeConfig

Role

Le role d’un fichier .kube/config est de définir les crédentials pour se connecter à un cluster K8S. Beaucoup d’autres outils vont s’appuyer sur lui pour dialoguer avec vos clusters (Kubectl, Lens, Helm, les CLI Velero,… ) Il va définir :

  • un ensemble de cluster (url/data),
  • un ensemble d’utilisateur avec leur crédentials
  • un ensemble de contexts. Un context représente couple composé d’un cluster et d’un utilisateur.
apiVersion: v1
kind: Config
preferences: {}

clusters:
- cluster:
  name: development
- cluster:
  name: scratch

users:
- name: developer
- name: experimenter

contexts:
- context:
  name: dev-frontend
- context:
  name: dev-storage
- context:
  name: exp-scratch

Ce qu’il faut retenir c’est que ce fichier:

  • Peut vous permettre de référencer plusieurs clusters.
  • Peut vous permettre de référencer plusieurs utilisateurs qui auront chacun des droits différents
  • Est utilisé par de nombreux autres outils pour accéder à votre cluster (Helm, ArgoCd, …)
  • Peut être décomposé n fichiers
  • Peut vous permettre de changer le nom du namespace par défaut

Comment définir des users

Comme on peut s’identifier de différentes manières sur un cluster Kubernetes (par Token, par Certificat, par basicauth), il existera différent moyen de renseigner les crédentials d’un utilisateur.

C’est l’administrateur par un paramétrage du cluster qui détermine les moyens d’identifications autorisés ou pas sur le cluster. En production, il est recommandé d’utiliser seulement ‘Token’ ou ‘Certificat’.

kubectl config set-credentials <USER> --client-key=~/.kube/user.key

kubectl config set-credentials <USER> --token=weU9l35qcif

kubectl config set-credentials <USER> --username=admin --password=uXFGweU9l35qcif

kubectl config set-credentials <USER> --client-certificate=~/.kube/admin.crt --embed-certs=true

Comment définir des clusters

Pour rajouter un cluster supplémentaire à votre .kube/config :

kubectl config  set-cluster <NOM-DU-CLUSTER> --server=https://1.2.3.4 --certificate-authority=fake-ca-file

Commandes utiles pour jouer avec un .kube/config

Pour lister les utilisateurs ou les clusters :

kubectl config get-users
kubectl config get-clusters

Pour lister les contexts présents :

kubectl config get-contexts

CURRENT   NAME       CLUSTER    AUTHINFO   NAMESPACE
          default    default    default    
*         minikube   minikube   minikube   default

(une ‘*’ vous pointera le context actuellement utilisé)

Pour créer/modifier un context :

kubectl config set-context NOM_DU_CONTEXT --cluster CLUSTER_NAME --user USER_NAME (--namespace=MON_NAMESPACE)

Pour passer sur un context NOM_DU_CONTEXT:

kubectl config use-context NOM_DU_CONTEXT

Pour utiliser un context NOM_DU_CONTEXT seulement pour une commande Kubectl sans changer le context courant :

kubectl VOTRE_COMMANDE --context NOM_DU_CONTEXT

Pour utiliser un fichier kubeconfig différent de ‘.kube/config` seulement pour une commande Kubectl sans changer le context courant :

kubectl VOTRE_COMMANDE  --kubeconfig .kube/config-server-1

Pour changer sur le context courant le nom du namespace par défaut pour MYNAMESPACE :

kubectl config set-context --current --namespace=MYNAMESPACE

Exercice :

  • Afficher les noms des utilisateurs
  • Afficher les noms des clusters
  • Créer un nouveau contexte qui prendrait un namespace par défaut le namespace “TOTO”
  • Afficher les contextes
  • Sélectionner ce contexte pour qu’il devienne votre contexte par defaut

Retour, Menu, Suite