使用 API7 企业版代理 Kubernetes 集群中的应用

在当今快速演进的云原生时代,Kubernetes 已经成为许多企业构建弹性且可扩展应用的首选解决方案。API7 企业版 提供了强大的安全性和流量管理的能力,并且具备极高的性能。API7 企业版支持您一键连接到 Kubernetes 服务注册中心,代理您在 Kubernetes 集群中部署的服务,下面我们来介绍如何使用 API7 企业版代理 Kubernetes 集群中的应用。

前置准备

  1. 安装 API7 企业版

注意:如果 API7 企业版没有在 Kubernetes 中部署,需要配置部署 API7 企业版机器的网络配置,确保 API7 企业版可以访问到 Kubernetes 中的上游 pod。

  1. 在 Kubernetes 中部署服务

如果你已经在 Kubernetes 中部署了一些服务,那么你可以忽略此步骤;如果没有,你可以运行下面的命令创建服务:

1
2
3
4
5
# 创建一个新的 namespace
kubectl create namespace api7ee

kubectl create deployment httpbin --image=kennethreitz/httpbin:latest -n api7ee
kubectl create service clusterip httpbin --tcp=80:80 -n api7ee
  1. 创建 Kubernetes 服务账户
  • API7 企业版需要此凭证去请求 Kubernetes 的 API 获取上游配置,所以我们需要创建一个 rbac 的资源,yaml 文件如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
          # rbac.yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
    name: api7-k8s-sd-watcher
    rules:
    - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["list", "watch"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
    name: api7-k8s-sd-watcher-binding
    subjects:
    - kind: ServiceAccount
    name: api7-k8s-sd-sa
    namespace: api7ee
    roleRef:
    kind: ClusterRole
    name: api7-k8s-sd-watcher
    apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
    name: api7-k8s-sd-sa
    namespace: api7ee
    ---
    apiVersion: v1
    kind: Secret
    metadata:
    name: api7-k8s-sd-secret
    namespace: api7ee
    annotations:
    kubernetes.io/service-account.name: api7-k8s-sd-sa
    type: kubernetes.io/service-account-token

    - 创建 RBAC 资源并获取 Token。

    ```Shell
    kubectl apply -f rbac.yaml -n api7ee
    kubectl get secrets api7-k8s-sd-secret -n api7ee -ojsonpath='{.data.token}' | base64 -d

在 API7 Enterprise 实现 Kubernetes 服务发现

连接 Kubernetes 服务注册中心

  1. 点击进入到我们已有的一个网关组中,并点击菜单左侧的服务注册中心进入;

  2. 点击新增服务注册中心连接按钮,选择 Kubernetes 发现类型,并填充 Kubernetes API 服务访问地址和令牌;

PA_1

  1. 等待 API7 企业版连接服务注册中心成功后,可以看到健康的状态。

PA_2

发布服务进行测试

  1. 点击进入到服务页面,创建服务并添加 /anything 路由;

  2. 发布服务,并选择对应的上游:

PA_3

  1. 发布成功后,使用 curl 直接进行测试即可。

结论

以上就是使用 API7 企业级网关代理 Kubernetes 集群中服务的步骤,如果你想了解更多有关 API7 企业版网关的功能,欢迎联系我们