Produtividade com múltiplos clusters e namespaces no Kubernetes

bernardolankheet
2 min readOct 4, 2022

Realizando merge de diferentes kube config em um único arquivo.

Quando administramos diversos clusters kubernetes, ou quando iremos trabalhar em um novo cluster, normalmente temos um arquivo config com as informações de acesso ao cluster (por default o localizado em ~/.kube/config), neste arquivo temos tokens de acessos, usuários, endereço do cluster e outras informações. Com muitos arquivos de config, sempre que precisamos alternar entre contexts é necessário informar qual o config estará utilizando.

Normalmente utilizamos o export com a variável KUBECONFIG para isso.

export KUBECONFIG=/home/bernardo/k8s/kubeconfigs/kubeconfig-prod.yml export KUBECONFIG=/home/bernardo/k8s/kubeconfigs/kubeconfig-dev.yml

Para facilitar podemos mesclar todos os arquivos em um único arquivo config. O que facilita navegar entre os clusters.

Primeiro realize uma copia do arquivo config atual.

cp ~/.kube/config ~/.kube/config.bak

Neste momento, iremos salvar o conteúdo do arquivo config atual e do arquivo do novo cluster que precisa realizar a mesclagem na variável KUBECONFIG. Após isso iremos utilizar o kubectl config view junto com a opção flatten para salvar a saída do novo arquivo completo em /tmp/novoconfig.

# --flatten[=false]: flatten the resulting kubeconfig file into self contained output (useful for creating portable kubeconfig files)KUBECONFIG=~/.kube/config:/caminho_do_novo/config kubectl config view --flatten > /tmp/novo_config

Agora basta substituir o arquivo config pelo novo.

mv /tmp/novo_config ~/.kube/config

Agora para verificar todos os contexts que estão no novo arquivo config:

$ kubectl config get-contexts 
aks-cluster
docker-desktop

kubectx + kubens: kubectl

Facilite a administração de múltiplos contexts e Namespace com este excelente plugin escrito em Go. (Link do Github)

Com instalação fácil e usabilidade simples, ajuda o administrador de clusters Kubernetes a ganhar muito tempo na hora de navegar entre clusters e namespaces. Instalação pode ser realizada conforme descrito no Readme do projeto (ahmetb/kubectx: Faster way to switch between clusters and namespaces in kubectl (github.com).

kubectx utilitário para alternar entre contexts (clusters) no kubectl de forma rapida.

Por exemplo, com a ferramenta instalada, se quiser listar os contexts instalados digite kubectx:

$ kubectx 
aks-cluster
docker-desktop

Caso queira ir para um context especifico, basta informar o nome.

$ kubectx aks-cluster 
✔ Switched to context "aks-cluster".

kubens utilitário para alternar entre namespaces do Kubernetes e configura-los com kubectl.

Para listar os namespaces deste context selecionado, podemos utilizar o comando kubens:

$ kubens 
app-1
app-2
bernardo-argocd
grafana
helm-app
k8spacket

Para definir um namespace como padrão, basta informar o nome na frente do kubens, por exemplo, se estou trabalhando no namespace app-1 no momento, basta utilizar:

$ kubens app-1 
✔ Active namespace is "app-1"

Desta todos os comandos agora utilizando o kubectl serão executados neste namespace.

$ kubectl get pods NAME                                   READY   STATUS    RESTARTS       AGE app-1-helm-guestbook-d655858cd-wcx97   1/1     Running   3 (7d4h ago)   17d

Essas são duas dicas que podem te ajudar bastante no dia a dia na hora de administrar múltiplos clusters e namespaces.

Ate a próxima!!!

--

--