如何在 K8s 集群中使用 Nocalhost 开发 APISIX Ingress

K8S中部署apisix(非ingress) Python微信订餐小程序课程视频 https://edu.youkuaiyun.com/course/detail/36074 Python实战量化交易理财系统 https://edu.youkuaiyun.com/course/detail/35475 不使用pvc的方式在K8S中部署apisix-gateway 简介 因为公司项目准备重构,现在做技术储备,之前公司项目使用的ocelot做网关,ocelot是.net平台下的一个网关,也是很不错,但是在选型的时候需要考虑到性能问题,所以在这次重构中抛弃了ocelot,看了ap 阅读详情

环境准备

  • 准备一个可用的 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/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 访问服务,并检查结果。

图片

步骤二:修改代码并检查结果

现在我们来修改一下代码并看看效果:

  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 相关技术,专注于云原生领域。

使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller 体验 Nocalhost 带来的云原生开发全新方式 阅读详情

相关推荐

apisix-ingress-controller:K8的入口控制器

适用于Kubernetes的Apache APISIX 使用进行Kubernetes 。 apisix-ingress-controller中的所有配置都是使用Kubernetes CRD(自定义资源定义)定义的。 例如Apache APISIX中的configure ,针对上游的支持服务注册发现机制,负载平衡等。 apisix-ingress-controller是Apache APISIX控制平面组件。 目前,它适用于Kubernetes集群。 将来,我们计划将子模块分开以适应更多的部署模式,例如虚拟机集群。 apisix-ingress-controller的技术架构: 地位 该项目目前被认为是实验性的。 特征 使用具有最小学习曲线的k8s yaml结构,对具有自定义资源定义(CRD)的Apache APISIX进行声明式配置。 适用于Yaml期间的热重装。 本机Ku

Nocalhost就是好,云原生开发没烦恼

带你回归简单又原始的云原生开发体验

在数字化道路无限探索 1108

ue4 角色奔跑/冲刺/蹲下 /蹲走 动作切换蓝图

序列:文章分为4部分: 一、准备工作+简单的蓝图连线 二、编写“行走” 混合空间 三、编写“蹲下”混合空间 四、合成2个动画,设置动画蓝图 —————————————— 一、准备工作 下载“动画初学者包”,添加到项目! 主要文件: 打开BP_playerCharacter,组价——添加组件,找到“摄像机”,“机臂” 没有找到就去其他项目复制过来 ———————————— 手写人物的移动,也可以在...

凉城古梦猫扑街的博客 4862

Zhong__vue

vue开发

Zhong的博客 423

概率整形 Peobabilistic Shaping PS 第一节

概率整形概述 概率整形(Peobabilistic Shaping, PS)是一种针对于调制格式的优化技术,它为光通信通信提供了非常高的灵活性,但不会增加系统复杂性。尤其是光通信中的非线性问题会限制功率,使得PS就像为光通信量身定做的一样。 PS技术能够在不增加发送功率的前提下,获得高频谱效率和传输容量。2016年在使用PS技术的实验中实现了6600km单模光纤的65Tbit/s数据的传输。 到目前位置PS技术的研究主要集中在具有相干检测的单载波光纤传输。 概率整形的基本原理 概率整形技术就是通过在编码前

Explore_OuO的博客 8126

RPG MV游戏数据修改指南:从JSON解析到脚本进阶

游戏数据修改是游戏开发与逆向工程中的常见实践,其核心原理在于解析和操作游戏资源文件。许多现代游戏引擎采用结构化数据格式(如JSON)存储游戏配置,这为外部修改提供了可能。通过理解文件结构、数据格式与游戏逻辑的关联,开发者或爱好者可以调整游戏平衡、修复问题或实现个性化定制,这不仅能深化对游戏设计机制的理解,也具备实际的技术学习价值。本文以基于Web技术栈的RPG Maker MV(RPG MV)引擎为例,其游戏数据多以明文JSON存储,结构清晰。文章将具体阐述如何安全地修改角色属性、物品效果、敌人数据及技能公

weixin_29001419的博客 405

nocalhost使用

