Команда exec плагина kubernetes client-go не найдена в Windows 10

Команда exec плагина kubernetes client-go не найдена в Windows 10

Основная команда нашего клиента использует kubeconfig с аутентификацией client-go, выполняя скрипт python для получения токена. Все они используют Mac. Я использую Windows с mingw64. Как бы я ни пытался указать путь к этому скрипту: прямые слеши с буквой диска между слешами или классический стиль Windows (даже если он присутствует в PATH), даже если я помещаю скрипт в тот же каталог, что и файл конфигурации kube, и не указываю никакого пути, я получаю Unable to connect to the server: getting credentials: exec: executable <our script name> not found. Я могу выполнить этот скрипт без указания пути к нему из CLI. Я просто пытаюсь kubectl get pods. Соответствующий user:фрагмент:

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

Вопрос: как указать исполняемый файл в разделе exec kubeconfig в Windows?

решение1

Kubernetes client-go уже имеет вспомогательные методы для аутентификации с использованием kubeconfig. Он содержит два варианта с хорошими примерами:

Я бы рекомендовал использовать два встроенных вспомогательных метода вместо создания пользовательского варианта. Возможно, вам захочется добавить аргумент, чтобы можно было переключаться между ними, например, использовать внекластерный метод при локальном запуске в Windows и внутрикластерный метод, когда приложение (если ваш код является приложением?) работает как служба в кластере.

решение2

Документации по использованию kubeconfig под Windows очень мало, поэтому методом проб и ошибок, а также с небольшой помощью комментария @mdaniel я пришел к следующему решению:

Я создал пакетный файл Windows, содержащий одну строку: @python <path-to-script> %*и сослался на этот файл с полным путем command:в exec:.

Мне пришлось использовать его, %*потому что скрипт Python принимает параметры.

@не позволяет Windows выводить эту команду в консоль при запуске пакетной обработки.

Я не смог этого сделать, command: <path-to-python>\python <path-to-script>потому что Kubernetes все равно жаловался, что не может найти исполняемый файл с таким именем.

Также, в качестве примечания, если вы используете переменные среды Windows, такие как %userprofile%kubeconfig, на них необходимо ссылаться в одинарных кавычках.

Связанный контент