Springboot使用fabric8调用Kubernetes Api(token方式)

fabric8官方Github地址

其中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
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,下面是集成 `io.fabric8 kubernetes-client` 的步骤: 1. 在 `pom.xml` 文件中加入 `io.fabric8` 的依赖: ```xml <dependency> <groupId>io.fabric8</groupId> <artifactId>kubernetes-client</artifactId> <version>4.13.0</version> </dependency> ``` 2. 创建 `KubernetesConfig` 类,用于配置 Kubernetes 的连接参数,例如: ```java import io.fabric8.kubernetes.client.Config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class KubernetesConfig { @Value("${kubernetes.master}") private String kubernetesMaster; @Value("${kubernetes.api.token}") private String kubernetesApiToken; @Bean public Config kubernetesConfig() { Config config = new Config(); config.setMasterUrl(kubernetesMaster); config.setBearerToken(kubernetesApiToken); return config; } } ``` 其中,`kubernetes.master` 和 `kubernetes.api.token` 分别是 KubernetesAPI Server 地址和 API Token,可以通过配置文件或环境变量来设置。 3. 创建 `KubernetesClient` 类,用于创建 Kubernetes 的客户端对象,例如: ```java import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class KubernetesClientConfig { @Autowired private Config kubernetesConfig; @Bean public KubernetesClient kubernetesClient() { return new DefaultKubernetesClient(kubernetesConfig); } } ``` 其中,`KubernetesClient` 是 `io.fabric8 kubernetes-client` 中的核心类,用于与 Kubernetes API Server 进行交互。 现在,你就可以在 Spring Boot 应用中使用 `KubernetesClient` 对象来操作 Kubernetes 了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值