Tutoriales

¿Qué es un archivo kubeconfig?

Ya sea que esté usando Red Hat OpenShift o Kubernetes en un clúster bare metal, en la nube o en una máquina virtual simple creada con Nativo de OpenShift o minicubosiempre tienes un kubeconfig documento. El contenido del archivo puede variar en algunos casos, pero el principio es el mismo.

[ Do you know the difference between Red Hat OpenShift and Kubernetes? ]

Esta publicación utiliza la instalación de minikube para explicar kubeconfig pero puede usar esta información para casi cualquier instalación de OpenShift o Kubernetes.

componentes del archivo kubeconfig

Componentes de Kubernetes como kubelet, kube-controller-managero kubectl usar kubeconfig Archivos para interactuar con la API de Kubernetes. generalmente, kubectl o oc uso de comandos kubeconfig documento.

este kubeconfig ubicación predeterminada del archivo kubectl o oc Es ~/.kube Tabla de contenido.En lugar de utilizar la totalidad kubeconfig nombre, el archivo se acaba de nombrar configLa ubicación predeterminada de . kubeconfig el archivo es ~/.kube/configHay otras formas de especificar kubeconfig ubicación, por ejemplo KUBECONFIG variable de entorno o kubectl --kubeconfig alcance.

este kubeconfig el archivo es un YAML Archivos que contienen clústeres, usuarios y grupos de contexto.

  • A grupo Es un clúster de Kubernetes u OpenShift.
  • A usuario son las credenciales utilizadas para interactuar con la API de Kubernetes.
  • A contexto es una combinación de clúster y usuario.Cada vez que ejecutas un oc o kubectl comando, hizo referencia a un contexto dentro kubeconfig.

[ Read Kubernetes: Everything you need to know ]

Lo siguiente es un ejemplo kubeconfig Archivos de una nueva instalación de minikube:

apiVersion: v1
kind: Config
clusters:
- name: minikube
 cluster:
   certificate-authority: /home/hector/.minikube/ca.crt
   server: 
users:
- name: minikube
 user:
   client-certificate: /home/hector/.minikube/profiles/minikube/client.crt
   client-key: /home/hector/.minikube/profiles/minikube/client.key
contexts:
- name: minikube
 context:
   cluster: minikube
   namespace: default
   user: minikube
current-context: minikube

Aquí hay algunos detalles adicionales sobre el clúster, el contexto y el usuario.

este grupo La sección enumera todos los clústeres a los que se ha conectado.En este caso, sólo hay uno, llamado minicuboEl nombre es arbitrario, puede ser lo que quieras. Dentro del clúster hay dos claves:

  • Autoridad certificada Contiene el certificado de la autoridad de certificación (CA) que firma todos los certificados internos de Kubernetes. Puede ser una ruta de archivo o una cadena Base64 en formato de correo con privacidad mejorada (PEM) para el certificado.
  • servidor es la dirección del servidor.

este usuario La sección enumera todos los usuarios que se han utilizado para conectarse al clúster.En este caso, solo hay un usuario llamado minicuboEste nombre es arbitrario y no tiene relación con ningún objeto dentro de Kubernetes u OpenShift. El usuario tiene algunas claves posibles:

  • certificado de cliente Contiene el certificado de usuario firmado por la CA de Kubernetes. Puede ser una ruta de archivo o una cadena Base64 en formato PEM para el certificado.
  • clave de cliente Contiene la clave que firmó el certificado del cliente.
  • simbólico Contiene el token de este usuario cuando no hay credenciales.

este contexto La sección especifica una combinación de usuario y clúster. También define un espacio de nombres predeterminado para el par.El nombre del contexto es arbitrario, pero el usuario y el clúster deben estar en kubeconfig documento. Si el espacio de nombres no existe en Kubernetes, el comando fallará con el mensaje predeterminado de Kubernetes para un espacio de nombres que no existe.

[ Cheat sheet: Kubernetes glossary ]

Autenticarse con kubeconfig

