惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
The Register - Security
The Register - Security
S
Secure Thoughts
有赞技术团队
有赞技术团队
Hacker News - Newest:
Hacker News - Newest: "LLM"
月光博客
月光博客
Engineering at Meta
Engineering at Meta
www.infosecurity-magazine.com
www.infosecurity-magazine.com
WordPress大学
WordPress大学
N
News | PayPal Newsroom
F
Fortinet All Blogs
Forbes - Security
Forbes - Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Y
Y Combinator Blog
L
LINUX DO - 最新话题
Google Online Security Blog
Google Online Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
阮一峰的网络日志
阮一峰的网络日志
Application and Cybersecurity Blog
Application and Cybersecurity Blog
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
G
Google Developers Blog
Vercel News
Vercel News
Martin Fowler
Martin Fowler
TaoSecurity Blog
TaoSecurity Blog
腾讯CDC
Cyberwarzone
Cyberwarzone
罗磊的独立博客
S
Securelist
T
Tor Project blog
Recorded Future
Recorded Future
小众软件
小众软件
Attack and Defense Labs
Attack and Defense Labs
L
LINUX DO - 热门话题
The Cloudflare Blog
爱范儿
爱范儿
S
Security @ Cisco Blogs
雷峰网
雷峰网
Schneier on Security
Schneier on Security
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
S
Schneier on Security
大猫的无限游戏
大猫的无限游戏
Recent Announcements
Recent Announcements
Blog — PlanetScale
Blog — PlanetScale
D
Docker
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
Latest news
Latest news
M
MIT News - Artificial intelligence

Coding

天翼云 glm5.1 codingplan 官方玩不起,强制终止用户的包月续订 - V2EX 字节的 CodingPlan 实锤虚假宣传 - V2EX 现在有什么优雅的使用 ai 工具编程的方法? - V2EX MiniMax-M2 截到 11.07 限时免费 - V2EX VibeCoding 导致损失 1100 刀 - V2EX rpc 服务中,“业务错误”的返回应该如何设计? - V2EX 科班大学计算机专业主要课程有哪些呢 - V2EX 你们公司用上 ChatGPT 了吗?有哪些使用场景 - V2EX Cloud Studio 内核升级之专注体验 - V2EX 行云流水| CI 3.0 云原生构建全新上线 - V2EX ​Cloud Studio 云端开发保障企业源代码安全 - V2EX 更高效便捷的开发体验——Cloud Studio 编辑器命令行工具 - V2EX Cloud Studio 内核升级之持续优化 - V2EX Cloud Studio 有“新”分享 - V2EX 怎么设计面试题,能考查到实战能力? - V2EX 有奖征文丨 [玩转 Cloud Studio] 第二季来啦! - V2EX Cloud Studio 一个好用的在线编程工具 - V2EX 线上直播 | 未来金融研究所——以应用为中心,重塑金融研发效率 - V2EX 新一代 CI 即将到来! - V2EX 重磅发布! Orbit 云原生应用全生命周期管理工具上线啦! - V2EX 腾讯云, DevOps 领导者! - V2EX 各位是如何批量管理项目中的 shell 脚本的? - V2EX CODING DevSecOps 助力金融企业跑出数字加速度 - V2EX CODING 正式入驻腾讯会议应用市场! - V2EX CODING DevOps 助力中化信息打造新一代研效平台,驱动“线上中化”新未来 - V2EX 叮! Techo Day 腾讯技术开放日如约而至! - V2EX 程序员在公司该怎么保护自己的个人劳动成果? - V2EX Next.js 在 Serverless 中从踩坑到破茧重生 - V2EX [高效开发] 不止面对面, Cloud Studio 推出 MetaWork 云协作套件 - V2EX CODING 公开课火热报名中! - V2EX coding.net 502 - 2022 年 3 月 21 日 - V2EX 发现 coding.net 会对 1 年未登录用户删数据 - V2EX CODING 携手 Thoughtworks 助力老百姓大药房打造”自治、自决、自动”的敏捷文化 - V2EX 迷雾中的自动化测试体系建设 - V2EX Nocalhost:云原生开发新体验 - V2EX CODING x 百果园,水果零售龙头迈出 DevOps 体系建设第一步 - V2EX CODING 与悬镜安全达成战略合作,引领 DevOps 向 DevSecOps 创新模式升级 - V2EX Apache Log4j 2 报高危漏洞, CODING 联手腾讯安全护卫软件安全 - V2EX WePack —— 助力企业渐进式 DevOps 转型 - V2EX 大型前端项目 DevOps 沉思录 —— CI 篇 - V2EX CODING 代码资产安全系列之 —— 构建全链路安全能力,守护代码资产安全 - V2EX 一页纸需求的应对方法 —— 五步法 - V2EX Nocalhost 为 KubeSphere 提供更强大的云原生开发环境 - V2EX 喜报! Nocalhost 成功加入 CNCF 沙箱 - V2EX Nocalhost —— 让云原生开发回归原始而又简单 - V2EX CODING 项目协同 2.0 —— 让协作有条不紊 - V2EX 赋能“数字金融”, CODING 再下数城 - V2EX 打造数字化软件工厂 —— 一站式 DevOps 平台全景解读 - V2EX 做云原生时代标准化工具,实现高效云上研发工作流 - V2EX
使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller - V2EX
CodingNET · 2021-12-16 · via Coding

本文作者:黄鑫鑫 - 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 及以上版本

按照以下步骤,在 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

部署 APISIX ingress controller

部署完成后,我们通过在 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 都会自动触发运行命令,将程序运行起来:

Remote Run

总结

通过以上步骤,我们已经学会如何使用 Nocalhost 来开发和调试 Kubernetes 集群中的 APISX ingress controller 。 使用 Nocalhost ,我们不再需要等待缓慢的本地开发循环反馈,而是通过一种高效的云原生开发方式来得到快速的反馈。

引用

一键开启云原生开发环境

CODING DevOps.png