Tengo Kubernetes funcionando bien en dos entornos diferentes, a saber, en mi entorno local (MacBook con minikube) y también en Container Engine de Google (GCE, Kubernetes en Google Cloud). Utilizo el entorno MacBook / local para desarrollar y probar mis archivos YAML y luego, al finalizar, los pruebo en GCE.
Actualmente necesito trabajar con cada entorno individualmente: necesito editar los archivos YAML en mi entorno local y, cuando esté listo, (git) clonarlos en un entorno GCE y luego usarlos / implementarlos. Este es un proceso algo engorroso.
Idealmente, me gustaría usar kubectl desde mi Macbook para cambiar fácilmente entre los entornos locales de minikube o GCE Kubernetes y determinar fácilmente dónde se usan los archivos YAML. ¿Existe una forma sencilla de cambiar de contexto para hacer esto?
fuente
grep 'name:' ~/.kube/config
hizo. Eraminikube
, por lo que podría volver a él conkubectl config use-context minikube
Un atajo más rápido a los comandos estándar de kubectl es usar kubectx :
kubectx
kubectl config get-contexts
kubectx foo
kubectl config use-context foo
Para instalar en macOS:
brew install kubectx
El paquete kubectx también incluye una herramienta similar para cambiar los espacios de nombres llamada
kubens
.Estos dos son muy convenientes si trabaja en múltiples contextos y espacios de nombres con regularidad.
Más información: https://ahmet.im/blog/kubectx/
fuente
Si está buscando una solución basada en GUI para Mac y tiene instalado Docker Desktop, puede usar el icono de la barra de menú de Docker. Aquí puede encontrar el menú "Kubernetes" con todos los contextos que tiene en su kubeconfig y cambiar fácilmente entre ellos.
fuente
gcloud container clusters get-credentials $CLUSTER_NAME
el comentario de Justin Thomas a la respuesta aceptada).La última respuesta de 2020 está aquí,
Una forma sencilla de cambiar entre el contexto de kubectl,
También puede almacenar el nombre del contexto como env como context01name = gke _ $ {GOOGLE_CLOUD_PROJECT} _us-central1-a_standard-cluster-1
fuente
TL; DR: Creé una GUI para cambiar los contextos de Kubernetes a través de AppleScript. Lo activo a través de shift-cmd-x.
Yo también tuve el mismo problema. Fue un dolor cambiar contextos por la línea de comando. Usé FastScripts para configurar una combinación de teclas (shift-cmd-x) para ejecutar el siguiente AppleScript (ubicado en este directorio: $ (HOME) / Library / Scripts / Applications / Terminal).
fuente
Me aburrí de escribir esto una y otra vez, así que escribí una utilidad bash simple para cambiar de contexto
Puedes encontrarlo aquí https://github.com/josefkorbel/kube-switch
fuente
La clonación de archivos YAML en repositorios para diferentes entornos es definitivamente ideal. Lo que debe hacer es crear plantillas para sus archivos YAML, extrayendo los parámetros que difieren de un entorno a otro.
Por supuesto, puede usar algún motor de plantillas y separar los valores en un YAML y producir el YAML para un entorno específico. Pero esto es fácil de hacer si adoptas los Helm Charts . Para echar un vistazo a algunos gráficos de muestra, vaya al directorio estable en este repositorio de Github
Para tomar un ejemplo del gráfico de Wordpress , podría tener dos comandos diferentes para dos entornos:
Para Dev:
helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress
Sin embargo, no es necesario pasar estos valores en la CLI, puede almacenar los valores en un archivo llamado adecuadamente
values.yml
y podría tener diferentes archivos para diferentes entornosNecesitará algo de trabajo para realizar la conversión a los estándares de gráficos de Helm, pero el esfuerzo valdrá la pena.
fuente
La respuesta canónica de cambiar / leer / manipular diferentes entornos de kubernetes (también conocidos como contextos de kubernetes) es, como mencionó Mark, usar
kubectl config
, vea a continuación:Detrás de la escena, hay un
~/.kube/config
archivo YAML que almacena todos los contextos disponibles con sus correspondientes credenciales y puntos finales para cada contexto.Kubectl listo para usar no facilita la administración de diferentes contextos de kubernetes como probablemente ya sepa. En lugar de ejecutar su propio script para gestionar todo eso, un mejor enfoque es utilizar una herramienta madura llamada
kubectx
, creada por un empleado de Google llamado "Ahmet Alp Balkan", que está en el equipo de experiencias de desarrollador de Kubernetes / Google Cloud Platform que crea herramientas como esta. Lo recomiendo altamente.https://github.com/ahmetb/kubectx
fuente
Compruebe también el último comando (docker 19.03)
docker context
.Ajeet Singh Raina ) lo ilustra en " Pre-lanzamiento de Docker 19.03.0: Cambio de contexto rápido, Docker sin raíz, soporte Sysctl para Swarm Services "
Por ejemplo:
fuente
En caso de que esté buscando una forma sencilla de cambiar entre diferentes contextos, tal vez esto sea de ayuda.
Me inspiré
kubectx
ykswitch
guiones ya se ha mencionado, que puedo recomendar para la mayoría de los casos de uso. Están ayudando a resolver la tarea de conmutación, pero me están rompiendo en algunas configuraciones más grandes o menos estándar de~/.kube/config
. Así que creé un contenedor de invocación sys-exec y un resumenkubectl
.Si llama a k sin parámetros, verá un mensaje interceptado para cambiar de contexto.
Además,
k
sigue actuando como un atajo. Lo siguiente es equivalente:fuente
Lista de contextos
Cambiar contextos
fuente
Para obtener todo el contexto
Para obtener el contexto actual
Para cambiar de contexto
fuente
sí, creo que esto es sobre lo que preguntas. Para ver su configuración actual, use la vista de configuración de kubectl. kubectl carga y fusiona la configuración de las siguientes ubicaciones (en orden)
Yo uso --kubeconfig ya que cambio mucho entre múltiples clústeres. es un poco engorroso pero funciona bien.
consulte estos para obtener más información. https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/ y https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/
fuente