本文作者:黄鑫鑫 – Nocalhost 我的项目外围开发者
腾讯云 CODING DevOps 研发工程师。硕士毕业于中山大学数据迷信与计算机学院,曾负责过安全云主机及国家超算核心容器云平台等相干业务,相熟虚拟机,容器,K8s 相干技术,专一于云原生畛域
简介
本文通过应用 Nocalhost 将本地开发机无缝连贯到一个近程 Kubernetes 集群,并在本地应用 Goland 来开发和调试 Kubernetes 集群中的 Apache APISIX ingress controller
。Nocalhost 让咱们能够应用现有的技术栈来顺畅地开发和调试相似 APISIX ingress controller
的 K8s 利用。
本文包含:
- 在 IDE 中部署
APISIX Ingress controller
到近程 Kubernetes 集群 - 应用 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:
- 在 GoLand 中关上 Nocalhost 插件
- 抉择将要部署 APISIX Ingress Controller 的命名空间
- 右键点击选定的命名空间, 抉择
Deploy Application
, 而后抉择Helm Repo
作为装置办法 - 在对话框中
Name
中输出:apisix-ingress-controller
,在Chart URL
中输出:https://charts.apiseven.com
部署实现后,咱们通过在 IDE 内启用端口转发来测试 apisix-ingress-controller
:
- 在 Nocalhost 插件的 Workloads 中找到
apisix-ingress-controller
,右键点击并抉择Port Forward
- 增加端口转发
8080:8080
- 在本地拜访
http://127.0.0.1:8080/healthz
并查看后果
开发 APISIX Ingress Controller
Step 1. 进入 DevMode
- 右键点击
apisix-ingress-controller
工作负载,抉择Start DevMode
- 如果曾经将源码克隆到本地,请抉择源代码目录。否则通过输出
apisix-ingress-controller
的源码仓库地址https://github.com/apache/apisix-ingress-controller.git
来让 Nocalhost 克隆源代码到本地 - 期待操作实现,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. 批改代码并查看后果
当初咱们来批改一下代码并看看成果:
- 进行
apisix-ingress-controller
过程 - 在 Goland 中搜寻 healthz 并找到 router.go 文件。将 healthzResponse 的状态代码从 ok 更改为 Hello Nocalhost
- 重新启动过程并在本地查看更改后果
能够看到咱们无需从新构建镜像,几秒后便能够看到改变的后果:
Step 3. 完结开发模式
开发结束后,咱们能够通过以下步骤完结 DevMode:
- 右键点击
apisix-ingress-controller
- 抉择并点击
End 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. 开启近程调试
咱们能够通过以下形式开始近程调试:
- 右键点击
apisix-ingress-controller
并抉择Remote Debug
- Nocalhost 将会先让 apisix-ingress-controller 进入 DevMode,并运行在
dev config
中定义的调试命令
Step 2. 设置断点
咱们在 healthz 函数上设置一个断点,设置好断点后,在浏览器中拜访 http://127.0.0.1:8080/healthz,会触发断点,GoLand 会跳到前台。点击调试相干按钮可对程序进行调试:
近程运行 APISIX Ingress Controller
Nocalhost 不仅仅能够用来近程调试利用,通过应用 Remote Run
性能,还能够让为咱们疾速地在 Kubernetes 集群中运行开发中的应用程序。
咱们能够通过以下步骤应用 Remote Run
性能:
- 右键点击
apisix-ingress-controller
,并抉择Remote Run
- Nocalhost 将会先让
apisix-ingress-controller
进入DevMode
,并运行在dev config
定义的运行命令
每次更改代码完代码后,Nocalhost 都会主动触发运行命令,将程序运行起来:
总结
通过以上步骤,咱们曾经学会如何应用 Nocalhost 来开发和调试 Kubernetes 集群中的 APISX ingress controller。应用 Nocalhost,咱们不再须要期待迟缓的本地开发循环反馈,而是通过一种高效的云原生开发方式来失去疾速的反馈。
援用
- Apache APISIX getting started guide
- Developing for Apache APISIX Ingress Controller
一键开启云原生开发环境