Kubernetes fonctionne bien dans deux environnements différents, à savoir dans mon environnement local (MacBook exécutant minikube) et ainsi que sur Container Engine de Google (GCE, Kubernetes sur Google Cloud). J'utilise l'environnement MacBook / local pour développer et tester mes fichiers YAML, puis, une fois terminé, les essayer sur GCE.
Actuellement, je dois travailler avec chaque environnement individuellement: je dois modifier les fichiers YAML dans mon environnement local et, lorsque vous êtes prêt, (git) les cloner dans un environnement GCE, puis les utiliser / les déployer. C'est un processus un peu lourd.
Idéalement, j'aimerais utiliser kubectl de mon Macbook pour basculer facilement entre les environnements minikube locaux ou GCE Kubernetes et pour déterminer facilement où les fichiers YAML sont utilisés. Existe-t-il un moyen simple de changer de contexte pour ce faire?
la source
grep 'name:' ~/.kube/config
fait. C'étaitminikube
, pour que je puisse y revenir aveckubectl config use-context minikube
Un raccourci plus rapide vers les commandes kubectl standard consiste à utiliser kubectx :
kubectx
kubectl config get-contexts
kubectx foo
kubectl config use-context foo
Pour installer sur macOS:
brew install kubectx
Le package kubectx comprend également un outil similaire pour changer les espaces de noms appelé
kubens
.Ces deux éléments sont très pratiques si vous travaillez régulièrement dans plusieurs contextes et espaces de noms.
Plus d'infos: https://ahmet.im/blog/kubectx/
la source
Si vous recherchez une solution basée sur l'interface graphique pour Mac et que Docker Desktop est installé, vous pouvez utiliser l'icône de la barre de menus Docker. Ici vous pouvez trouver le menu "Kubernetes" avec tous les contextes que vous avez dans votre kubeconfig et basculer facilement entre eux.
la source
gcloud container clusters get-credentials $CLUSTER_NAME
le commentaire de Justin Thomas à la réponse acceptée).La dernière réponse 2020 est ici,
Un moyen simple de basculer entre le contexte kubectl,
Vous pouvez également stocker le nom du contexte sous la forme env comme context01name = gke _ $ {GOOGLE_CLOUD_PROJECT} _us-central1-a_standard-cluster-1
la source
TL; DR: J'ai créé une interface graphique pour changer les contextes Kubernetes via AppleScript. Je l'active via shift-cmd-x.
J'ai aussi eu le même problème. C'était une douleur de changement de contexte par la ligne de commande. J'ai utilisé FastScripts pour définir une combinaison de touches (shift-cmd-x) pour exécuter l'AppleScript suivant (placé dans ce répertoire: $ (HOME) / Library / Scripts / Applications / Terminal).
la source
Je me suis ennuyé de taper ceci encore et encore, alors j'ai écrit un simple utilitaire bash pour changer de contexte
Vous pouvez le trouver ici https://github.com/josefkorbel/kube-switch
la source
Le clonage des fichiers YAML sur des dépôts pour différents environnements est définitivement idéal. Ce que vous devez faire est de modéliser vos fichiers YAML - en extrayant les paramètres qui diffèrent d'un environnement à l'autre.
Vous pouvez, bien sûr, utiliser un moteur de création de modèles et séparer les valeurs dans un YAML et produire le YAML pour un environnement spécifique. Mais c'est facilement faisable si vous adoptez les graphiques de barre . Pour jeter un œil à quelques exemples de graphiques, accédez au répertoire stable de ce dépôt Github
Pour prendre un exemple du graphique Wordpress , vous pouvez avoir deux commandes différentes pour deux environnements:
Pour Dev:
helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress
Cependant, il n'est pas nécessaire de transmettre ces valeurs à la CLI, vous pouvez stocker les valeurs dans un fichier appelé correctement
values.yml
et vous pouvez avoir différents fichiers pour différents environnementsVous aurez besoin d'un peu de travail pour vous convertir aux standards des graphiques Helm, mais l'effort en vaudra la peine.
la source
La réponse canonique de la commutation / lecture / manipulation de différents environnements kubernetes (aka contextes kubernetes) est, comme Mark l'a mentionné, à utiliser
kubectl config
, voir ci-dessous:Derrière la scène, il y a un
~/.kube/config
fichier YAML qui stocke tous les contextes disponibles avec leurs informations d'identification et points de terminaison correspondants pour chaque contexte.Kubectl prêt à l'emploi ne facilite pas la gestion de différents contextes Kubernetes comme vous le savez probablement déjà. Plutôt que de lancer votre propre script pour gérer tout cela, une meilleure approche consiste à utiliser un outil mature appelé
kubectx
, créé par un Googler nommé "Ahmet Alp Balkan" qui utilise des expériences de développement Kubernetes / Google Cloud Platform. Équipe qui construit des outils comme celui-ci. Je le recommande fortement.https://github.com/ahmetb/kubectx
la source
Vérifiez aussi la dernière (docker 19,03)
docker context
commande .Ajeet Singh Raina ) l'illustre dans " Docker 19.03.0 Pre-Release: Fast Context Switching, Rootless Docker, Sysctl support for Swarm Services "
Par exemple:
la source
Si vous cherchez un moyen simple de basculer entre différents contextes, cela vous sera peut-être utile.
Je me suis inspiré par
kubectx
etkswitch
scripts déjà mentionné, que je recommande pour la plupart des cas d' utilisation. Ils aident à résoudre la tâche de commutation, mais se cassent pour moi sur certaines configurations plus grandes ou moins standard de~/.kube/config
. J'ai donc créé un wrapper d'invocation sys-exec et un raccourcikubectl
.Si vous appelez k sans paramètres, vous verrez une invite interceptée pour changer de contexte.
En outre,
k
continue d'agir comme un raccourci. Ce qui suit est équivalent:la source
Répertorier les contextes
Changer de contexte
la source
Pour obtenir tout le contexte
Pour obtenir le contexte actuel
Pour changer de contexte
la source
oui, je pense que c'est ce que vous demandez. Pour afficher votre configuration actuelle, utilisez la vue de configuration kubectl. kubectl charge et fusionne la configuration à partir des emplacements suivants (dans l'ordre)
J'utilise --kubeconfig depuis que je change beaucoup entre plusieurs clusters. c'est un peu encombrant mais ça marche bien.
consultez-les pour plus d'informations. https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/ et https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/
la source