kubernetes client-go 플러그인 exec 명령을 Windows 10에서 찾을 수 없습니다.

kubernetes client-go 플러그인 exec 명령을 Windows 10에서 찾을 수 없습니다.

클라이언트의 핵심 팀은 Python 스크립트를 실행하는 클라이언트 이동 인증과 함께 kubeconfig를 사용하여 토큰을 얻습니다. 그들은 모두 Mac을 사용합니다. 저는 mingw64와 함께 Windows를 사용합니다. 해당 스크립트에 대한 경로를 어떻게 지정하려고 해도: 슬래시 사이에 드라이브 문자가 있는 슬래시 또는 클래식 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

질문: Windows에서 kubeconfig의 exec 섹션에서 실행 파일을 지정하는 방법은 무엇입니까?

답변1

Kubernetes client-go에는 이미 kubeconfig를 사용한 인증을 위한 도우미 메서드가 있습니다. 여기에는 좋은 예가 포함된 두 가지 변형이 포함되어 있습니다.

사용자 정의 변형을 롤링하는 대신 두 가지 기본 제공 도우미 메서드를 사용하는 것이 좋습니다. 두 가지 사이를 전환할 수 있도록 인수를 추가할 수도 있습니다. 예를 들어 Windows에서 로컬로 실행할 때는 클러스터 외부를 사용하고 앱(코드가 앱인 경우)이 서비스로 실행될 때는 클러스터 내를 사용합니다. 클러스터에서.

답변2

Windows에서 kubeconfig를 사용하는 방법에 대한 문서가 거의 없으므로 많은 시행착오와 @mdaniel의 의견을 통해 약간의 도움을 받아 다음 솔루션을 생각해냈습니다.

한 줄이 포함된 Windows 배치 파일을 만들고 아래 @python <path-to-script> %*에 전체 경로가 있는 해당 파일을 참조했습니다 .command:exec:

%*Python 스크립트가 매개변수를 사용하기 때문에 사용해야 했습니다 .

@배치를 실행할 때 Windows가 콘솔에 이 명령을 에코하지 않도록 합니다.

command: <path-to-python>\python <path-to-script>kubernetes가 여전히 그런 이름의 실행 파일을 찾을 수 없다고 불평했기 때문에 할 수 없었습니다 .

또한 참고로 %userprofile%kubeconfig와 같은 Windows 환경 변수를 사용하는 경우 작은따옴표 안에서 참조해야 합니다.

관련 정보