155 lines
7.2 KiB
Markdown
155 lines
7.2 KiB
Markdown
---
|
|
title: Organizar el acceso a los clústeres utilizando archivos kubeconfig
|
|
content_type: concept
|
|
weight: 60
|
|
---
|
|
|
|
<!-- overview -->
|
|
|
|
Utilice los archivos kubeconfig para organizar la información acerca de los clústeres, los
|
|
usuarios, los Namespaces y los mecanismos de autenticación. La herramienta de
|
|
línea de comandos `kubectl` utiliza los archivos kubeconfig para hallar la información que
|
|
necesita para escoger un clúster y comunicarse con el servidor API de un clúster.
|
|
|
|
{{< note >}}
|
|
Un archivo utilizado para configurar el acceso a los clústeres se denomina
|
|
*archivo kubeconfig*. Esta es una forma genérica de referirse a los archivos de
|
|
configuración. Esto no significa que exista un archivo llamado `kubeconfig`.
|
|
{{< /note >}}
|
|
|
|
Por defecto, `kubectl` busca un archivo llamado `config` en el directorio `$HOME/.kube`.
|
|
Puedes especificar otros archivos kubeconfig mediante la configuración de la variable
|
|
de entorno `KUBECONFIG` o mediante la configuracion del flag
|
|
[`--kubeconfig`](/docs/reference/generated/kubectl/kubectl/).
|
|
|
|
Para obtener instrucciones paso a paso acerca de cómo crear y especificar los archivos kubeconfig,
|
|
consulte el recurso
|
|
[Configurar El Acceso A Múltiples Clústeres](/docs/tasks/access-application-cluster/configure-access-multiple-clusters).
|
|
|
|
|
|
|
|
<!-- body -->
|
|
|
|
## Compatibilidad con múltiples clústeres, usuarios y mecanismos de autenticación
|
|
|
|
Suponga que tiene diversos clústeres y que sus usuarios y componentes se autentican
|
|
de diversas maneras. Por ejemplo:
|
|
|
|
- Un kubelet en ejecución se podría autenticar usando certificados.
|
|
- Un usuario se podría autenticar utilizando tokens.
|
|
- Los administradores podrían tener un conjunto de certificados que sean suministrados a los usuarios individualmente.
|
|
|
|
Con los archivos kubeconfig puedes organizar tus clústeres, usuarios y Namespaces.
|
|
También puedes definir diferentes contextos para realizar de forma rápida y
|
|
fácil cambios entre clústeres y Namespaces.
|
|
|
|
## Contexto
|
|
|
|
Un elemento *context* en un archivo kubeconfig se utiliza para agrupar los parámetros de
|
|
acceso bajo un nombre apropiado. Cada contexto tiene tres parámetros: clúster, Namespace
|
|
y usuario.
|
|
Por defecto, la herramienta de línea de comandos `kubectl` utiliza los parámetros del
|
|
*contexto actual* para comunicarse con el clúster.
|
|
|
|
Para seleccionar el contexto actual:
|
|
|
|
```shell
|
|
kubectl config use-context
|
|
```
|
|
|
|
## Variable de entorno KUBECONFIG
|
|
|
|
La variable de entorno `KUBECONFIG` contiene una lista de archivos kubeconfig.
|
|
En el caso de Linux y Mac, la lista está delimitada por dos puntos. Si se trata
|
|
de Windows, la lista está delimitada por punto y coma. La variable de entorno
|
|
`KUBECONFIG` no es indispensable. Si la variable de entorno `KUBECONFIG` no existe,
|
|
`kubectl` utiliza el archivo kubeconfig por defecto `$HOME/.kube/config`.
|
|
|
|
Si la variable de entorno `KUBECONFIG` existe, `kubectl` utiliza una
|
|
configuración eficiente que es el resultado de la fusión de los archivos
|
|
listados en la variable de entorno `KUBECONFIG`.
|
|
|
|
## Fusionando archivos kubeconfig
|
|
|
|
Para poder ver su configuración, escriba el siguiente comando:
|
|
|
|
```shell
|
|
kubectl config view
|
|
```
|
|
|
|
Como se ha descrito anteriormente, la respuesta de este comando podría resultar a partir de un solo
|
|
archivo kubeconfig, o podría ser el resultado de la fusión de varios archivos kubeconfig.
|
|
|
|
A continuación se muestran las reglas que usa `kubectl` cuando fusiona archivos kubeconfig:
|
|
|
|
1. Si el flag `--kubeconfig` está activado, usa solamente el archivo especificado. Sin fusionar.
|
|
Sólo se permite una instancia con este flag.
|
|
|
|
En caso contrario, si la variable de entorno `KUBECONFIG` está activada, sera usada
|
|
como un listado de los archivos a ser fusionados.
|
|
Fusionar los archivos listados en la variable de entorno `KUBECONFIG` de acuerdo
|
|
con estas reglas:
|
|
|
|
* Ignorar nombres de archivo vacíos.
|
|
* Producir errores para archivos con contenido que no pueden ser deserializados.
|
|
* El primer archivo que establezca un valor particular o una clave se impone.
|
|
* Nunca cambie el valor o la clave.
|
|
Ejemplo: Conserva el contexto del primer archivo para configurar el `contexto actual`.
|
|
Ejemplo: Si dos archivos especifican un `red-user`, utilice sólo los valores del primer archivo.
|
|
Incluso desechar el segundo archivo aunque tenga registros que no tengan conflictos.
|
|
|
|
Para obtener un ejemplo de configuración de la variable de entorno `KUBECONFIG`, consulte la sección
|
|
[Configuración de la variable de entorno KUBECONFIG](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/#set-the-kubeconfig-environment-variable).
|
|
|
|
En caso contrario, utilice el archivo kubeconfig predeterminado `$HOME/.kube/config`, sin fusionar.
|
|
|
|
2. Determinar el contexto a utilizar con base en el primer acierto en esta secuencia:
|
|
|
|
1. Si es que existe, utilice el flag `---contexto` de la línea de comandos.
|
|
2. Utilice el `contexto actual` procedente de los archivos kubeconfig fusionados.
|
|
|
|
En este punto se permite un contexto vacío.
|
|
|
|
3. Determinar el clúster y el usuario. En este caso, puede o no haber un contexto.
|
|
Determine el clúster y el usuario con base en el primer acierto que se ejecute dos veces en
|
|
esta secuencia: una para el usuario y otra para el clúster:
|
|
|
|
1. Si es que existen, utilice el flag `--user` o `--cluster` de la línea de comandos.
|
|
2. Si el contexto no está vacío, tome el usuario o clúster del contexto.
|
|
|
|
En este caso el usuario y el clúster pueden estar vacíos.
|
|
|
|
4. Determinar la información del clúster a utilizar. En este caso, puede o no haber información del clúster.
|
|
Se construye cada pieza de la información del clúster con base en esta secuencia, el primer acierto se impone:
|
|
|
|
1. Si es que existen, use el flag `--server`, `--certificate-authority`, `--insecure-skip-tls-verify` en la línea de comandos.
|
|
2. Si existen atributos de información de clúster procedentes de los archivos kubeconfig fusionados, utilícelos.
|
|
3. Falla si no existe la ubicación del servidor.
|
|
|
|
5. Determinar la información del usuario a utilizar. Cree información de usuario utilizando las mismas reglas que
|
|
la información de clúster, con la excepción de permitir sólo un mecanismo de autenticación por usuario:
|
|
|
|
1. Si es que existen, utilice el flag `--client-certificate`, `--client-key`, `--username`, `--password`, `--token` de la línea de comandos.
|
|
2. Utilice los campos `user` de los archivos kubeconfig fusionados.
|
|
3. Falla si hay dos mecanismos de autenticación contradictorios.
|
|
|
|
6. Si todavía falta información, utilice los valores predeterminados y solicite
|
|
información de autenticación.
|
|
|
|
## Referencias de archivos
|
|
|
|
Las referencias, así también como, las rutas de un archivo kubeconfig son relativas a la ubicación del archivo kubeconfig.
|
|
Las referencias de un archivo en la línea de comandos son relativas al directorio actual de trabajo.
|
|
Dentro de `$HOME/.kube/config`, las rutas relativas se almacenan de manera relativa a la ubicación del archivo kubeconfig , al igual que las rutas absolutas
|
|
se almacenan absolutamente.
|
|
|
|
|
|
|
|
## {{% heading "whatsnext" %}}
|
|
|
|
|
|
* [Configurar el acceso a multiples Clústeres](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)
|
|
* [`kubectl config`](/docs/reference/generated/kubectl/kubectl-commands#config)
|
|
|
|
|