El comando ejecutivo del complemento Kubernetes client-go no se encuentra en Windows 10

El comando ejecutivo del complemento Kubernetes client-go no se encuentra en Windows 10

El equipo central de nuestro cliente utiliza kubeconfig con autenticación client-go ejecutando un script de Python para obtener el token. Todos usan Mac. Yo uso Windows con mingw64. No importa cómo intente especificar la ruta a ese script: barras diagonales con letra de unidad entre barras o estilo clásico de Windows (aunque esté presente en PATH), incluso si coloco el script en el mismo directorio que el archivo de configuración de Kube y no Si no especifico ninguna ruta, obtengo Unable to connect to the server: getting credentials: exec: executable <our script name> not found. Puedo ejecutar este script sin especificar la ruta desde CLI sin problemas. Sólo lo intento kubectl get pods. Fragmento relevante user::

- name: someName
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1beta1
      args:
      - --creds
      - '%userprofile%\path\to\credentials.properties'
      command: path\to\script
      env: null

Pregunta: ¿cómo especificar el ejecutable en la sección ejecutiva de kubeconfig en Windows?

Respuesta1

Kubernetes client-go ya tiene métodos auxiliares para la autenticación mediante kubeconfig. Contiene dos variantes con buenos ejemplos:

Recomendaría utilizar dos métodos auxiliares integrados en lugar de implementar una variante personalizada. Quizás desee agregar un argumento para poder cambiar entre los dos, por ejemplo, usar fuera del clúster cuando se ejecuta localmente en Windows y dentro del clúster cuando la aplicación (¿si su código es una aplicación?) se ejecuta como un servicio. en el cúmulo.

Respuesta2

Hay poca documentación sobre el uso de kubeconfig en Windows, por lo que con muchas pruebas y errores y un poco de ayuda del comentario de @mdaniel, se me ocurrió la siguiente solución:

Creé un archivo por lotes de Windows que contiene una línea: @python <path-to-script> %*y hice referencia a ese archivo con la ruta completa command:en exec:.

Tuve que usarlo %*porque el script Python toma parámetros.

@evita que Windows repita este comando en la consola cuando se ejecuta el lote.

No pude hacerlo command: <path-to-python>\python <path-to-script>porque Kubernetes todavía se quejaba de que no podía encontrar el ejecutable con ese nombre.

Además, como nota al margen, si utiliza variables de entorno de Windows como %userprofile%en kubeconfig, es necesario hacer referencia a ellas entre comillas simples.

información relacionada