Springboot使用fabric8调用Kubernetes Api(token方式)
fabric8官方Github地址其中kubernetes-examples模块中有大量示例代码可以参考一、引入依赖<dependency><groupId>io.fabric8</groupId><artifactId>kubernetes-client</artifactId><version>5.0.0</vers
·
其中kubernetes-examples模块中有大量示例代码可以参考
一、引入依赖
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>
<version>5.0.0</version>
</dependency>
二、获取token
要调用kubernetes的api需要认证,认证方式有多种,这里介绍token方式
1、创建一个具有管理员权限的账户
创建账户咱们还是通过kubectl运行yml文件方式,k8s-admin.yml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-admin
namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: dashboard-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
执行命令即可创建: kubectl apply -f k8s-admin.yaml
2、获取新建账户的token
第一步: kubectl -n kube-system get sa dashboard-admin -o yaml
第二步: kubectl describe secret dashboard-admin-token-8h9j8 -n kube-system
三、调用测试
package com.imysh.zmy.k8s.api.service;
import io.fabric8.kubernetes.api.model.NamespaceList;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;
/**
* @author zhangmy
* @date 2022/2/17 16:59
* @description
*/
public class ApiService {
public static void main(String[] args) {
String base64Token = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImNlQU44STJjX0c3bjhpYTY0NjBJYlpkSmc2dHExUUR5Vk8wblNSdkRjRFEifQ" +
".eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJ" +
"rdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4t" +
"OGg5ajgiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3" +
"ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMDQ2NTU2ZmEtNWZmZC00MjkxLWJjMzgtNTk1NWZhMG" +
"U0NjExIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.pPh5dXVocHUB-x72B3lFhU" +
"AcjGFFaEyPaD6CWmCCaVV_O-bURt9SmBY6T1GezIZTKGHOBxOGH9FS39x9fa_yCS5XMndW9pC8KGRoAKf0pATKalurYpym_9Z3r0yreO4-eUOl5" +
"MBQClh1YuwQDmWzj2omgW86uoZE-YdJ-qEpivruQXxlX2IoD027tYquy93dbczrFCFF8sRzJdGUGZDOAVGRAIBhsKXfdXirwAiM9jAry0KjtfO0G" +
"4seU5wUFqtHPAmw4_4xQEAaPfKHJ9Dyy7bGxHSa0mIxLtCuHjaxJ473Z5h_0Zflw0YvALmALJDCBrhJYjiKLAmXLRriImvkHg";
String masterUrl = "https://192.168.0.110:6443";
Config config = new ConfigBuilder()
.withTrustCerts(true)
.withMasterUrl(masterUrl)
.withOauthToken(base64Token)
.build();
KubernetesClient client = new DefaultKubernetesClient(config);
// 查看命名空间
NamespaceList namespaceList = client.namespaces().list();
namespaceList.getItems()
.forEach(namespace ->
System.out.println(namespace.getMetadata().getName() + ":" + namespace.getStatus().getPhase()));
}
}
运行效果:
可以通过Kuboard管理界面看到所有的 命名空间
其他的调用参考 官方示例
更多推荐
已为社区贡献1条内容
所有评论(0)