2017-09-05 4 views
0

로컬 컴퓨터에서 minikube를 구성하고 외부에서 kubernetes를 사용하려고합니다. 나는 kubernetes에서 서비스 계정을 만들었고 그 비밀을 사용하여 아래 명령을 사용하여 액세스 토큰을 얻을 수 있습니다.fabric8 Java 클라이언트를 사용하여 kubernetes 서비스 계정 액세스 토큰을 얻는 방법은 무엇입니까?

kubectl get secret <service-account-secret> -o yaml -n mynamespace 

제 질문은 어떻게 런타임에 fabric8 Java 클라이언트를 사용하여 수행 할 수 있습니까? 내가 원하는 것은 서비스 계정의 비밀을 매개 변수로 제공하여 액세스 토큰을 얻는 것입니다.

설정을 시작합니다.

Config config = new ConfigBuilder().withMasterUrl(masterURL) 
       .withClientCertFile(certFile).withOauthToken(serviceAccountAccessToken).build(); 

위에서 설명한 fabricA Java 클라이언트를 사용하여 serviceAccountAccessToken을 얻는 방법을 알고 있습니까?

답변

0

포드 내에서 서비스 계정 토큰은 /var/run/secrets/kubernetes.io/serviceaccount/tokenas seen here으로 볼륨 탑재됩니다. fabric8 Client이 날 리드 경로가 (적어도 v2.6.2)에 하드 코딩되어 있다는 사실은 하나의 단지 withOauthToken() 전화를 생략 아마도 경우 Client 그냥 그것은 여부를 약간 불분명 ™

를 작업 할 수 있다고 생각합니다 코드는 클러스터의 외부 를 실행 할 것으로 예상된다 제공 니펫을하지만, 그럼 경우에 당신은 당신이 클라이언트는 이미 않는 Secret

+0

매튜가, 감사합니다. 클러스터의 내부와 외부 모두에서이를 지원해야합니다. 어떻게해야합니까? –

0

을 획득 할 수 있도록 API에 인증을 제공하는 작은 닭이 먼저 냐 달걀이 먼저 냐의 문제가 너를 위해서. 당신은 그냥 빈 구성 개체를 만들 경우

은 :

Config config = new ConfigBuilder().build(); 

또는 같은 클라이언트를 만듭니다 포드 내에서

KubernetesClient client = new DefaultKubernetesClient(); 

, 자동으로 당신을위한 토큰을 읽습니다.

당신이 다른 곳을 통과해야하는 경우

, 당신은 할 수 있습니다 응답에 대한

String token = config.getOauthToken(); 

또는

String token = client.getConfiguration().getOauthToken();