Der Exec-Befehl für das Kubernetes-Client-Go-Plugin wurde unter Windows 10 nicht gefunden

Der Exec-Befehl für das Kubernetes-Client-Go-Plugin wurde unter Windows 10 nicht gefunden

Das Kernteam unseres Kunden verwendet kubeconfig mit Client-Go-Authentifizierung und führt ein Python-Skript aus, um ein Token zu erhalten. Alle verwenden Macs. Ich verwende Windows mit mingw64. Egal, wie ich versuche, den Pfad zu diesem Skript anzugeben: Schrägstriche mit Laufwerksbuchstaben zwischen den Schrägstrichen oder im klassischen Windows-Stil (obwohl dieser in PATH vorhanden ist), selbst wenn ich das Skript in dasselbe Verzeichnis wie die Kube-Konfigurationsdatei lege und keinen Pfad angebe, erhalte ich Unable to connect to the server: getting credentials: exec: executable <our script name> not found. Ich kann dieses Skript problemlos ausführen, ohne den Pfad über die CLI anzugeben. Ich versuche nur kubectl get pods. Relevanter user:Ausschnitt:

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

Frage: Wie gebe ich eine ausführbare Datei im Exec-Abschnitt von Kubeconfig in Windows an?

Antwort1

Kubernetes client-go verfügt bereits über Hilfsmethoden zur Authentifizierung mit kubeconfig. Es enthält zwei Varianten mit guten Beispielen:

Ich würde empfehlen, zwei integrierte Hilfsmethoden zu verwenden, anstatt eine benutzerdefinierte Variante zu erstellen. Vielleicht möchten Sie ein Argument hinzufügen, damit Sie zwischen den beiden wechseln können, z. B. „Out-of-Cluster“ verwenden, wenn es lokal unter Windows ausgeführt wird, und „In-Cluster“, wenn die App (wenn Ihr Code eine App ist?) als Dienst im Cluster ausgeführt wird.

Antwort2

Es gibt nur wenig Dokumentation zur Verwendung von kubeconfig unter Windows, daher bin ich nach viel Ausprobieren und ein wenig Hilfe durch den Kommentar von @mdaniel auf die folgende Lösung gekommen:

Ich habe eine Windows-Batchdatei erstellt, die eine Zeile enthält: @python <path-to-script> %*und habe auf diese Datei mit dem vollständigen Pfad darunter command:verwiesen exec:.

Ich musste es verwenden %*, weil das Python-Skript Parameter annimmt.

@verhindert, dass Windows diesen Befehl bei der Batchausführung in der Konsole wiederholt.

Ich konnte das nicht tun, command: <path-to-python>\python <path-to-script>weil Kubernetes immer noch bemängelte, dass es die ausführbare Datei mit diesem Namen nicht finden könne.

Außerdem als Randbemerkung: Wenn Sie Windows-Umgebungsvariablen wie %userprofile%in kubeconfig verwenden, müssen diese in einfachen Anführungszeichen referenziert werden.

verwandte Informationen