在当今快速演进的云原生时代,Kubernetes 已经成为许多企业构建弹性且可扩展应用的首选解决方案。API7 企业版 提供了强大的安全性和流量管理的能力,并且具备极高的性能。API7 企业版支持您一键连接到 Kubernetes 服务注册中心,代理您在 Kubernetes 集群中部署的服务,下面我们来介绍如何使用 API7 企业版代理 Kubernetes 集群中的应用。
前置准备
- 安装 API7 企业版
注意:如果 API7 企业版没有在 Kubernetes 中部署,需要配置部署 API7 企业版机器的网络配置,确保 API7 企业版可以访问到 Kubernetes 中的上游 pod。
- 在 Kubernetes 中部署服务
如果你已经在 Kubernetes 中部署了一些服务,那么你可以忽略此步骤;如果没有,你可以运行下面的命令创建服务:
1# 创建一个新的 namespace
2kubectl create namespace api7ee
3
4kubectl create deployment httpbin --image=kennethreitz/httpbin:latest -n api7ee
5kubectl create service clusterip httpbin --tcp=80:80 -n api7ee
- 创建 Kubernetes 服务账户
API7 企业版需要此凭证去请求 Kubernetes 的 API 获取上游配置,所以我们需要创建一个 rbac 的资源,yaml 文件如下:
1 # rbac.yaml 2 apiVersion: rbac.authorization.k8s.io/v1 3 kind: ClusterRole 4 metadata: 5 name: api7-k8s-sd-watcher 6 rules: 7 - apiGroups: [""] 8 resources: ["endpoints"] 9 verbs: ["list", "watch"] 10 --- 11 apiVersion: rbac.authorization.k8s.io/v1 12 kind: ClusterRoleBinding 13 metadata: 14 name: api7-k8s-sd-watcher-binding 15 subjects: 16 - kind: ServiceAccount 17 name: api7-k8s-sd-sa 18 namespace: api7ee 19 roleRef: 20 kind: ClusterRole 21 name: api7-k8s-sd-watcher 22 apiGroup: rbac.authorization.k8s.io 23 --- 24 apiVersion: v1 25 kind: ServiceAccount 26 metadata: 27 name: api7-k8s-sd-sa 28 namespace: api7ee 29 --- 30 apiVersion: v1 31 kind: Secret 32 metadata: 33 name: api7-k8s-sd-secret 34 namespace: api7ee 35 annotations: 36 kubernetes.io/service-account.name: api7-k8s-sd-sa 37 type: kubernetes.io/service-account-token 38
创建 RBAC 资源并获取 Token。
1kubectl apply -f rbac.yaml -n api7ee 2kubectl get secrets api7-k8s-sd-secret -n api7ee -ojsonpath='{.data.token}' | base64 -d
在 API7 Enterprise 实现 Kubernetes 服务发现
连接 Kubernetes 服务注册中心
点击进入到我们已有的一个网关组中,并点击菜单左侧的服务注册中心进入;
点击新增服务注册中心连接按钮,选择 Kubernetes 发现类型,并填充 Kubernetes API 服务访问地址和令牌;
- 等待 API7 企业版连接服务注册中心成功后,可以看到健康的状态。
发布服务进行测试
点击进入到服务页面,创建服务并添加
/anything
路由;发布服务,并选择对应的上游:
- 发布成功后,使用
curl
直接进行测试即可。
结论
以上就是使用 API7 企业级网关代理 Kubernetes 集群中服务的步骤,如果你想了解更多有关 API7 企业版网关的功能,欢迎联系我们。