Como simplificar o gerenciamento de Kubernetes com contextos Kubectl

Os contextos Kubectl são um mecanismo para alternar rapidamente entre diferentes clusters, usuários e namespaces na CLI. Eles facilitam a movimentação entre vários ambientes sem alterar seu arquivo de configuração ativo do Kubectl.

Neste artigo, mostraremos como você pode usar o Kubectl para criar, gerenciar e selecionar diferentes contextos. Certifique-se de ter o Kubectl instalado antes de continuar.

índice

  1. O que é um contexto?
  2. Preparação para contextos
  3. Crie um contexto
  4. Seleção e uso de contextos
  5. Incluir informações de namespace com contextos
  6. Renomeando e excluindo contextos
  7. Torne a troca de contexto ainda mais fácil
  8. Resumo

O que é um contexto?

Os contextos encapsulam a coleção de configurações que permitem uma conexão bem-sucedida com um cluster Kubernetes. Um contexto pode incluir a URL do cluster, um conjunto de credenciais do usuário e o namespace para apontar por padrão.

Na ausência de contextos, ambientes únicos do Kubernetes geralmente são tratados criando um arquivo de configuração separado para cada um. Então você usa o sinalizador --kubeconfig ou a variável de ambiente KUBECONFIG para carregar o arquivo correto toda vez que usar o Kubectl:

 $ export KUBECONFIG=.kube/cluster-1-user-1.yaml $ kubectl obter pods

Os contextos permitem que você condense os detalhes de todos os seus ambientes em um arquivo de configuração. Você pode usar o .kube/config padrão para cada um de seus clusters, removendo sinalizadores de CLI e variáveis ​​de ambiente. Kubectl inclui comandos para alternar seu contexto ativo entre as opções que você criou.

Preparação para contextos

Os contextos são gerenciados pelo grupo de comandos kubectl config . Assim como tudo no Kubectl, sua lista de contextos disponíveis será carregada e salva em seu arquivo de configuração ativo. Isso é determinado por KUBECONFIG , --kubeconfig ou o padrão .kube/config .

Para começar com contextos, você precisa adicionar alguns clusters e credenciais ao seu arquivo de configuração. Você pode usar outros comandos de kubectl config para configurá-los:

 # Crie duas conexões de cluster, qa e prod $ kubectl set-cluster qa --server=https://192.168.0.1 --insecure-skip-tls-verify $ kubectl set-cluster prod --server=https://192.168 .0.2 --insecure-skip-tls-verify # Cria dois pares de credenciais $ kubectl set-credentials qa-user --username=demo [email protected] _qa $ kubectl set-credentials prod-user --username=demo [email protected ] _prod

Seu arquivo de configuração agora contém detalhes de conexão para dois clusters Kubernetes separados. Você também tem dois pares de credenciais. Em seguida, criaremos um contexto para vincular os clusters às suas respectivas credenciais. Você pode usar um comando Kubectl para alternar entre os ambientes de controle de qualidade e produção.

Crie um contexto

O kubectl config set-context adiciona novos contextos ao seu arquivo de configuração. Você deve especificar um nome para seu contexto. Use os sinalizadores de comando para fazer referência a um cluster e uma conta de usuário adicionados anteriormente.

 # Cria contextos para os clusters adicionados anteriormente $ kubectl config set-context qa-context --cluster=qa --user=qa-user $ kubectl config set-context prod-context --cluster=prod --user=prod-user

Neste ponto, você pode executar o comando kubectl config view para inspecionar todas as alterações que foram feitas em seu arquivo de configuração:

 apiVersion : v1 kind : Config current-context : "" clusters : - cluster : name : qa server : https://192.168.0.1 insecure-skip-tls-verify : true - cluster : name : prod server : https:// 192.168.0.2 insecure-skip-tls-verify : true contexts : - context : name : qa-context cluster : qa user : qa-user - context : name : prod-context cluster : prod user : prod-user users : - name : qa-user user : username : demo password : [email protected] _qa - name : prod-user user : username : demo password : [email protected] _prod

As definições de contexto apontam para outros tipos de objetos definidos em outro lugar no arquivo de configuração.

Seleção e uso de contextos

Os contextos são selecionados com o kubectl context use-context :

 $ kubectl context use-context qa-context

