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.
Tabla de Contenidos
componentes del archivo kubeconfig
Componentes de Kubernetes como kubelet
, kube-controller-manager
o 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 config
La ubicación predeterminada de . kubeconfig
el archivo es ~/.kube/config
Hay 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
okubectl
comando, hizo referencia a un contexto dentrokubeconfig
.
[ 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
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.