乐趣区

关于nocalhost:使用-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 的命名空间
  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 并查看后果

开发 APISIX Ingress Controller

Step 1. 进入 DevMode

  1. 右键点击 apisix-ingress-controller 工作负载,抉择 Start 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:

  1. 右键点击 apisix-ingress-controller
  2. 抉择并点击 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. 开启近程调试

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

  1. 右键点击 apisix-ingress-controller 并抉择 Remote Debug
  2. 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 性能:

  1. 右键点击 apisix-ingress-controller,并抉择 Remote Run
  2. 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

一键开启云原生开发环境

退出移动版