我正在尝试使用teh fabric8 java客户端在Azure上的K8s群集上创建命名空间。这是代码
@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());
}
这给了我以下错误
我
o.fabric8.kubernetes.client.KubernetesClientException: Failure executing: POST at: "https://...api/v1/namespaces. Message: Unauthorized! Token may have expired! Please log-in again. Unauthorized
我错过了什么?
答案 0 :(得分: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
Fruits <- Fruits[order(Fruits$order.id), ] #sort data
Fruits$prev_Apples<-with(Fruits,
ave(
ave(Apples, customer.id, FUN=function(x) c(0, head(cumsum(x), -1))), #get running sum per customer.id
interaction(customer.id, order.id, drop=T),
FUN=max, na.rm=T) #find largest sum per index per seg
)
命令即可。这将在当前命名空间中创建一个服务帐户,并创建一个关联的秘密,用于保存API服务器的公共CA和签名的JSON Web令牌(JWT)。