Utilice un kubeconfig temporal o de largo plazo para autenticar kubectl con el servidor de API de su clúster.
También puede gestionar clústeres y aplicaciones a través de la consola de ACK.
De acuerdo con la shared responsibility model, proteja las credenciales de su kubeconfig rotándolas periódicamente y aplicando el principio de menor privilegio.
Selección del tipo de kubeconfig
Elija el tipo de kubeconfig según la duración de acceso que necesite y la forma en que su cliente se conecta al clúster.
Por periodo de validez
|
Type |
Validity |
Best for |
Security |
|
Temporal |
De 30 minutos a 3 días (configurable) |
Operaciones diarias y mantenimiento (O&M), solución de problemas, pipelines de CI/CD |
Menor riesgo: expira automáticamente tras el periodo configurado |
|
De largo plazo |
3 años (predeterminado) |
Sistemas automatizados, servicios de monitoreo de ejecución prolongada |
Requiere rotación manual antes de su vencimiento |
Por método de acceso
|
Type |
When to use |
Details |
|
Acceso privado |
Su máquina cliente se encuentra en la misma Virtual Private Cloud (VPC) que el clúster |
Se conecta a través de la red interna con menor latencia y mayor seguridad |
|
Acceso público |
Conexión desde cualquier máquina con acceso a Internet |
Expone el servidor de API mediante una Elastic IP Address (EIP); ideal para desarrollo local y O&M remoto |
Una EIP vinculada genera cargos de pay-as-you-go.
Para clústeres dedicados ACK con acceso público, también puede connect to the master node via SSH para obtener el kubeconfig.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
kubectl instalado, dentro de una versión menor respecto a la versión de Kubernetes de su clúster (por ejemplo, kubectl 1.27–1.29 para Kubernetes 1.28).
Un usuario RAM con permissions otorgados tanto a nivel de ACK como de clúster.
Obtención del archivo kubeconfig y conexión al clúster
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster o en Details dentro de la columna Actions.
En la página Cluster Information, seleccione la pestaña Connection Information. Elija un kubeconfig temporal o de largo plazo. Si opta por uno temporal, establezca el periodo de validez.
Seleccione la pestaña Internal Access o Public Access y luego haga clic en Copy.
-
Pegue el contenido en el archivo
$HOME/.kube/configde su cliente y guarde el archivo.Nota: Si el directorio o el archivo no existe, créelo primero.
-
Compruebe la conexión listando todos los namespaces:
kubectl get namespacesSalida esperada:
NAME STATUS AGE default Active 4h39m kube-node-lease Active 4h39m kube-public Active 4h39m kube-system Active 4h39m
Gestión de credenciales de kubeconfig
Rotación de credenciales antes de su vencimiento
Un kubeconfig de largo plazo tiene una validez de 3 años. Obtenga uno nuevo desde la consola de ACK o la API DescribeClusterUserKubeconfig dentro de los 180 días previos al vencimiento para evitar interrupciones en el servicio.
El nuevo kubeconfig tendrá una validez de 3 años. El anterior permanecerá válido hasta su fecha de vencimiento original.
Revocación de credenciales comprometidas
Si sospecha que un kubeconfig ha sido comprometido, revoke the cluster's kubeconfig credentials inmediatamente. Esta acción invalida todas las conexiones existentes y genera un nuevo kubeconfig.
Limpieza de permisos para usuarios salientes
Cuando un usuario ya no requiera acceso (por ejemplo, al finalizar un proyecto o tras la salida de un empleado), revoque sus permisos de kubeconfig de forma masiva mediante deleting kubeconfig files o using ack-ram-tool. El sistema no generará un nuevo kubeconfig tras la revocación.
Para restaurar permisos revocados accidentalmente, utilice la kubeconfig recycle bin .
Preguntas frecuentes
De forma predeterminada, kubectl utiliza$HOME/.kube/config. Para usar un archivo diferente, establezca la variable de entornoKUBECONFIGo pase el indicador--kubeconfig. En los siguientes comandos, reemplacekubeconfigcon la ruta a su archivo kubeconfig.
¿Cómo encuentro la identidad asociada a un certificado de kubeconfig?
Extraiga el asunto del certificado:
# Extract the client certificate, decode it from base64,
# then use OpenSSL to display the Subject field
grep client-certificate-data kubeconfig | awk '{print $2}' | base64 -d | openssl x509 -noout -text | grep Subject:
Salida esperada:
Subject: O=system:users, OU=, CN=1***-1673419473
O: El grupo de usuarios de Kubernetes. En este ejemplo,system:users.CN: El identificador de usuario. En este ejemplo,1***-1673419473, donde1***es el ID de usuario de Alibaba Cloud.
¿Cómo compruebo cuándo vence un certificado de kubeconfig?
Verifique la fecha de vencimiento del certificado:
# Extract the client certificate, decode it from base64,
# then use OpenSSL to print the expiration date
grep client-certificate-data kubeconfig | awk '{print $2}' | base64 -d | openssl x509 -noout -enddate
Salida esperada:
notAfter=Jan 10 06:44:34 2026 GMT
En este ejemplo, el certificado vence el 10 de enero de 2026.
Obtenga un nuevo kubeconfig desde la consola o la API dentro de los 180 días previos al vencimiento, o en cualquier momento posterior a su expiración.
¿Cómo extraigo el certificado de cliente, la clave privada y la URL del servidor de API desde un kubeconfig?
Extraiga el certificado, la clave y la URL del servidor de API:
# Extract and decode the client certificate to a PEM file
grep client-certificate-data ./kubeconfig | awk -F ' ' '{print $2}' | base64 -d > ./client-cert.pem
# Extract and decode the client private key to a PEM file
grep client-key-data ./kubeconfig | awk -F ' ' '{print $2}' | base64 -d > ./client-key.pem
# Extract the API server URL into a variable
APISERVER=$(grep server ./kubeconfig | awk -F ' ' '{print $2}')
¿Cómo resuelvo el error "certificate is valid for"?
Este error ocurre cuando vincula una nueva dirección IP a la instancia de Server Load Balancer (SLB) del servidor de API. Los comandos de kubectl dirigidos a la nueva IP fallan con Error while proxying request: x509: certificate is valid for xxx o Unable to connect to the server: x509: certificate is valid for xxx.
La solución depende del tipo de clúster:
Clústeres administrados ACK: Agregue la nueva dirección IP al Subject Alternative Name (SAN) del certificado del servidor de API.
-
Clústeres dedicados ACK: Configure kubectl para omitir la verificación TLS mediante uno de estos métodos:
ImportanteOmitir la verificación TLS representa un riesgo de seguridad. No utilice esta opción en producción. Migre a ACK Pro clusters y luego agregue la nueva dirección IP al SAN del certificado del servidor de API.
-
Método 1: Pase el indicador
--insecure-skip-tls-verify:kubectl -s https://<IP>:6443 --insecure-skip-tls-verify get ns -
Método 2: Edite el archivo kubeconfig. Agregue
insecure-skip-tls-verify: truey elimine el campocertificate-authority-data:apiVersion: v1 clusters: - cluster: server: https://<IP>:6443 insecure-skip-tls-verify: true name: kubernetes contexts: ...
-
¿Puedo obtener la clave del certificado raíz de un clúster administrado ACK para generar mi propio kubeconfig?
No. Los clústeres administrados ACK no exponen la clave del certificado raíz. Obtenga el kubeconfig desde la consola o la API DescribeClusterUserKubeconfig.
Referencias
Consulte un kubeconfig mediante programación con la API DescribeClusterUserKubeconfig.
Inicie sesión en un nodo del clúster. Consulte ECS remote connection methods.