今天我将演示如何将 OpenResty Edge 作为 Kubernetes 集群的一个功能强大的 ingress controller 使用。也就是说,当后端应用程序是运行在 Kubernetes 容器内部的时候,如何借助 OpenRest Edge 管理其流量。
在本教程中,我们将在一个 Edge 应用中创建一个 Kubernetes 上游。Edge 网关服务器可以运行在 Kubernetes 集群内部,也可以在其外部运行。Edge 的 Admin 服务器会通过其 API 服务器持续监控 Kubernetes 集群。而且会响应 Kubernetes 节点(或容器)的在线和离线事件,自动更新上游服务器列表。
申请试用 OpenResty Edge如何创建及使用 Kubernetes 上游让我们进入 OpenResty Edge 的 Admin Web 控制台。这就是我们控制台的样本部署。每个用户都有自己的本地部署。
首先,我们需要在一个专门的网关分区中设置一个可以连接到 Kubernetes 服务的网关服务器。
跳转到网关分区页面。
我们已经创建了一个网关分区,名为 kubernetes-test-partition。
分区内包含一个名为 kubernetes-test-cluster 的网关集群。
我们需要一个单独的网关分区,因为不是所有的网关服务器都能连接到我们的 Kubernetes 服务。跳转到 kubernetes-test-cluster 集群。
在这个网关集群中已经定义了一个网关服务器。我们需要确保这个网关服务器可以连接到我们的 Kubernetes 集群。
创建 Kubernetes 集群我们在 Edge 应用中创建新的 Kubernetes 上游之前,需要先在全局范围内注册 Kubernetes 集群。跳转到 Kubernetes 页面。
点击这个按钮来添加一个新的 Kubernetes 集群。
为了接收新通知,OpenResty Edge Admin 需要建立与 Kubernetes 的 HTTPS API 服务器的连接。输入 Kubernetes API 服务器的主机名或 IP 地址。
然后输入端口号。
接下来输入 kubernetes 集群的名称。
停用 SSL 证书验证。这是因为我们的 Kubernetes API 服务器的证书是自签的。
我们还需要一个 token 来访问 Kubernetes API 服务器,这个 token 要有足够的权限。
点击 “How to generate this token” 这个链接可以打开一个弹窗。
这里说明了如何从你自己的 Kubernetes 部署中生成一个 token。 现在让我来演示一下这个过程。关闭这个弹窗。
我们需要准备一个名为 token.yml 的配置文件。下面是这个文件的一个样本。可以用它来创建一个具有读取权限的账户,以访问
命名空间、
服务、
端点,以及
Pods 对象。
使用以下命令创建账户。1kubectl apply -f /root/token.yml
最后,我们使用下面的命令来获取账户的 token。
“token:” 后面的文字就是我们需要的 token。
现在我们有了一个访问 Kubernetes API 服务器的 token。将我们刚刚创建的 API token 粘贴到这里。
单击 “创建” 按钮。
通过 OpenResty Edge 管理所有应用程序创建 Kubernetes 上游到这一步我们已经在全局范围内注册了 Kubernetes 集群。现在是时候在 Edge 应用程序中创建一个上游来利用这个集群了。
跳转到应用程序列表页。
我们已经准备了一个名为 www.kubernetes-edge-test.com 的 Edge 应用程序。
这个应用程序被映射到我们之前展示的网关分区。
进入这个应用。
进入 “Upstreams” 页面。
点击新建 Kubernetes 上游。
输入 Kubernetes 上游的名称 “my kubernetes backend”。
选择一个 Kubernetes 集群作为目标。
选择我们刚刚创建的那个 Kubernetes 集群。
选择目标 Kubernetes 的命名空间。
选择名为 “default” 的命名空间。你也可以选择其他的命名空间。
从列表中选择一个 Kubernetes 服务。
选择 “test-hello” 服务。
以及服务的端口。
在我们这个例子中是 80 端口。
保存新的上游。
现在我们成功创建了一个新的 Kubernetes 上游。
上游服务器地址显示在这里。
它们是从 Kubernetes 集群自动同步的 Kubernetes 节点或容器。
创建页面规则使用 Kubernetes 上游就像普通的上游一样,我们仍然需要创建一个新的页面规则来使用这个新的 Kubernetes 上游。跳转到页面规则页面。
点击这个 “新建规则” 按钮。
启用 Proxy 这个动作。
点击这个 “代理到上游” 下拉列表。
选择我们刚刚创建的 Kubernetes 上游 “my kubernetes backend”。
保存这个页面规则。
像往常一样,需要发布一个新的版本来推送我们刚才的改动。
点击这个按钮。
发布!
同步完成。
现在,新的页面规则已经被推送到所有的网关集群和服务器。
这些配置的变化不需要服务器重载、重启或二进制升级。所以它是非常高效和可扩展的。
通过 OpenResty Edge 管理所有应用程序测试接下来,我们会在相应分区中找到 Edge 网关服务器来做实际的测试。跳转到网关集群页面。
找到相应的网关服务器。
请记住它的公共 IP 地址是以 .196 结尾的。
复制这个 IP 地址,以便我们可以在命令行上使用它。在终端上,尝试通过这个网关服务器访问 Kubernetes 服务。
注意,我们使用的是刚才复制的网关服务器的 IP 地址。
运行这个命令。
可以看到对这个服务的访问是成功的。在本教程余下的部分里,我们将修改 Kubernetes 服务的配置。
我们将临时把 Kubernetes 节点的数量增加到 3 个。1kubectl scale --replicas=3 deployment test-hello
扩展成功完成。
让我们检查一下新的节点。1kubectl get pods -o wide
现在确实有 3 个 Kubernetes 节点。
Edge Admin 会自动更新 Kubernetes 上游反映这个变化。回到我们的 Edge 应用程序页面来检查一下。
返回到上游页面。
刷新 Upstreams 页面更新数据。
耶! Kubernetes 上游确实有 3 台服务器了!
同样地,如果 Kubernetes 节点较少,Edge Admin 也会自动更新上游。这就是我今天要讲的内容。
如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。