Introducción Este artículo resume los puntos clave del KEP 5339 Plugin for Credentials in ClusterProfile de SIG Multicluster y muestra un ejemplo simple de implementación con EKS, traducido y reescrito en español para que puedas ponerlo en práctica rápidamente.
Presentación del proyecto ClusterProfile Credentials Plugins Para facilitar las pruebas de los Credentials Plugins de ClusterProfile, existe un repositorio público con plugins listos para usar. Incluye, entre otros, un ejecutable para EKS que resuelve clusters a partir del endpoint y la CA y devuelve un ExecCredential, y otro que lee data.token desde Secrets de Kubernetes y también devuelve un ExecCredential. Repositorio recomendado labthrust clusterprofile credentials plugins en GitHub. KEP oficial en kubernetes enhancements. Este tipo de catálogo reduce la barrera de entrada al evitar que tengas que escribir tu propio plugin desde cero y centraliza qué plugins existen, cómo se usan y dónde obtener los binarios.
Visión general En ClusterProfile, status.credentialProviders[].cluster guarda el server y la CA. El controlador registra exec plugins por medio de un archivo como cp-creds.json y obtiene los tokens utilizando la variable de entorno KUBERNETES_EXEC_INFO que se pasa en tiempo de ejecución como entrada al plugin. A partir de spec.cluster.server, el plugin identifica el cluster de EKS y ejecuta el flujo de autenticación adecuado. La entrada y la salida del plugin siguen el formato ExecCredential, lo que permite que kubectl o client go consuman el token desde stdout.
Flujo general El controlador carga los providers, invoca el exec plugin definido, el plugin extrae la región a partir del hostname del servidor, lista los clusters de EKS en la región, resuelve el nombre de cluster por coincidencia exacta de endpoint, llama a aws eks get token y devuelve a stdout un ExecCredential con token y fecha de expiración para que el controlador complete la autenticación.
Ejemplo práctico Puedes ver un ejemplo completo en cluster inventory api rama eks example en GitHub. El flujo consiste en arrancar un controlador de ejemplo, pasarle un archivo cp-creds.json con la definición del provider eks y mantener un ClusterProfile cuyo estado incluya el server y la CA del cluster remoto. El controlador construye un rest.Config a partir del ClusterProfile y, con él, un clientset para listar recursos como Pods.
ExecCredential y protocolo de exec plugin ExecCredential es el protocolo de autenticación exec de Kubernetes. En tiempo de ejecución, la entrada llega al plugin mediante la variable KUBERNETES_EXEC_INFO y la salida debe ser un ExecCredential en formato JSON por stdout. Cuando configuras un comando en kubeconfig dentro de users.exec o en providers.execConfig como en este artículo, kubectl y client go invocan el comando, le pasan KUBERNETES_EXEC_INFO y consumen el ExecCredential devuelto. Especificación oficial en documentación de Kubernetes.
Antecedentes de compatibilidad con aws eks update kubeconfig y aws eks get token La orden aws eks update kubeconfig sirve para generar o actualizar el kubeconfig local, requiere indicar el nombre del cluster y no consume KUBERNETES_EXEC_INFO ni devuelve ExecCredential por stdout, por lo que no es compatible con el patrón de exec plugin. En cambio, aws eks get token sí devuelve un JSON compatible con ExecCredential, pero exige proporcionar el nombre del cluster como entrada y no puede derivarlo desde el server y la CA. Conclusión práctica necesitas una capa de resolución que vaya de server y CA a cluster name antes de llamar a aws eks get token.
Implementación del exec plugin para EKS El flujo típico es 1 extraer spec.cluster.server desde KUBERNETES_EXEC_INFO 2 deducir la región a partir del hostname 3 listar clusters de EKS en esa región y determinar el nombre del cluster por coincidencia exacta del endpoint 4 ejecutar aws eks get token y devolver el ExecCredential por stdout. Opcionalmente, puedes cachear la relación endpoint a nombre de cluster por región para acelerar resoluciones posteriores.
Uso desde el controlador El controlador carga la definición de providers desde su archivo, construye un rest.Config a partir del ClusterProfile, y con ese rest.Config crea un clientset de Kubernetes para operar con el cluster remoto, por ejemplo listar Pods en un namespace. Este patrón permite manejar múltiples clusters de forma dinámica con credenciales efímeras, ideal para escenarios de multicluster y flotas en EKS.
Resolución de problemas Si ves no matching EKS cluster revisa los resultados y permisos del comando aws eks list clusters con su región y perfil adecuados. Si aparece x509 certificate signed by unknown authority verifica que certificate authority data esté correctamente codificado en base64 y corresponda al cluster remoto.
Notas adicionales ExecCredential admite extensiones para pasar valores adicionales mediante extensions. En KEP 5339, los Credentials Plugins de ClusterProfile no definen un uso específico de ExecCredential.extensions. Referencia de implementación en el repositorio cluster inventory api en su paquete credentials.
Cómo puede ayudarte Q2BSTUDIO En Q2BSTUDIO, empresa de desarrollo de software y aplicaciones a medida, diseñamos e integramos este tipo de soluciones multicluster sobre Kubernetes y EKS, alineadas con buenas prácticas de seguridad y automatización. Combinamos software a medida, ia para empresas y agentes IA con servicios cloud aws y azure para ofrecer pipelines de autenticación seguros, observabilidad y automatización de despliegues. También integramos capacidades de ciberseguridad y pentesting, así como servicios inteligencia de negocio y power bi para tomar decisiones informadas sobre tus plataformas. Si necesitas acelerar tu adopción de EKS, Kubernetes y credenciales dinámicas, visita nuestros servicios cloud AWS y Azure y descubre cómo potenciamos tus casos de uso con inteligencia artificial avanzada. Palabras clave relacionadas aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.
Referencias KEP 5339 Plugin for Credentials in ClusterProfile en GitHub de Kubernetes. Formatos de entrada y salida de ExecCredential en documentación oficial.