Tenho o Kubernetes funcionando bem em dois ambientes diferentes, a saber, no meu ambiente local (MacBook executando minikube) e também no Container Engine do Google (GCE, Kubernetes no Google Cloud). Eu uso o MacBook / ambiente local para desenvolver e testar meus arquivos YAML e, após a conclusão, testá-los no GCE.
Atualmente, preciso trabalhar com cada ambiente individualmente: preciso editar os arquivos YAML em meu ambiente local e, quando estiver pronto, (git) cloná-los em um ambiente GCE e depois usá-los / implantá-los. Este é um processo um tanto complicado.
Idealmente, gostaria de usar kubectl do meu Macbook para alternar facilmente entre os ambientes minikube local ou GCE Kubernetes e determinar facilmente onde os arquivos YAML são usados. Existe uma maneira simples de alternar contextos para fazer isso?
fonte
grep 'name:' ~/.kube/config
sim. Eraminikube
, então eu poderia voltar a ele comkubectl config use-context minikube
Um atalho mais rápido para os comandos kubectl padrão é usar kubectx :
kubectx
kubectl config get-contexts
kubectx foo
kubectl config use-context foo
Para instalar no macOS:
brew install kubectx
O pacote kubectx também inclui uma ferramenta semelhante para alternar namespaces, chamada
kubens
.Esses dois são muito convenientes se você trabalha em vários contextos e namespaces regularmente.
Mais informações: https://ahmet.im/blog/kubectx/
fonte
Se você está procurando uma solução baseada em GUI para Mac e tem o Docker Desktop instalado, pode usar o ícone Docker Menu Bar. Aqui você pode encontrar o menu "Kubernetes" com todos os contextos que possui em seu kubeconfig e alternar facilmente entre eles.
fonte
gcloud container clusters get-credentials $CLUSTER_NAME
de Justin Thomas para a resposta aceita).A última resposta de 2020 está aqui,
Uma maneira simples de alternar entre o contexto kubectl,
Você também pode armazenar o nome do contexto como env, como context01name = gke _ $ {GOOGLE_CLOUD_PROJECT} _us-central1-a_standard-cluster-1
fonte
TL; DR: criei uma GUI para alternar os contextos do Kubernetes via AppleScript. Eu o ativo via shift-cmd-x.
Eu também tive o mesmo problema. Foi uma dor mudar de contexto pela linha de comando. Usei FastScripts para definir uma combinação de teclas (shift-cmd-x) para executar o seguinte AppleScript (localizado neste diretório: $ (HOME) / Library / Scripts / Applications / Terminal).
fonte
Fiquei entediado de digitar isso sem parar, então escrevi um utilitário bash simples para alternar contextos
Você pode encontrá-lo aqui https://github.com/josefkorbel/kube-switch
fonte
A clonagem de arquivos YAML em repos para ambientes diferentes é definitivamente ideal. O que você deve fazer é modelar seus arquivos YAML - extraindo os parâmetros que diferem de ambiente para ambiente.
Você pode, é claro, usar algum mecanismo de modelagem e separar os valores em um YAML e produzir o YAML para um ambiente específico. Mas isso é facilmente viável se você adotar os gráficos do Helm . Para dar uma olhada em alguns gráficos de amostra, vá para o diretório estável neste repositório Github
Para dar um exemplo do gráfico Wordpress , você poderia ter dois comandos diferentes para dois ambientes:
Para Dev:
helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress
Não é necessário passar esses valores na CLI, você pode armazenar os valores em um arquivo chamado apropriadamente
values.yml
e você pode ter arquivos diferentes para ambientes diferentesVocê precisará trabalhar um pouco para se converter aos padrões da carta Helm, mas o esforço valerá a pena.
fonte
A resposta canônica de alternar / ler / manipular diferentes ambientes de kubernetes (também conhecidos como contextos de kubernetes) deve ser usada, como Mark mencionou
kubectl config
, veja abaixo:Nos bastidores, há um
~/.kube/config
arquivo YAML que armazena todos os contextos disponíveis com suas credenciais e endpoints correspondentes para cada contexto.O Kubectl pronto para uso não facilita o gerenciamento de diferentes contextos de kubernetes, como você provavelmente já sabe. Em vez de lançar seu próprio script para gerenciar tudo isso, uma abordagem melhor é usar uma ferramenta madura chamada
kubectx
, criada por um Googler chamado "Ahmet Alp Balkan", que está na equipe de experiências de desenvolvedor do Kubernetes / Google Cloud Platform que cria ferramentas como esta. Eu recomendo.https://github.com/ahmetb/kubectx
fonte
Verifique também o
docker context
comando mais recente (docker 19.03) .Ajeet Singh Raina ) ilustra isso em " Docker 19.03.0 Pre-Release: Fast Context Switching, Rootless Docker, Sysctl support for Swarm Services "
Por exemplo:
fonte
Caso você esteja procurando uma maneira simples de alternar entre diferentes contextos, talvez isso seja útil.
Eu fui inspirado por
kubectx
ekswitch
roteiros já mencionado, o que eu posso recomendar para a maioria dos casos de uso. Eles estão ajudando a resolver a tarefa de comutação, mas estão quebrando para mim em algumas configurações maiores ou menos padrão de~/.kube/config
. Portanto, criei um wrapper de invocação sys-exec e um atalhokubectl
.Se você chamar k sem parâmetros, verá um prompt interceptado para alternar o contexto.
Além disso,
k
continua atuando como um atalho. O seguinte é equivalente:fonte
Contextos de lista
Mudar de contexto
fonte
Para obter todo o contexto
Para obter o contexto atual
Para mudar de contexto
fonte
sim, acho que é sobre isso que você está perguntando. Para visualizar sua configuração atual, use a visualização de configuração kubectl. O kubectl carrega e mescla a configuração dos seguintes locais (em ordem)
Eu uso --kubeconfig, pois alterno muito entre vários clusters. é um pouco complicado, mas funciona bem.
veja estes para mais informações. https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/ e https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/
fonte