Como simplificar o gerenciamento do 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.
O que é um contexto?
Os contextos encapsulam a coleção de configurações que permitem uma conexão bem-sucedida a um cluster Kubernetes. Um contexto pode incluir a URL do cluster, um conjunto de credenciais do usuário e o namespace para o destino por padrão.
Na ausência de contextos, ambientes exclusivos do Kubernetes geralmente são tratados criando um arquivo de configuração separado para cada um. Você então america o --kubeconfig bandeira ou KUBECONFIG variável de ambiente para carregar o arquivo correto toda vez que você usar o Kubectl:
$ export KUBECONFIG=.kube/cluster-1-user-1.yaml $ kubectl get pods
Os contextos permitem condensar detalhes de todos os seus ambientes em um arquivo de configuração. Você pode usar o padrão .kube/config para cada um de seus clusters, eliminando sinalizadores de CLI e variáveis de ambiente. Kubectl inclui comandos para alternar seu contexto ativo entre as opções que você criou.
Preparando-se para Contextos
Os contextos são gerenciados usando o kubectl config grupo de comando. Assim como tudo no Kubectl, sua lista de contexto disponível será carregada e salva em seu arquivo de configuração ativo. Isso é determinado por KUBECONFIG, --kubeconfigou o padrão .kube/config.
Para começar a usar contextos, você precisa adicionar alguns clusters e credenciais ao seu arquivo de configuração. Você pode usar outros kubectl config comandos para configurá-los:
# Create two cluster connections, qa and 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 # Create two credential pairs $ kubectl set-credentials qa-user --username=demo --password=demoP@ss_qa $ kubectl set-credentials prod-user --username=demo password=demoP@ss_prod
Agora, seu arquivo de configuração contém detalhes de conexão para dois clusters Kubernetes separados. Ele também contém dois pares de credenciais. Em seguida, criaremos um contexto para vincular os clusters às respectivas credenciais. Você poderá usar um comando Kubectl para alternar entre os ambientes de controle de qualidade e de produção.
Criando um contexto
o kubectl config set-context O comando adiciona novos contextos ao seu arquivo de configuração. Você deve especificar um nome para seu contexto. Use os sinalizadores do comando para fazer referência a um cluster e uma conta de usuário adicionados anteriormente.
# Create contexts for the clusters added previous $ 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 kubectl config view comando para inspecionar todas as alterações que foram feitas em seu arquivo de configuração:
apiVersion: v1 type: Config current-context: "" clusters: - cluster: title: qa server: https://192.168.0.1 insecure-skip-tls-verify: true - cluster: title: prod server: https://192.168.0.2 insecure-skip-tls-verify: true contexts: - context: title: qa-context cluster: qa consumer: qa-user - context: title: prod-context cluster: prod consumer: prod-user customers: - title: qa-user consumer: username: demo password: demoP@ss_qa - title: prod-user consumer: username: demo password: demoP@ss_prod
As definições de contexto apontam para outros tipos de objetos definidos em outro lugar no arquivo de configuração.
Selecionando e usando contextos
Os contextos são selecionados com o kubectl context use-context comando:
$ kubectl context use-context qa-context
O nome do contexto ativo é armazenado como o valor do current-context campo em seu arquivo de configuração Kubectl. Todos os comandos do Kubectl terão como alvo o cluster referenciado pelo contexto selecionado.
# Connects to the https://192.168.0.1 cluster as demo:demoP@ss_qa $ kubectl get pods # Transfer the lively context $ kubectl config use-context prod-context # Connects to the https://192.168.0.2 cluster as demo:demoP@ss_prod $ kubectl get pods
A capacidade de alterar rapidamente o ambiente de destino no Kubectl ajuda você a alternar entre clusters sem ser sobrecarregado por sinalizadores de configuração.
Como o contexto selecionado persiste até que outro seja selecionado, você deve verificar se o Kubectl está direcionando o ambiente esperado antes de executar comandos destrutivos. Use o current-context comando para ver o nome do contexto selecionado:
$ kubectl config current-context prod-context
Você pode visualizar todos os contextos em seu arquivo de configuração carregado atualmente com get-contexts:
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
qa-context qa qa-user
* prod-context prod prod-user
Incluindo 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, os comandos Kubectl incluirão automaticamente o --namespace bandeira. 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 # Will get Pods within the "api" namespace throughout the "prod" cluster $ kubectl get 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 a repetição do --namespace sinalizar conforme você inspeciona diferentes recursos em seu cluster.
Renomeando e excluindo contextos
Renomeie contextos usando o rename-context comando:
$ kubectl config rename-context qa-context testing-context
Para excluir um contexto, passe seu nome para o delete-context comando:
$ kubectl config delete-context testing-context
O cluster, usuário e namespace referenciados por um contexto são alterados repetindo o set-context comando com o mesmo nome de contexto. Você também pode fazer modificações editando manualmente seu arquivo de configuração Kubectl.
Tornando 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ê estiver mudando constantemente de cluster ao longo do dia, o use-context comando pode começar a parecer repetitivo.
Kubectx é um plugin Kubectl que pode tornar as trocas de contexto ainda mais fáceis. Ele encurta use-context e adiciona alguns recursos extras de conveniência:
# Similar to "kubectl config use-context prod-context" $ kubectx prod-context
Dependendo do seu fluxo de trabalho, você pode querer continuar usando vários arquivos de configuração do Kubectl também. 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 Kubectl terão como alvo o cluster do contexto selecionado usando as credenciais referenciadas.
Você pode configurar contextos com kubectl config set-context ou editando manualmente seu .kube/config Arquivo. Kubectl também inclui comandos para gerenciar as conexões de cluster nomeadas e contas de usuário que você pode referenciar em seus contextos.
Fonte da Notícia: www.howtogeek.com




