Comando exec do plugin kubernetes client-go não encontrado no Windows 10

Comando exec do plugin kubernetes client-go não encontrado no Windows 10

A equipe principal do nosso cliente usa kubeconfig com autenticação client-go executando um script python para obter o token. Todos eles usam Macs. Eu uso Windows com mingw64. Não importa como eu tente especificar o caminho para esse script: barras com letra de unidade entre barras ou estilo clássico do Windows (mesmo que esteja presente em PATH), mesmo se eu colocar o script no mesmo diretório do arquivo de configuração do kube e não ' Se eu não especificar nenhum caminho, recebo Unable to connect to the server: getting credentials: exec: executable <our script name> not found. Posso executar este script sem especificar o caminho para ele na CLI. Só estou tentando kubectl get pods. Trecho 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

Pergunta: como especificar o executável na seção exec do kubeconfig no Windows?

Responder1

O cliente Kubernetes já possui métodos auxiliares para autenticação usando kubeconfig. Ele contém duas variantes com bons exemplos:

Eu recomendaria usar dois métodos auxiliares integrados em vez de lançar uma variante personalizada. Talvez você queira adicionar um argumento para poder alternar entre os dois, por exemplo, usando fora do cluster ao executar localmente no Windows e no cluster quando o aplicativo (se o seu código for um aplicativo?) estiver sendo executado como um serviço no aglomerado.

Responder2

Há pouca documentação sobre o uso do kubeconfig no Windows, então, com muitas tentativas e erros e uma pequena ajuda do comentário de @mdaniel, encontrei a seguinte solução:

Criei um arquivo em lote do Windows que contém uma linha: @python <path-to-script> %*e referenciei esse arquivo com o caminho completo command:em exec:.

Tive que usar %*porque o script python leva parâmetros.

@impede que o Windows ecoe este comando no console ao executar o lote.

Não consegui command: <path-to-python>\python <path-to-script>porque o kubernetes ainda reclamava que não conseguia encontrar o executável com esse nome.

Além disso, como observação lateral, se você usar variáveis ​​de ambiente do Windows como %userprofile%em kubeconfig, elas precisam ser referenciadas entre aspas simples.

informação relacionada