O nome do contexto ativo é armazenado como o valor do campo current-context em seu arquivo de configuração Kubectl. Todos os comandos do Kubectl apontarão para o cluster referenciado pelo contexto selecionado.

 # Conecta-se ao cluster https://192.168.0.1 como demo: [email protected] _qa $ kubectl get pods # Muda o contexto ativo $ kubectl config use-context prod-context # Conecta-se ao cluster https://192.168.0.2 como demo: [email protected] _prod $ kubectl get pods

A capacidade de alterar rapidamente o ambiente de destino no Kubectl ajuda você a alternar entre clusters sem ficar sobrecarregado com prompts de configuração.

Como o contexto selecionado persiste até que outro seja selecionado, você deve verificar se o Kubectl aborda o ambiente esperado antes de executar comandos destrutivos. Use o comando current-context para ver o nome do contexto selecionado:

 $ kubectl config current-context prod-context

Você pode ver todos os contextos em seu arquivo de configuração carregado atualmente com get-contexts :

 $ kubectl config get-contexts NOME ATUAL CLUSTER AUTHINFO NAMESPACE qa-context qa qa-user * prod-context prod prod-user

Incluir informações de namespace com contextos

Até agora, usamos contextos para selecionar um cluster e uma conta de usuário. Os contextos também podem incluir informações de namespace. Quando um contexto tem um namespace atribuído a ele, os comandos Kubectl incluirão automaticamente o sinalizador --namespace . Você ainda pode usar --namespace manualmente para substituir o namespace definido pelo contexto.

 $ kubectl config set-context production-api --cluster=prod --user=prod-user --namespace api $ kubectl config use-context production-api # Obtém Pods no namespace "api" dentro do cluster "prod" $ kubectl obter pods

Não há limite para o número de contextos que você pode ter. Os clusters podem aparecer em vários contextos, permitindo que você defina contextos separados para cada um de seus namespaces importantes. Isso evita repetir o --namespace ao inspecionar diferentes recursos em seu cluster.

Renomeando e excluindo contextos

Renomeie contextos usando o domínio rename-context :

 $ kubectl config rename-context qa-context testing-context

Para excluir um contexto, passe seu nome para o domínio delete-context :

 $ kubectl config delete-context testing-context

O cluster, usuário e namespace referenciados por um contexto são alterados pela repetição do comando set-context com o mesmo nome de contexto. Você também pode fazer alterações editando manualmente seu arquivo de configuração Kubectl.

Torne a troca de contexto ainda mais fácil

O gerenciamento de contexto integrado do Kubectl pode ser suficiente quando você alterna clusters com pouca frequência. No entanto, se você alternar constantemente os clusters ao longo do dia, o comando use-context relativamente detalhado pode começar a parecer repetitivo por si só.

Kubectx é um plugin Kubectl que pode tornar a troca de contexto ainda mais fácil. encurta use-context e adiciona alguns recursos de conveniência adicionais:

 # Equivalente a "kubectl config use-context prod-context" $ kubectx prod-context

Dependendo do seu fluxo de trabalho, você também pode querer continuar usando vários arquivos de configuração do Kubectl. Você pode usar aliases de shell e variáveis ​​de ambiente padrão para configurar um fluxo de trabalho personalizado que seleciona automaticamente um arquivo de configuração e contexto para cada nova janela de terminal.

Resumo

Os contextos Kubectl são uma maneira de encapsular várias conexões lógicas de cluster em um único arquivo de configuração. Cada contexto é atribuído a uma URL de cluster, conta de usuário e namespace. Os comandos do Kubectl apontarão para o cluster de contexto selecionado usando as credenciais referenciadas.

Você pode definir contextos com kubectl config set-context ou editando manualmente seu arquivo .kube/config . O Kubectl também inclui comandos para gerenciar conexões de cluster nomeadas e contas de usuário que você pode referenciar em seus contextos.

  • O que é roupa técnica?
  • 18 dos melhores jogos para celular para sua saúde mental

descubra mais conteúdo

O que é um amplificador integrado?

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão Geek

O que é Kubeconfig?

A configuração do Kube é o arquivo que o kubectl usa para obter a configuração de acesso ao seu cluster Kubernetes. A localização deste arquivo pode ser configurada ao usar o kubectl através da opção de linha de comando -kubeconfig ou com a variável de ambiente $ KUBECONFIG .

Onde a configuração do cluster do Kubernetes é salva?

Por padrão, o kubectl procura um arquivo chamado config no diretório $HOME/. kube. Você pode especificar outros arquivos kubeconfig configurando a variável de ambiente KUBECONFIG ou configurando o sinalizador -kubeconfig.

Ir arriba