配置 Kubernetes 服务发现
与直接配置上游不同,你可以使用 Kubernetes 服务发现(Service Discovery)来动态探测 Kubernetes 集群中的上游节点。这样,当你的服务在 Kubernetes 中扩缩容时,API7 网关可以自动发现并使用最新的服务端点。
本指南将向你展示如何配置 Kubernetes 服务发现以动态管理上游节点。
信息
服务(Service)一旦发布,便无法直接在已配置的上游节点和服务发现之间切换。你必须通过金丝雀发布来配置。
前提条件
- 安装 API7 企业版。
- 网关组中至少包含一个网关实例。
- 拥有一个正在运行的 Kubernetes 集群。
创建服务账户
为了让 API7 企业版能够访问 Kubernetes API Server 并发现服务,你需要创建一个具有适当权限的服务账户。
创建服务账户和 ClusterRole
- 创建一个 YAML 文件(例如
api7-service-account.yaml),包含以下内容:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: api7-service-discovery
namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: api7-service-discovery
rules:
- apiGroups:
- ""
resources:
- endpoints
- pods
- services
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: api7-service-discovery
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: api7-service-discovery
subjects:
- kind: ServiceAccount
name: api7-service-discovery
namespace: default
- 应用该配置:
kubectl apply -f api7-service-account.yaml