166 votes

Comment permuter les grappes kubectl entre gcloud et minikube

J'ai Kubernetes de travail dans deux environnements différents, à savoir dans mon environnement local (MacBook course minikube) et ainsi que sur Google Container Engine (GCE, Kubernetes sur Google Cloud). J'utilise le MacBook/environnement local afin de développer et de tester mes fichiers YAML et puis, à la fin, essayez sur GCE.

Actuellement j'ai besoin de travailler avec chaque environnement individuellement: j'ai besoin de modifier les fichiers YAML dans mon environnement local et, lorsque vous êtes prêt, (git) clone à un GCE environnement, puis de les utiliser/les déployer. C'est un peu lourd.

Idéalement, je voudrais utiliser kubectl de mon Macbook pour basculer facilement entre le local minikube ou GCE Kubernetes environnements et facilement déterminer l'endroit où les fichiers YAML sont utilisés. Est-il un moyen simple de changer de contexte pour ce faire?

342voto

Mark Points 4972

Vous pouvez passer de local (minikube) à gcloud et revenir avec:

kubectl config use-context CONTEXT_NAME

pour lister tous les contextes:

kubectl config get-contexts

Vous pouvez créer différents environnements pour local et gcloud et les placer dans des fichiers yaml distincts.

17voto

tedmiston Points 465

Un rapide raccourci à la norme kubectl commandes est d'utiliser kubectx:

  • Liste de contextes: kubectx
    • Équivalent à kubectl config get-contexts
  • Changer de contexte (toto): kubectx foo
    • Équivalent à kubectl config use-context foo

Pour l'installer sur macOS: brew install kubectx

Le kubectx paquet inclut également un outil similaire pour la commutation des espaces de noms appelés kubens.

Ces deux sont super pratique si vous travaillez dans de multiples contextes et espaces de noms régulièrement.

Plus d'infos: https://ahmet.im/blog/kubectx/

9voto

zCHIP Points 31

Si vous recherchez une solution 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.

2voto

cwingrav Points 79

TL; DR: J'ai créé une interface graphique pour changer de contexte Kubernetes via AppleScript. Je l'activer via shift-cmd-x.

Moi aussi j'ai eu le même problème. C'était une douleur de changer de contexte par la ligne de commande. J'ai utilisé FastScripts pour définir une combinaison de touches (shift-cmd-x) afin d'exécuter le code AppleScript suivant (placé dans ce répertoire: $ (HOME) / Bibliothèque / Scripts / Applications / Terminal).

 use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

do shell script "/usr/local/bin/kubectl config current-context"
set curcontext to result

do shell script "/usr/local/bin/kubectl config get-contexts -o name"
set contexts to paragraphs of result

choose from list contexts with prompt "Select Context:" with title "K8s Context Selector" default items {curcontext}
set scriptArguments to item 1 of result

do shell script "/usr/local/bin/kubectl config use-context " & scriptArguments

display dialog "Switched to " & scriptArguments buttons {"ok"} default button 1
 

1voto

vishal.biyani Points 1550

Cloner les fichiers YAML à travers repos pour les différents environnements est certainement idéal. Ce que vous avez à faire est de templatize vos fichiers YAML - par extraction de paramètres qui varient d'un environnement à l'autre.

Vous pouvez, bien sûr, utiliser certaines moteur de template et de séparer les valeurs dans un fichier YAML et de produire le YAML pour un environnement spécifique. Mais c'est facilement faisable si vous adoptez la Barre des Graphiques. Pour prendre un coup d'oeil à quelques exemples de diagrammes d'aller à l'stable répertoire à ce dépôt Github

Pour prendre un exemple de l' Wordpress graphique, vous pourriez avoir deux commandes différentes pour les deux environnements:

Pour Les Dev:

helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress

Il n'est pas nécessaire de transmettre ces valeurs à la CLI, vous pouvez stocker les valeurs dans un fichier appelé justement values.yml et vous pourriez avoir des fichiers différents pour les différents environnements

Vous aurez besoin de quelques travaux dans la conversion à la Barre graphique normes, mais l'effort en vaut la peine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X