使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller

网友投稿 943 2022-11-02

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller

本文作者:黄鑫鑫 - Nocalhost 项目核心开发者腾讯云 CODING DevOps 研发工程师。曾负责过平安云主机及国家超算中心容器云平台等相关业务,熟悉虚拟机,容器,K8s 相关技术,专注于云原生领域。

简介

本文通过使用 Nocalhost 将本地开发机无缝连接到一个远程 Kubernetes 集群, 并在本地使用 Goland 来开发和调试 Kubernetes 集群中的 Apache APISIX ingress controller。Nocalhost 让我们可以使用现有的技术栈来顺畅地开发和调试类似 APISIX ingress controller 的 K8s 应用。

本文包括:

1. 在 IDE 中部署 APISIX Ingress controller 到远程 Kubernetes 集群

2. 使用 Nocalhost 开发和调试 Kubernetes 集群上的 APISIX ingress controller

环境准备:

准备一个可用的 Kubernetes 集群。可以使用任意拥有命名空间管理权限的 Kubernetes 集群确保本地已安装好 Helm v3.0+集群中已安装好 APISIX(APISIX Ingress controller 的依赖)GoLand IDE 2020.03+安装 Nocalhost JetBrains 插件安装 Go 1.13 及以上版本

部署 APISIX Ingress Controller

按照以下步骤,在 GoLand 中通过 Nocalhost 部署 APISIX Ingress Controller:

1. 在 GoLand 中打开 Nocalhost 插件

2. 选择将要部署 APISIX Ingress Controller 的命名空间

4. 在对话框中 Name 中输入:apisix-ingress-controller,在 Chart URL 中输入:https://charts.apiseven.***

部署完成后,我们通过在 IDE 内启用端口转发来测试 apisix-ingress-controller:

2. 添加端口转发 8080:8080

3. 在本地访问 http://127.0.0.1:8080/healthz 并检查结果

开发 APISIX Ingress Controller

Step 1. 进入 DevMode

2. 如果已经将源码克隆到本地,请选择源代码目录。否则通过输入 apisix-ingress-controller 的源码仓库地址

https://github.com/apache/apisix-ingress-controller.git 来让 Nocalhost 克隆源代码到本地

3. 等待操作完成,Nocalhost 将在进入 DevMode 后在 IDE 内打开远程终端

打开远程终端后,通过在远程终端中输入以下命令来启动 apisix-ingress-controller 进程:

go run main.go ingress --config-path conf/config-default.yaml

apisix-ingress-controller启动后,通过 http://127.0.0.1:8080/healthz 访问服务, 并检查结果:

Step 2. 修改代码并检查结果

现在我们来修改一下代码并看看效果:

1. 停止 apisix-ingress-controller 进程

2. 在 Goland 中搜索 healthz 并找到 router.go 文件。将 healthzResponse 的状态代码从 ok 更改为 Hello Nocalhost

3. 重新启动进程并在本地检查更改结果

可以看到我们无需重新构建镜像,几秒后便可以看到改动的结果:

Step 3. 结束开发模式

开发完毕后,我们可以通过以下步骤结束 DevMode:

Nocalhost 将会让 apisix-ingress-controller 结束 DevMode, 并重置 apisix-ingress-controller 到其原始版本。启用端口转发来看看结束 DevMode 后的结果:

需要注意的是,DevMode 模式下,所有代码更改都只在开发容器中生效。退出 DevMode 后,Nocalhost 将会将远程容器重置为原始状态(进入 DevMode 之前的版本)。通过这种方式,在退出 DevMode 以后,在 DevMode 模式下做的修改都不会影响原有环境。

调试 APISIX Ingress Controller

调试应用程序是一件麻烦的事,在 Kubernetes 集群中调试应用程序则更加麻烦。Nocalhost 可以帮助我们在调试 Kubernetes 集群中的程序时获得和在 IDE 中直接调试本地程序同样的体验。

Step 1. 开启远程调试

我们可以通过以下方式开始远程调试:

2. Nocalhost 将会先让 apisix-ingress-controller 进入DevMode, 并运行在 dev config  中定义的调试命令

Step 2. 设置断点

我们在 healthz 函数上设置一个断点, 设置好断点后,在浏览器中访问:

远程运行 APISIX Ingress Controller

Nocalhost 不仅仅可以用来远程调试应用,通过使用 Remote Run 功能,还可以让为我们快速地在 Kubernetes 集群中运行开发中的应用程序。

我们可以通过以下步骤使用 Remote Run 功能:

2. Nocalhost 将会先让 apisix-ingress-controller 进入 DevMode, 并运行在 dev config 定义的运行命令每次更改代码完代码后,Nocalhost 都会自动触发运行命令,将程序运行起来:

总结

通过以上步骤,我们已经学会如何使用 Nocalhost 来开发和调试 Kubernetes 集群中的 APISX ingress controller。使用 Nocalhost,我们不再需要等待缓慢的本地开发循环反馈,而是通过一种高效的云原生开发方式来得到快速的反馈。

引用

1. Apache APISIX getting started guide

https://apisix.apache.org/docs/ingress-controller/getting-started

2. Developing for Apache APISIX Ingress Controller

https://apisix.apache.org/docs/ingress-controller/development

CNCF概况(幻灯片)

扫描二维码联系我们!

CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。

CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。

上一篇:软件测试培训之评价自动化测试优劣的隐性指标
下一篇:软件测试培训之评价自动化测试优劣的常见指标
相关文章

 发表评论

暂时没有评论,来抢沙发吧~