2017-12-26 60 views
0

teh fabric8 java 클라이언트를 사용하여 Azure의 K8s 클러스터에 네임 스페이스를 만들려고합니다. 여기이 나에게 다음과 같은 오류 내가K8S에서 새 네임 스페이스를 만들려고 할 때 무단 오류

o.fabric8.kubernetes.client.KubernetesClientException: Failure executing: POST at: "https://...api/v1/namespaces. Message: Unauthorized! Token may have expired! Please log-in again. Unauthorized 

어떻게 그리워 않았다

을 제공

@Before 
    public void setUpK8sClient() { 
    apiServer = ""; 
    config = new ConfigBuilder().withMasterUrl(apiServer).withUsername("user").withPassword("pass").build(); 
    client = new DefaultKubernetesClient(config); 
    System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true"); 


    } 

    @Test 
    public void getClientVersion() { 
    System.out.println("Client version "+client.getApiVersion()); 
    } 

    @Test 
    public void createNamespace() { 
    Namespace myns = client.namespaces().createNew() 
     .withNewMetadata() 
     .withName("myns") 
     .addToLabels("a", "label") 
     .endMetadata() 
     .done(); 
    System.out.println("Namespace version " + myns.getStatus()); 
    } 

코드는?

+2

kubectl을 통해 이러한 자격 증명을 사용하여 작동하는지 확인할 수 있습니까? – fiunchinho

+0

감사합니다. 그 자격 증명은 나를 위해 작동하지 않았다. 그래서 나는 빌더에서 사용했던 토큰을 준 kubectl 설정보기를 시도했다. API에서이 oAuth 토큰을 얻으려면 어떻게해야할까요? –

+0

님이 도움이 되셨습니까? – fiunchinho

답변

1

Azure에서 작업하고 있으므로 the instructions to configure kubectl을 따르고 kubeconfig 파일의 토큰을 사용하여 fabric8 클라이언트에서 클러스터에 액세스 할 수 있습니다.

해당 토큰은 관리자 토큰 일 수 있으므로 fabric8 클라이언트가 수행 할 수있는 작업을 제한하려는 경우 새 자격 증명 (사용자/비밀번호)을 만들 수도 있습니다. API requests are tied to either a normal user or a service account, or are treated as anonymous requests.

  • 일반 사용자는 외부 독립 서비스 (개인 키, Google 계정과 같은 타사, 사용자 이름과 암호의 목록도 파일)에 의해 관리되는 것으로 가정한다. Kubernetes에는 일반 사용자 계정을 나타내는 개체가 없습니다.
  • 서비스 계정은 특정 네임 스페이스에 바인딩 된 Kubernetes API에 의해 관리되는 사용자입니다. 서비스 계정은 비밀로 저장된 자격 증명 집합과 연결됩니다. 수동으로 서비스 계정을 만들려면 kubectl create serviceaccount ACCOUNT_NAME 명령을 사용하십시오. 그러면 현재 네임 스페이스에 서비스 계정이 생성되고 API 서버의 공용 CA와 서명 된 JSON 웹 토큰 (JWT)을 보유하는 연관된 비밀이 생성됩니다.