De forma predeterminada, no hay ningún objeto de usuario dentro de Kubernetes. Kubernetes usa certificados X.509 para autenticar a los administradores de clúster predeterminados. Los certificados X.509 informan a Kubernetes sobre el usuario que intenta acceder a un recurso.

Para comprobar el certificado X.509, utilice openssl Orden. El ejemplo anterior incluye un certificado de cliente que apunta a un archivo. Puedes comprobarlo con el siguiente comando:

$ openssl x509 -noout -text -in /home/hector/.minikube/profiles/minikube/client.crt

El resultado es enorme, pero me centraré en una línea específica:

Certificate:
   Data:
       Version: 3 (0x2)
       Serial Number: 2 (0x2)
       Signature Algorithm: sha256WithRSAEncryption
       Issuer: CN = minikubeCA
       Validity
           Not Before: Nov 23 18:50:27 2022 GMT
           Not After : Nov 23 18:50:27 2025 GMT
       Subject: O = system:masters, CN = minikube-user
       Subject Public Key Info:
                               ...
       X509v3 extensions:
           X509v3 Key Usage: critical
               Digital Signature, Key Encipherment
           X509v3 Extended Key Usage:
               TLS Web Server Authentication, TLS Web Client Authentication
           X509v3 Basic Constraints: critical
               CA:FALSE
                               ...

Buscar tema información y X.509v3 expandir. Los conceptos y requisitos de estas extensiones están más allá del alcance de este artículo, pero son necesarios para este tipo de autenticación.

este tema es una directiva X.509 que especifica algo como Porcelana (nombre común), Europa (organizar), Europa (número de organización), C (país), etcmira cuidadosamente Europa sitio.el valor es Sistema: MaestroEsto le dice a Kubernetes que este certificado es miembro del grupo Sistema: MaestroEn este caso, no hay usuarios, pero los grupos son suficientes.

Mire dentro de Kubernetes y encuentre el objeto de control de acceso basado en roles (RBAC) que administra esta autenticación:

$ kubectl get clusterrolebinding cluster-admin -o yaml
# Output:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
 labels:
   kubernetes.io/bootstrapping: rbac-defaults
 name: cluster-admin
roleRef:
 apiGroup: rbac.authorization.k8s.io
 kind: ClusterRole
 name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
 kind: Group
 name: system:masters

este Enlace de rol de clúster conectar administrador del clúster rol de clúster Sistema: Maestro grupo.

Otros componentes de Kubernetes usan la misma lógica, como puede ver en el interior /etc/kubernetes:

$ ls /etc/kubernetes/*.conf
# Output:
/etc/kubernetes/admin.conf  /etc/kubernetes/controller-manager.conf  /etc/kubernetes/kubelet.conf  /etc/kubernetes/scheduler.conf

Cada uno de estos archivos es un kubeconfig Archivos con componentes específicos para usuarios y certificados específicos.

[ Want to test your sysadmin skills? Take a skills assessment today. ]

modificar contexto

Puedes editar el kubeconfig archivo, pero esto puede causar errores. Si desea cambiar el espacio de nombres predeterminado de Kubernetes, puede ejecutar el siguiente comando:

$ kubectl config set-context --current --namespace kube-system
(Héctor Vido Silva, CC BY-SA 4.0)

Este comando es más seguro.modificará kubeconfig archivo, cambiando el espacio de nombres en el contexto actual.

Puede utilizar otros comandos. Por ejemplo, hay comandos que pueden cambiar completamente un contexto o incluso crear un nuevo contexto desde cero.

envolver

este kubeconfig Los archivos son la forma predeterminada de autenticarse en un clúster de Kubernetes. Puede ser un poco críptico debido al certificado incrustado, pero es fácil de entender si se mira de cerca.este kubeconfig Los archivos pueden contener clústeres, usuarios y contextos.puede cambiar entre ellos kubectl config use-context.

El cliente de OpenShift es fácil de usar porque puede crear un kubeconfig archivo (si no está presente después) oc login Orden.Sin embargo, puede crear un kubeconfig al ejecutar algunos kubectl config Orden.

LEER  6 formas de obtener información de la CPU en Linux

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba