Configurer l'accès à plusieurs clusters
Cette page montre comment configurer l'accès à plusieurs clusters à l'aide de fichiers de configuration.
Une fois vos clusters, utilisateurs et contextes définis dans un ou plusieurs fichiers de configuration, vous pouvez basculer rapidement entre les clusters en utilisant la commande kubectl config use-context
.
Note: Un fichier utilisé pour configurer l'accès à un cluster est parfois appelé fichier kubeconfig. C'est une manière générique de se référer aux fichiers de configuration. Cela ne signifie pas qu'il existe un fichier nommékubeconfig
.
Pré-requis
Vous devez disposer d'un cluster Kubernetes et l'outil de ligne de commande kubectl doit être configuré pour communiquer avec votre cluster. Si vous ne possédez pas déjà de cluster, vous pouvez en créer un en utilisant Minikube, ou vous pouvez utiliser l'un de ces environnements Kubernetes:
Pour vérifier que kubectl est installé, executez kubectl version --client
.
La version kubectl doit être dans une version mineure de votre
serveur API du cluster.
Définir des clusters, des utilisateurs et des contextes
Supposons que vous ayez deux clusters, un pour le développement et un pour le travail scratch
.
Dans le cluster development
, vos développeurs frontend travaillent dans un espace de noms appelé frontend
, et vos développeurs de stockage travaillent dans un espace de noms appelé storage
.
Dans votre cluster scratch
, les développeurs travaillent dans le namespace par défaut ou créent des namespaces auxiliaires comme bon leur semble.
L'accès au cluster development
nécessite une authentification par certificat.
L'accès au cluster scratch
nécessite une authentification par nom d'utilisateur et mot de passe.
Créez un répertoire nommé config-exercice
.
Dans votre répertoire config-exercice
, créez un fichier nommé config-demo
avec ce contenu:
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
Un fichier de configuration décrit les clusters, les utilisateurs et les contextes.
Votre fichier config-demo
a le cadre pour décrire deux clusters, deux utilisateurs et trois contextes.
Allez dans votre répertoire config-exercice
.
Entrez ces commandes pour ajouter les détails du cluster à votre fichier de configuration:
kubectl config --kubeconfig=config-demo set-cluster development --server=https://1.2.3.4 --certificate-authority=fake-ca-file
kubectl config --kubeconfig=config-demo set-cluster scratch --server=https://5.6.7.8 --insecure-skip-tls-verify
Ajoutez les détails de l'utilisateur à votre fichier de configuration:
kubectl config --kubeconfig=config-demo set-credentials developer --client-certificate=fake-cert-file --client-key=fake-key-seefile
kubectl config --kubeconfig=config-demo set-credentials experimenter --username=exp --password=some-password
Note:
- Pour supprimer un utilisateur, vous pouvez exécuter
kubectl --kubeconfig=config-demo config unset users.<name>
- Pour supprimer un cluster, vous pouvez exécuter
kubectl --kubeconfig=config-demo config unset clusters.<name>
- Pour supprimer un contexte, vous pouvez exécuter
kubectl --kubeconfig=config-demo config unset contexts.<name>
Ajoutez des détails de contexte à votre fichier de configuration:
kubectl config --kubeconfig=config-demo set-context dev-frontend --cluster=development --namespace=frontend --user=developer
kubectl config --kubeconfig=config-demo set-context dev-storage --cluster=development --namespace=storage --user=developer
kubectl config --kubeconfig=config-demo set-context exp-scratch --cluster=scratch --namespace=default --user=experimenter
Ouvrez votre fichier config-demo
pour voir les détails ajoutés.
Au lieu d'ouvrir le fichier config-demo
, vous pouvez utiliser la commande kubectl config view
.
kubectl config --kubeconfig=config-demo view
La sortie montre les deux clusters, deux utilisateurs et trois contextes:
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
- cluster:
insecure-skip-tls-verify: true
server: https://5.6.7.8
name: scratch
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
current-context: ""
kind: Config
preferences: {}
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
- name: experimenter
user:
password: some-password
username: exp
Le fake-ca-file
, fake-cert-file
et fake-key-file
ci-dessus sont les espaces réservés pour les noms de chemin des fichiers de certificat.
Vous devez les remplacer par les noms de chemin réels des fichiers de certificat dans votre environnement.
Parfois, vous souhaiterez peut-être utiliser des données encodées en Base64 incorporées ici au lieu de fichiers de certificat séparés; dans ce cas, vous devez ajouter le suffixe -data
aux clés, par exemple, certificate-Authority-data
, client-certificate-data
, client-key-data
.
Chaque contexte est un triplet (cluster, utilisateur, namespace).
Par exemple, le contexte dev-frontend
dit, "Utilisez les informations d'identification de l'utilisateur developer
pour accéder au namespace frontend
du cluster development
".
Définissez le contexte actuel:
kubectl config --kubeconfig=config-demo use-context dev-frontend
Maintenant, chaque fois que vous entrez une commande kubectl
, l'action s'appliquera au cluster et au namespace répertorié dans le contexte dev-frontend
.
Et la commande utilisera les informations d'identification de l'utilisateur répertoriées dans le contexte dev-frontend
.
Pour voir uniquement les informations de configuration associées au contexte actuel, utilisez l'indicateur --minify
.
kubectl config --kubeconfig=config-demo view --minify
La sortie affiche les informations de configuration associées au contexte dev-frontend
:
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
current-context: dev-frontend
kind: Config
preferences: {}
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
Supposons maintenant que vous souhaitiez travailler pendant un certain temps dans le cluster scratch.
Changez le contexte actuel en exp-scratch
:
kubectl config --kubeconfig=config-demo use-context exp-scratch
Maintenant, toute commande kubectl
que vous donnez s'appliquera au namespace par défaut du cluster scratch
.
Et la commande utilisera les informations d'identification de l'utilisateur répertoriées dans le contexte exp-scratch
.
Afficher la configuration associée au nouveau contexte actuel, exp-scratch
.
kubectl config --kubeconfig=config-demo view --minify
Enfin, supposons que vous vouliez travailler pendant un certain temps dans le namespace storage
du cluster development
.
Changez le contexte actuel en dev-storage
:
kubectl config --kubeconfig=config-demo use-context dev-storage
Afficher la configuration associée au nouveau contexte actuel, dev-storage
.
kubectl config --kubeconfig=config-demo view --minify
Créer un deuxième fichier de configuration
Dans votre répertoire config-exercice
, créez un fichier nommé config-demo-2
avec ce contenu:
apiVersion: v1
kind: Config
preferences: {}
contexts:
- context:
cluster: development
namespace: ramp
user: developer
name: dev-ramp-up
Le fichier de configuration précédent définit un nouveau contexte nommé dev-ramp-up
.
Définissez la variable d'environnement KUBECONFIG
Vérifiez si vous avez une variable d'environnement nommée KUBECONFIG
.
Si tel est le cas, enregistrez la valeur actuelle de votre variable d'environnement KUBECONFIG
, afin de pouvoir la restaurer ultérieurement.
Par exemple:
Linux
export KUBECONFIG_SAVED=$KUBECONFIG
Windows PowerShell
$Env:KUBECONFIG_SAVED=$ENV:KUBECONFIG
La variable d'environnement KUBECONFIG
est une liste de chemins vers les fichiers de configuration.
La liste est délimitée par deux-points pour Linux et Mac et par des points-virgules pour Windows.
Si vous avez une variable d'environnement KUBECONFIG
, familiarisez-vous avec les fichiers de configuration de la liste.
Ajoutez temporairement deux chemins à votre variable d'environnement KUBECONFIG
.
Par exemple:
Linux
export KUBECONFIG=$KUBECONFIG:config-demo:config-demo-2
Windows PowerShell
$Env:KUBECONFIG=("config-demo;config-demo-2")
Dans votre répertoire config-exercice
, entrez cette commande:
kubectl config view
La sortie affiche les informations fusionnées de tous les fichiers répertoriés dans votre variable d'environnement KUBECONFIG
.
En particulier, notez que les informations fusionnées ont le contexte dev-ramp-up
du fichier config-demo-2
et les trois contextes du fichier config-demo
:
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: ramp
user: developer
name: dev-ramp-up
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
Pour plus d'informations sur la manière dont les fichiers kubeconfig sont fusionnés, consultez Organisation de l'accès au cluster à l'aide des fichiers kubeconfig
Explorez le répertoire $HOME/.kube
Si vous avez déjà un cluster, et vous pouvez utiliser kubectl
pour interagir avec le cluster, alors vous avez probablement un fichier nommé config
dans le repertoire $HOME/.kube
.
Allez dans $ HOME/.kube
, et voyez quels fichiers sont là.
En règle générale, il existe un fichier nommé config
.
Il peut également y avoir d'autres fichiers de configuration dans ce répertoire.
Familiarisez-vous brièvement avec le contenu de ces fichiers.
Ajoutez $HOME/.kube/config à votre variable d'environnement KUBECONFIG
Si vous avez un fichier $ HOME/.kube/config
, et qu'il n'est pas déjà répertorié dans votre variable d'environnement KUBECONFIG
, ajoutez-le maintenant à votre variable d'environnement KUBECONFIG
.
Par exemple:
Linux
export KUBECONFIG=$KUBECONFIG:$HOME/.kube/config
Windows Powershell
$Env:KUBECONFIG="$Env:KUBECONFIG;$HOME\.kube\config"
Affichez les informations de configuration fusionnées à partir de tous les fichiers qui sont maintenant répertoriés dans votre variable d'environnement KUBECONFIG
.
Dans votre répertoire config-exercice, entrez:
kubectl config view
Nettoyage
Remettez votre variable d'environnement KUBECONFIG
à sa valeur d'origine.
Par exemple:
Linux
export KUBECONFIG=$KUBECONFIG_SAVED
Windows PowerShell
$Env:KUBECONFIG=$ENV:KUBECONFIG_SAVED