|
| 1 | +--- |
| 2 | +title: Organizando o acesso ao cluster usando arquivos kubeconfig |
| 3 | +content_type: concept |
| 4 | +weight: 60 |
| 5 | +--- |
| 6 | + |
| 7 | +<!-- overview --> |
| 8 | + |
| 9 | +Utilize arquivos kubeconfig para organizar informações sobre clusters, usuários, namespaces e mecanismos de autenticação. A ferramenta de linha de comando `kubectl` faz uso dos arquivos kubeconfig para encontrar as informações necessárias para escolher e se comunicar com o serviço de API de um cluster. |
| 10 | + |
| 11 | + |
| 12 | +{{< note >}} |
| 13 | +Um arquivo que é utilizado para configurar o acesso aos clusters é chamado de *kubeconfig*. Esta á uma forma genérica de referenciamento para um arquivo de configuração desta natureza. Isso não significa que existe um arquivo com o nome `kubeconfig`. |
| 14 | +{{< /note >}} |
| 15 | + |
| 16 | +Por padrão, o `kubectl` procura por um arquivo de nome `config` no diretório `$HOME/.kube` |
| 17 | + |
| 18 | +Você pode especificar outros arquivos kubeconfig através da variável de ambiente `KUBECONFIG` ou adicionando a opção [`--kubeconfig`](/docs/reference/generated/kubectl/kubectl/). |
| 19 | + |
| 20 | +Para maiores detalhes na criação e especificação de um kubeconfig, veja o passo a passo em [Configurar Acesso para Múltiplos Clusters](/docs/tasks/access-application-cluster/configure-access-multiple-clusters). |
| 21 | + |
| 22 | + |
| 23 | +<!-- body --> |
| 24 | + |
| 25 | +## Suportando múltiplos clusters, usuários e mecanismos de autenticação |
| 26 | + |
| 27 | +Imagine que você possua inúmeros clusters, e seus usuários e componentes se autenticam de várias formas. Por exemplo: |
| 28 | + |
| 29 | +- Um kubelet ativo pode se autenticar utilizando certificados |
| 30 | +- Um usuário pode se autenticar através de tokens |
| 31 | +- Administradores podem possuir conjuntos de certificados os quais provém acesso aos usuários de forma individual. |
| 32 | + |
| 33 | +Através de arquivos kubeconfig, você pode organizar os seus clusters, usuários, e namespaces. Você também pode definir contextos para uma fácil troca entre clusters e namespaces. |
| 34 | + |
| 35 | + |
| 36 | +## Contexto |
| 37 | + |
| 38 | +Um elemento de *contexto* em um kubeconfig é utilizado para agrupar parâmetros de acesso em um nome conveniente. Cada contexto possui três parâmetros: cluster, namespace, e usuário. |
| 39 | + |
| 40 | +Por padrão, a ferramenta de linha de comando `kubectl` utiliza os parâmetros do _contexto atual_ para se comunicar com o cluster. |
| 41 | + |
| 42 | +Para escolher o contexto atual: |
| 43 | + |
| 44 | +```shell |
| 45 | +kubectl config use-context |
| 46 | +``` |
| 47 | + |
| 48 | +## A variável de ambiente KUBECONFIG |
| 49 | + |
| 50 | +A variável de ambiente `KUBECONFIG` possui uma lista dos arquivos kubeconfig. Para Linux e Mac, esta lista é delimitada por vírgula. No Windows, a lista é delimitada por ponto e vírgula. A variável de ambiente `KUBECONFIG` não é um requisito obrigatório - caso ela não exista o `kubectl` utilizará o arquivo kubeconfig padrão localizado no caminho `$HOME/.kube/config`. |
| 51 | + |
| 52 | +Se a variável de ambiente `KUBECONFIG` existir, o `kubectl` utilizará uma configuração que é o resultado da combinação dos arquivos listados na variável de ambiente `KUBECONFIG`. |
| 53 | + |
| 54 | +## Combinando arquivos kubeconfig |
| 55 | + |
| 56 | +Para inspecionar a sua configuração atual, execute o seguinte comando: |
| 57 | + |
| 58 | +```shell |
| 59 | +kubectl config view |
| 60 | +``` |
| 61 | + |
| 62 | +Como descrito anteriormente, a saída poderá ser resultado de um único arquivo kubeconfig, ou poderá ser o resultado da junção de vários arquivos kubeconfig. |
| 63 | + |
| 64 | +Aqui estão as regras que o `kubectl` utiliza quando realiza a combinação de arquivos kubeconfig: |
| 65 | + |
| 66 | +1. Se o argumento `--kubeconfig` está definido, apenas o arquivo especificado será utilizado. Apenas uma instância desta flag é permitida. |
| 67 | + |
| 68 | + Caso contrário, se a variável de ambiente `KUBECONFIG` estiver definida, esta deverá ser utilizada como uma lista de arquivos a serem combinados, seguindo o fluxo a seguir: |
| 69 | + |
| 70 | + * Ignorar arquivos vazios. |
| 71 | + * Produzir erros para aquivos cujo conteúdo não for possível desserializar. |
| 72 | + * O primeiro arquivo que definir um valor ou mapear uma chave determinada, será o escolhido. |
| 73 | + * Nunca modificar um valor ou mapear uma chave. |
| 74 | + Exemplo: Preservar o contexto do primeiro arquivo que definir `current-context`. |
| 75 | + Exemplo: Se dois arquivos especificarem um `red-user`, use apenas os valores do primeiro `red-user`. Mesmo se um segundo arquivo possuir entradas não conflitantes sobre a mesma entrada `red-user`, estas deverão ser descartadas. |
| 76 | + |
| 77 | + Para um exemplo de definição da variável de ambiente `KUBECONFIG` veja [Definido a variável de ambiente KUBECONFIG](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/#set-the-kubeconfig-environment-variable). |
| 78 | + |
| 79 | + Caso contrário, utilize o arquivo kubeconfig padrão encontrado no diretório `$HOME/.kube/config`, sem qualquer tipo de combinação. |
| 80 | + |
| 81 | +1. Determine o contexto a ser utilizado baseado no primeiro padrão encontrado, nesta ordem: |
| 82 | + |
| 83 | + 1. Usar o conteúdo da flag `--context` caso ela existir. |
| 84 | + 1. Usar o `current-context` a partir da combinação dos arquivos kubeconfig. |
| 85 | + |
| 86 | + |
| 87 | + Um contexto vazio é permitido neste momento. |
| 88 | + |
| 89 | + |
| 90 | +1. Determinar o cluster e o usuário. Neste ponto, poderá ou não existir um contexto. |
| 91 | + Determinar o cluster e o usuário no primeiro padrão encontrado de acordo com a ordem à seguir. Este procedimento deverá executado duas vezes: uma para definir o usuário a outra para definir o cluster. |
| 92 | + |
| 93 | + 1. Utilizar a flag caso ela existir: `--user` ou `--cluster`. |
| 94 | + 1. Se o contexto não estiver vazio, utilizar o cluster ou usuário deste contexto. |
| 95 | + |
| 96 | + O usuário e o cluster poderão estar vazios neste ponto. |
| 97 | + |
| 98 | +1. Determinar as informações do cluster atual a serem utilizadas. Neste ponto, poderá ou não existir informações de um cluster. |
| 99 | + |
| 100 | + Construir cada peça de informação do cluster baseado nas opções à seguir; a primeira ocorrência encontrada será a opção vencedora: |
| 101 | + |
| 102 | + 1. Usar as flags de linha de comando caso existirem: `--server`, `--certificate-authority`, `--insecure-skip-tls-verify`. |
| 103 | + 1. Se algum atributo do cluster existir a partir da combinação de kubeconfigs, estes deverão ser utilizados. |
| 104 | + 1. Se não existir informação de localização do servidor falhar. |
| 105 | + |
| 106 | +1. Determinar a informação atual de usuário a ser utilizada. Construir a informação de usuário utilizando as mesmas regras utilizadas para o caso de informações de cluster, exceto para a regra de técnica de autenticação que deverá ser única por usuário: |
| 107 | + |
| 108 | + 1. Usar as flags, caso existirem: `--client-certificate`, `--client-key`, `--username`, `--password`, `--token`. |
| 109 | + 1. Usar os campos `user` resultado da combinação de arquivos kubeconfig. |
| 110 | + 1. Se existirem duas técnicas conflitantes, falhar. |
| 111 | + |
| 112 | +1. Para qualquer informação que ainda estiver ausente, utilizar os valores padrão e potencialmente solicitar informações de autenticação a partir do prompt de comando. |
| 113 | + |
| 114 | + |
| 115 | +## Referências de arquivos |
| 116 | + |
| 117 | +Arquivos e caminhos referenciados em um arquivo kubeconfig são relativos à localização do arquivo kubeconfig. |
| 118 | + |
| 119 | +Referências de arquivos na linha de comando são relativas ao diretório de trabalho vigente. |
| 120 | + |
| 121 | +No arquivo `$HOME/.kube/config`, caminhos relativos são armazenados de forma relativa, e caminhos absolutos são armazenados de forma absoluta. |
| 122 | + |
| 123 | +## {{% heading "whatsnext" %}} |
| 124 | + |
| 125 | + |
| 126 | +* [Configurar Accesso para Multiplos Clusters](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) |
| 127 | +* [`kubectl config`](/docs/reference/generated/kubectl/kubectl-commands#config) |
| 128 | + |
| 129 | + |
| 130 | + |
| 131 | + |
0 commit comments