乐趣区

关于网关:如何在-K8s-集群中使用-Nocalhost-开发-APISIX-Ingress

环境筹备

  • 筹备一个可用的 Kubernetes 集群。可应用任意领有命名空间管理权限的 Kubernetes 集群
  • 本地已装置好 Helm v3.0+
  • 集群中已装置好 Apache APISIX
  • GoLand IDE 2020.03+ (本文利用的是 2021.2 版本)
  • 装置 Nocalhost JetBrains plugin 插件
  • 装置 Go 1.13 或更高版本

部署 Apache APISIX Ingress Controller

在 GoLand 中通过 Nocalhost 部署 Apache APISIX Ingress Controller,操作如下:

  1. 在 GoLand 中关上 Nocalhost 插件
  2. 抉择将要部署 APISIX Ingress Controller 的命名空间
  3. 右键点击选定的命名空间, 抉择 Deploy Application , 而后抉择 Helm Repo 作为装置办法
  4. 在上面的对话框中:
  • Name 中输出:apisix-ingress-controller
  • Chart URL 中输出:https://charts.apiseven.com

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

  1. 在 Nocalhost 插件的 Workloads 中找到 apisix-ingress-controller,右键点击并抉择 Port Forward
  2. 增加端口转发 8080:8080
  3. 在本地拜访 http://127.0.0.1:8080/healthz 并查看后果

开发

步骤一:进入开发模式

  1. 右键点击 apisix-ingress-controller 工作负载,抉择 Start DevMode
  2. 如果您曾经将源码克隆到本地,请抉择您的源代码目录。否则通过输出仓库地址 https://github.com/apache/api… 来让 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 拜访服务,并查看后果。

步骤二:批改代码并查看后果

当初咱们来批改一下代码并看看成果:

  1. 进行 apisix-ingress-controller 过程
  2. 在 Goland 中搜寻 healthz 并找到 router.go 文件。将 healthzResponse 的状态代码从 ok 更改为 Hello Nocalhost
  3. 重新启动过程并在本地查看更改后果

步骤三:完结开发模式

当初敞开开发窗口并退出开发模式:

  1. 右键点击 apisix-ingress-controller
  2. 抉择 End DevMode

Nocalhost 将使 apisix-ingress-controller 完结 DevMode, 并重置 apisix-ingress-controller 到其原始版本。启用端口转发来看看退出开发模式后的后果。

留神:在开发模式下批改代码时,所有代码更改都只在 开发容器 中失效。

退出 DevMode 后,Nocalhost 将会将近程容器重置为原始状态(进入 DevMode 之前的版本)。这样,在退出 DevMode 后,对代码进行批改不会对原始环境造成任何更改或影响。

调试

调试应用程序是一件麻烦的事,在 Kubernetes 集群中调试应用程序则更加麻烦。但 Nocalhost 能够帮忙咱们在调试 Kubernetes 集群中的程序时取得和在 IDE 中间接调试本地程序同样的体验。

步骤一:开启近程调试

咱们能够通过以下形式开启近程调试

  • 右键点击 apisix-ingress-controller 并抉择 Remote Debug
  • Nocalhost 将会先让 apisix-ingress-controller 进入 DevMode,并运行在 dev config 定义的调试命令

步骤二:设置断点

healthz 函数上设置一个断点。悬停在行号左侧,而后点击红点。设置好断点后,在浏览器中拜访 http://127.0.0.1:8080/healthz,会触发断点,GoLand 会跳到前台。点击调试相干按钮可对程序进行调试。

此外,因为咱们启用了 dev.hotReload,所以每次更改代码时,Nocalhost 将主动从新运行调试命令。这能够让咱们频繁更改和调试代码时变得不便很多。

近程运行

Nocalhost 不仅仅能够近程调试,还为咱们在 Kubernetes 集群中运行服务以及热加载提供了一种更简略的形式。

咱们能够通过以下步骤应用 Remote Run 性能:

  • 右键点击 apisix-ingress-controller,并抉择 Remote Run
  • Nocalhost 将会先让 apisix-ingress-controller 进入 DevMode,并运行在 dev config 定义的运行命令

每次更改代码完代码后,Nocalhost 都会主动触发运行命令,将程序运行起来。

总结

通过本文,咱们为大家展现了如何应用 Nocalhost 来开发和调试 Kubernetes 集群中的 Apache APISIX Ingress Controller。借助 Nocalhost 的能力,咱们不再须要期待迟缓的本地开发过程,而是能够通过即时反馈和高效的云本地开发环境进行疾速部署与迭代.

对于作者

黄鑫鑫 – Nocalhost 我的项目外围开发者。腾讯云 CODING DevOps 研发工程师。曾负责过安全云主机及国家超算核心容器云平台等相干业务,相熟虚拟机,容器,K8s 相干技术,专一于云原生畛域。

退出移动版