
本文作者:黄鑫鑫 - Nocalhost 项目核心开发者 腾讯云 CODING DevOps 研发工程师。曾负责过平安云主机及国家超算中心容器云平台等相关业务,熟悉虚拟机,容器,K8s 相关技术,专注于云原生领域。
简介
本文通过使用 Nocalhost 将本地开发机无缝连接到一个远程 Kubernetes 集群, 并在本地使用 Goland 来开发和调试 Kubernetes 集群中的 Apache APISIX ingress controller。Nocalhost 让我们可以使用现有的技术栈来顺畅地开发和调试类似 APISIX ingress controller 的 K8s 应用。
环境准备:
准备一个可用的 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:

Port Forwardhttp://127.0.0.1:8080/healthz并检查结果

开发 APISIX Ingress Controller
Step 1. 进入 DevMode
Start DevMode打开远程终端后,通过在远程终端中输入以下命令来启动 apisix-ingress-controller 进程:
go run main.go ingress --config-path conf/config-default.yaml
Step 2. 修改代码并检查结果
可以看到我们无需重新构建镜像,几秒后便可以看到改动的结果:

Step 3. 结束开发模式
End DevModeNocalhost 将会让 apisix-ingress-controller 结束 DevMode, 并重置 apisix-ingress-controller 到其原始版本。启用端口转发来看看结束 DevMode 后的结果:

需要注意的是,DevMode 模式下,所有代码更改都只在开发容器中生效。退出 DevMode 后,Nocalhost 将会将远程容器重置为原始状态(进入 DevMode 之前的版本)。通过这种方式,在退出 DevMode 以后,在 DevMode 模式下做的修改都不会影响原有环境。
调试 APISIX Ingress Controller
调试应用程序是一件麻烦的事,在 Kubernetes 集群中调试应用程序则更加麻烦。Nocalhost 可以帮助我们在调试 Kubernetes 集群中的程序时获得和在 IDE 中直接调试本地程序同样的体验。
Step 1. 开启远程调试
Remote Debugdev config中定义的调试命令

Step 2. 设置断点

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

点击阅读原文,一键开启云原生开发环境文章转载自Nocalhost。点击这里阅读原文了解更多。


CNCF概况(幻灯片)

扫描二维码联系我们!
CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。

文章转载自CNCF,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