注意: 此刻的Terminal所访问的localhost并不是我自己电脑,而是容器的localhost,因为采用的是Duplicate的模式,所以运行时产生不同的结果,这就是上述提到的副本的含义。注:当此时选择本地的源代码时候,实际就是把选择的目录中的内容同步到容器中,即选择的文件夹中有什么文件,就把那些文件放到工作负载的容器中去,而把之前容器中的文件覆盖,下方是官方解释。2.点击后选择使用指定源代码本地目录,或者可以从现有的 Git 仓库克隆源码,如图(此处选择了一个之前测试的服务,打开的本地源代码)

So_beautiful_now的博客 961

Modbus CRC和LRC算法研究及代码实现

一、CRC(循环冗余校验) 1 CRC16实现流程 XOR = 异或 N = 字节的信息位 POLY = CRC16 多项式计算 = 1010 0000 0000 0001 (生成多项式 = 1 + x2 + x15 + x16) 在CRC16中,发送的第一个字节位低字节 2 CRC16实例推导 3 CRC16代码实现 unsigned short CRC16(unsigned char *a...

Hi, Boy 2892

K8s 安装使用 apisix

apisix Apache APISIX是一个动态的、实时的、高性能的 API 网关. 本文主要测试在k8s环境下使用apisix-ingress-controlle 使用Helm Chart安装 所有的pod,svc等都放到了default的namespace下 apisix $ helm repo add apisix https://charts.apiseven.com $ helm repo update $ helm install apisix apisix/apisix apisix-da

偶是一只小小鸟~ 8193

ABAP 7.40 新语法介绍系列之二 - ABAP 类型转换操作符 CONV

这个lv_input_s变量的唯一使命,就是接收来自 char10 类型的 lv_input_c 变量的值,然后传递到 print 方法里去。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1420

OceanSim: 基于Isaac Sim GPU 加速水下机器人感知仿真框架

OceanSim 采用先进的基于物理的渲染技术,对水下视觉和声学传感器进行精确建模。与其他模拟引擎相比,OceanSim 的渲染速度要快得多。作为 NVIDIA Issac Sim 的扩展,OceanSim 采用了多功能设计。通过融入快速发展的 NVIDIA Omniverse 生态系统,我们的模拟器自然而然地在机器人学习和水下机器人技术之间架起了一座桥梁,从而促进了水下应用中体现型人工智能技术的开发和部署。OceanSim 将以开放源码的方式提供,使研究界能够以合作的模式作出贡献。

机器人控制与仿真应用 2051

【kubernetes】k8s部署APISIX及在KubeSphere使用APISIX

KubeSphere部署APISIX及使用APISIX暴露外网访问

开发学习工作日志 4059

PyQt(Python+Qt)学习随笔:PyQt界面派生类构造方法中super方法的使用

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在《第15.7节 PyQt入门学习:PyQt5应用构建详细过程介绍》和订阅专栏《第二章、PyQt5应用构建详细过程介绍》中,老猿介绍界面派生类的构造方法如下: class MediaPlayerWin(QtWidgets.QWidget,Ui_UI_PlayerWin): def __i...

老猿Python 2711

k8s-周边之-nocalhost

nocalhost 使用简介,方便开发人员快速远程debug k8s集群中的服务,提升了开发效率

u010953880的专栏 2394

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

K8S Ingress 之 Apache APISIX 解析

其实,本质上来讲,Apache APISIX 是一个基于微服务 API 网关,其不仅可以处理南北向的流量,也可以处理东西向的流量即服务之间的流量。除此之外,其能够友好地支持。完善的文档,易于使用和理解。通常情况下,作为接入层的 Ingress Controller ,其承载着服务的入口流量引入,在生产环境中,我们的业务对系统的可靠性有着更高的要求,然而,基于 Apache APISIX Ingress Controller 其能够支持动态配置,即时生效,降低生产事故的意外及风险,有助于提高运维可维护性。

格物致知 1653

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

云原生或K8S 安装 APISIX

apisix

guyougao的博客 3384

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

k8s部署IngressController

k8s中ingress的基本用法

教Linux的李老师 5303

阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller

在k8s上安装apisix全家,通过helm安装很简单,但是会遇到一些问题。

吴就业 1600

【云原生】Apisix接入Nacos、K8s服务注册中心自动获取服务

我们看到,我们再调用网关之前,需要配置上游,填入上游的地址和端口,但是端口是变的,每次服务重启之后都是变化的,而且网关本身也是要知道我们微服务架构中共有哪些服务,因为服务经常会上下线,网关路由需要感知到。这次经过网关,要访问网关的地址和端口,网关会根据我们的配置进行路由,9080是网关默认的端口,因为我在配置路由时给了域名,所以这里需要加上;这里可以选择很多插件,有限流、gRpc转换等插件,我这里选择一个限流插件使用,gRpc的后面再演示。然后经过Apisix再调用一次,发现结果是一样的,测试成功。

蓝天之枫 3577

【Docker】APISIX Ingress Controller部署

APISIX Ingress Controller容器部署备忘

Qinghub‘博客 1878

Nocalhost 为 KubeSphere 提供更强大的云原生开发环境

在「应用设置」标签页,可手动编辑清单文件或直接点击「安装」。作者简介:魔都国企技术专家兼架构,多家大厂后台研发和架构经验,负责复杂度极高业务系统的模块化、服务化、平台化研发工作。具有丰富带团队经验,深厚人才识别和培养的积累。Nocalhost Server 多用于管理整个团队的 Nocalhost 研发环境,先要添加可进行管理的集群。选择 Manifest 作为「Manifest 类型」「应用配置文件」留空,即使用默认值 config.yaml。进入「编辑开发空间」的「共享用户」标签页,开始「添加共享」。

JavaEdge全是干货的技术号 1662

云原生时代开发提效神器-Nocalhost

在很早以前发表了一篇文章springcloud本地开发的微服务如何调用远程k8s的微服务。着重介绍的如何利用kt-connect来打通开发环境与K8S环境的调试。今天介绍的Nocalhost,不仅仅能达到上述的效果,而且功能更加强大。下面我们就进入正题直接在 Kubernetes 集群中构建、测试和调试应用程序提供易于使用的 IDE 插件(支持 VS Code 和JetBrains),即使在 Kubernetes 集群中进行开发和调试,Nocalhost 也能保持和本地开发一样的开发体验。

kingwinstar的博客 451

基于k8s集群容器化部署etcd集群和apisix服务

创建StorageClass,支持动态pvc创建,StorageClass使用nfs-client,同时使用华为云sfs作为数据持久化存储目录。挨个执行以上yaml文件,kubectl apply -f ***.yaml。#本文用到的公共资源:elb、sfs共享存储,不足之处请多多评论之处。创建etcd有状态服务(etcd.yaml)

ding_zk的博客 5509

秒级体验本地调试远程 k8s 中的服务

点击上方蓝色字体,选择“设为星标”回复”云原生“获取基础架构实践背景在这个以k8s为云os的时代,程序员在日常的开发过程中,肯定会遇到各种问题,比如:本地开发完,需要部署到远程k8s集群,本地如何直接操作呢?又如:提测到测试环境发现有问题,或者nightly环境本身没过,这时候,可能需要一些调试。下面介绍一款开源已久的产品来体验秒级体验下本地操作远程k8s、直接在调试远程代码。借助 Nocalho...

wangsofa的博客 1373

kubernates环境下apisix的安装与配置

1、修改内置ingress(traefik)端口号让出80,443端口(单服务器需要修改,多服务器或者有lb不需要)命名空间改造为apisix,除namespace改造外,etcd.yaml需要进行改造。此时apisix的gateway就可以监听80和443端口了。2、修改apisix-gateway的yaml文件。在apisix的configmap中添加如下代码。3、配置apisix-dashboard。apisix.yaml需要进行改造。

qq_20948277的博客 1044
上一篇: Apache APISIX 社区双周报 | 功能亮点更新进行中
下一篇: Apache APISIX Dashboard 未授权访问漏洞公告(CVE-2021-45232)
API7.ai 技术团队
博客等级 码龄5年 165粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值