在 Kubernetes 中使用 Nocalhost 开发 APISIX Ingress Controller

语言: CN / TW / HK

C T O

   

   

 

Go Rust Python Istio containerd CoreDNS Envoy etcd Fluentd Harbor Helm Jaeger Kubernetes Open Policy Agent Prometheus Rook TiKV TUF Vitess Argo Buildpacks CloudEvents CNI Contour Cortex CRI-O Falco Flux gRPC KubeEdge Linkerd NATS Notary OpenTracing Operator Framework SPIFFE SPIRE     Thanos

在 Kubernetes 中使用 Nocalhost 开发 APISIX Ingress Controller

本文将引导您使用 Nocalhost 将本地开发机器无缝连接到远程 Kubernetes 集群,从而允许您使用 IDE 开发和调试 Apache APISIX Ingress Controller 。使您能够使用现有技能轻松开发和调试远程应用程序。

先决条件

  • 在您的工作站中准备一个可用的 Kubernetes 集群。您可以使用您拥有命名空间管理员权限的任何 Kubernetes 集群。
  • 已安装 Helm v3.0+
  • GoLand IDE 2020.03+ (在本文中使用 GoLand 2021.2
  • 安装 Nocalhost JetBrains 插件
  • 安装 Go 1.13 或更高版本

部署 Apache APISIX 入口控制器

我将通过 Nocalhost GoLand 中部署 Apache APISIX Ingress Controller

  • GoLand 中打开 Nocalhost 插件
  • 使用集群检查器选择要部署的命名空间。

  • 右键单击选定的命名空间,选择 Deploy Application ,然后选择 Helm Repo 作为安装方法。
  • 在以下对话框中,输入: apisix-ingress-controllerasName https://charts.apiseven.comas Chart URL

让我们 apisix-ingress-controller 通过在 IDE 中启用端口转发来测试部署后:

  • 在集群检查器中找到 apisix-ingress-controller 工作负载,右键单击并选择 Port Forward
  • 添加端口转发 8080:8080
  • 访问 http://127.0.0.1:8080/healthz 本地并检查结果

开始开发

第 1 步:启动开发模式

  • apisix-ingress-controller 在集群检查器中右键单击部署,选择 Start DevMode
  • 如果您已经在本地克隆,请选择您的源代码目录,或者通过输入 apache/apisix-ingress-controller 存储库 URL Nocalhost 为您克隆源代码
  • 等待操作, Nocalhost 进入 DevMode 后会在 IDE 内打开远程终端

现在 apisix-ingress-controller 通过在远程终端中输入以下命令来启动该过程:

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

启动后,通过访问本地访问服务并检查结果。 apisix-ingress-controllerhttp://127.0.0.1:8080/healthz

第 2 步:更改代码并检查结果

现在我将进行一些代码更改并检查结果。

  • 停止 apisix-ingress-controller 进程
  • 搜索 healthz 并找到该 router.go 文件。 healthzResponse 将状态码从更改 ok Hello Nocalhost
  • 再次启动该过程并在本地检查更改结果

步骤 3. 结束 DevMode

现在关闭开发窗口并结束 DevMode

  • 右键单击 apisix-ingress-controller 集群检查器中的
  • 选择 End DevMode Nocalhost apisix-ingress-controller 结束开发模式,并将 apisix-ingress-controllerPod 重置为其原始版本。启用端口转发并在结束 DevMode 后检查结果。

代码变更:开发模式下的所有代码变更只会在开发容器中生效。

退出开发模式后, Nocalhost 会将远程容器重置为原始状态(代码修改前)。这样,退出开发模式后,代码的修改不会对原有环境造成任何改变或影响。

调试

调试一个应用程序并不容易,在 Kubernetes 集群中调试一个应用程序就更难了。 Nocalhost 可提供与在远程 Kubernetes 集群中调试时在 IDE 中使用的相同的调试体验来提供帮助。

第一步:开始远程调试

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

  • 右键单击 apisix-ingress-controller 并选择 Remote Debug
  • Nocalhost apisix-ingress-controller 进入 DevMode 并运行 dev config 自动定义的调试命令

第 2 步:单步执行断点

healthz 现在在函数上设置一个断点。将鼠标悬停在行号左侧,然后单击红点。设置好后, http://127.0.0.1:8080/healthz 在本地浏览器中访问, GoLand 应该会弹出到前台。单击播放按钮关闭请求,进度应继续加载。

另外,由于我启用了 dev.hotReload ,所以每次更改代码时, Nocalhost 都会自动重新运行调试命令。这在您频繁更改和调试代码时非常有用。

远程运行

不仅仅是远程调试, Nocalhost 还提供了一种在 Kubernetes 集群中运行 Go 服务的简单方法,以及热重载!

您可以通过以下方式使用远程运行功能:

  • 右键单击 apisix-ingress-controller 集群检查器,选择 Remote Run
  • Nocalhost apisix-ingress-controller 进入开发模式并 dev config 自动运行定义的启动命令

现在每次进行代码更改时, Nocalhost 都会自动触发运行命令。您现在无需复杂配置即可享受 Go 的热重载。

结论

我们已经学习了如何使用 Nocalhost Kubernetes 中开发和调试 APISIX Ingress Controller 。现在,我们可以通过即时反馈循环和高效的云原生开发环境快速迭代,而不是等待缓慢的本地开发过程。

Apache APISIX

Apache APISIX 是一个云原生微服务 API 网关

参考地址 [1]

参考资料

[1]

参考地址: https://apisix.apache.org