腾讯云API网关废了?集群开源方案平替

news/2025/3/22 2:34:33/文章来源:https://www.cnblogs.com/liguobao/p/18230489

前言:一则公告

背景:某云API网关要跑路啦

 

 

听过腾讯云API网关要下线了,之前的项目都(bu)是(shi)用的这个,现在要换成什么呢?

【重要】API 网关产品停止售卖公告

这玩意当年我还在白嫖腾讯云k8s master集群的时候,

某一次升级之后他们把k8s的service 切成了API网关,

然后开始要求我按量付费。

接着我就开始研究怎么把这个东西给替换掉~

到今天终于可以扬眉吐气了!!!

 

下面讲一下我的集群部署方案历史,管控窥屏~

早期方案:腾讯云集群 + nodePort

  • 集群还是一样的集群,自己的机器作为worker节点接入集群
  • 直接删掉所有带内网IP的service,全部使用nodePort暴露服务。
  • 在worker节点上安装NGINX,使用NGINX的反向代理功能,将请求转发到nodePort上。

这个方案跑了大概一年多左右,集群也开始收费了,美名曰管理费~

算下来一个月几十块,一年几百块,并不能接受这个价格。

遂,方案迁移~

SuperEdge 自建集群 + nodePort + nginx

自建集群嘛,什么方便什么来。

所以当年还写过这些文章:

知乎专栏:边缘计算k8s集群SuperEdge初体验

知乎专栏:SuperEdge边缘计算集群挂载NFS

妥妥算是他们的一个自来水了。

然而…

大概是在去年的时候,SuperEdge 微信群老群说迁移,新群加进去没人管了。

私聊了一下之前熟悉的技术,说项目进入维护状态了。

 

 

 

啧啧啧…

问题是,这玩意证书过期没法renew啊,我的集群直接崩了。

真心累了,国内的大厂的开源项目,大多逃不过KPI的命运。

玩不起不好进场,玩不转就只能被淘汰。

真的,再信国内的大厂开源项目,我就是猪头!!!

接着开始考察新的方案:

  • 依旧是All In K8s
  • 依旧是自建集群
  • 依旧是不花一分钱

然后,发现 k3s 这个东西,真香~

k3s + ingress-nginx

部署方案见:知乎专栏:【k3s】年度最佳边缘计算集群方案

node节点大概如下:

NAME              STATUS                     ROLES                       AGE     VERSION
aliyun-bj-199     Ready                      <none>                      34d     v1.29.4+k3s1
haru              Ready                      <none>                      6d16h   v1.29.4+k3s1
t7610             Ready                      <none>                      6d2h    v1.29.4+k3s1
vm-16-12-ubuntu   Ready                      control-plane,etcd,master   75d     v1.28.7+k3s1
vm-28-17-ubuntu   Ready,SchedulingDisabled   control-plane,etcd,master   75d     v1.28.7+k3s1
zj-hc1            Ready                      <none>                      33d     v1.29.4+k3s1

在上面其实可以看到,master 节点就两台,vm-16-12-ubuntu 和 vm-28-17-ubuntu ,

两台机器在云端,内网互通,都有公网IP。(划重点)

其他的机器部分在本地,部分在其他云,部分在边缘设备上,内网互通,但是不一定有公网IP。

照着以前的逻辑,我们是需要一个API 网关,把流量转发到到worker节点上。

这也是现在某云的API网关的功能,但是我们现在没有了。

不过,没有了API网关,我们还有 ingress-nginx。

k3s 集群中,有公网IP的节点,其实都可以直接作为流量入口。

然后,我们可以通过 ingress-nginx 的配置,将流量转发到worker节点上。

需要的操作只是在 server or agent 启动的时候,加上 --node-external-ip 参数,指定公网IP。

 # server
ExecStart=/usr/local/bin/k3s \server \--node-external-ip 公网IP \--flannel-backend wireguard-native \'--tls-san' \'公网IP' \'--node-name' \'vm-16-12-ubuntu' \'--server' \'https://10.0.28.17:6443' \# agentExecStart=/usr/local/bin/k3s \agent --node-name zj-hc1 \--lb-server-port 5443 \--node-ip 10.42.4.1  \-node-external-ip 公网IP \--server https://server:6443 \--token="YOUR_TOKEN" \

此时,这个节点的443端口和80端口就可以直接接受外部流量了。(当然,需要防火墙开放)

然后我们把对应的域名解析到这个节点的公网IP上,就可以直接访问了。

一个完整的部署例子

  • 带域名证书自签名
  • 任意有公网IP的节点都可以作为入口
  • 如果需要负载IP负载均衡,可以在DNS解析时使用多个A记录,或者使用DNS负载均衡服务

apiVersion: v1
kind: PersistentVolume
metadata:name: stirling-pdf
spec:capacity:storage: 30GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: DeletestorageClassName: local-storagelocal:path: /mnt/cfs-a4nopkhh/stirling-pdfnodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- zj-hc1
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: stirling-pdf
spec:accessModes:- ReadWriteOnceresources:requests:storage: 30GistorageClassName: local-storage
---
apiVersion: apps/v1
kind: Deployment
metadata:name: stirling-pdflabels:app: stirling-pdf
spec:replicas: 1selector:matchLabels:app: stirling-pdftemplate:metadata:labels:app: stirling-pdfspec:containers:- name: stirling-pdfimage: ccr.ccs.tencentyun.com/liguobao/s-pdf:ustcports:- containerPort: 8080resources:requests:memory: "512Mi"cpu: "500m"limits:memory: "2048Mi"cpu: "1000m"readinessProbe:httpGet:path: /port: 8080initialDelaySeconds: 120periodSeconds: 60env:- name: DOCKER_ENABLE_SECURITYvalue: "false"- name: INSTALL_BOOK_AND_ADVANCED_HTML_OPSvalue: "false"- name: UI_APP_NAMEvalue: "R2049 PDF"- name: ALLOW_GOOGLE_VISIBILITYvalue: "true"- name: LANGSvalue: "zh_CN"- name: APP_LOCALEvalue: "zh_CN"volumeMounts:- mountPath: /configssubPath: configsname: data- mountPath: /usr/share/tessdatasubPath: tessdataname: data- mountPath: /customFiles/subPath: customFilesname: datavolumes:- name: datapersistentVolumeClaim:claimName: stirling-pdfimagePullSecrets:- name: regcreddnsPolicy: ClusterFirstrestartPolicy: AlwaysterminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:name: stirling-pdf-service
spec:selector:app: stirling-pdfports:- protocol: TCPport: 8080targetPort: 8080type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:cert-manager.io/cluster-issuer: letsencrypt-prodkubernetes.io/tls-acme: "true"generation: 1name: ingress-pdf-house2048
spec:ingressClassName: traefikrules:- host: pdf.house2048.cnhttp:paths:- backend:service:name: stirling-pdf-serviceport:number: 8080path: /pathType: Prefixtls:- hosts:- pdf.house2048.cnsecretName: pdf-house2048-cn-tls

 

编辑于 2024-06-04 11:39・IP 属地上海
赞赏开启后,读者将可以付费支持你的创作。
网关
腾讯云
集群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/719775.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core Configuration 配置项知识点一网打尽!

控制台项目中,演示示例1.自定义 Dictionary Config 内存字典模式 dotnet add package Microsoft.Extensions.ConfigurationIConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddInMemoryCollection(new Dictionary<string, string>() {{"key…

梵几 x TapData:如何高效落地实时数据中台,助力家居企业优化数字营销

面对业务拓展带来的数据需求,梵几家具采用分布式数据中心+数据中台的方案,并由 TapData Cloud 作为数据同步组件。本文将探索如何利用该方案实现高效的数据管理和业务运营,完善数字化能力,提升运营效率和客户体验。使用 TapData,化繁为简,摆脱手动搭建、维护数据管道的诸…

mac 安装和管理多个Python版本

更新brewbrew updatebrew install pyenv 安装pyenv报错==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c1c28c143f4e28fc0059e66baa904104da25a41d/Formula/o/openssl@3.rb curl: (7) Failed to connect to raw.githubusercontent.com port 443…

CAD .net 二次开发 PaletteSet取消允许固定

今天在使用PaletteSet的时候偶然发现一个与预期不符的情况 我需要一个用鼠标拖动到侧边不会自动贴靠在CAD侧边(或其他边)的PaletteSet,于是我将PaletteSet的Dock和DockEnabled属性设置为DockSides.None 示例代码如下: 但是当我打开cad执行此段代码之后,我发现我的面板仍然可…

AutoCAD .net 二次开发 PaletteSet取消允许固定

今天在使用PaletteSet的时候偶然发现一个与预期不符的情况 我需要一个用鼠标拖动到侧边不会自动贴靠在CAD侧边(或其他边)的PaletteSet,于是我将PaletteSet的Dock和DockEnabled属性设置为DockSides.None 示例代码如下: 但是当我打开cad执行此段代码之后,我发现我的面板仍然可…

microsoft store商店无法下载问题

解决办法:开启window更新; 1.开始 --》搜索“服务” --》以管理员身份运行;2.找到Windows update,开启即可如果服务状态是停止,无法开启。则参照下面的方法 打开注册表找到层级: 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv更改所有者博客园地…

精益六西格玛理论学习

一、什么是精益管理?什么是六西格玛理论? 精益管理和六西格码都致力于消除浪费并改进业务流程。然而,一个重要的区别是,精益管理依赖于人们来识别哪些问题导致了浪费。 二、精益六西格玛 精益六西格玛(Lean Six Sigma,简写为LSS)是精益生产与六西格玛管理的结合,其本质…

JavaFX 常见布局组件的使用

Laytout 简介 JavaFX 提供了多种布局管理器(Layout Managers),它们用于自动管理用户界面组件的位置和大小。布局管理器可以简化 UI 设计,因为它们会根据窗口的大小变化自动调整其中的组件。 布局组件 JavaFX 包含以下布局组件:布局名称 中文 说明AnchorPane 锚点布局 允许…

如何选择Unity的4种批处理方式

1)如何选择Unity的4种批处理方式2)Unity编辑器卡顿3)如何解决横屏APP在鸿蒙悬浮窗错误的变为竖屏了4)Hindi问题这是第388篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。 UWA社区主页:community.u…

离线资源手册下载地址

离线手册下载下载地址 https://www.php.cn/xiazai/ 如下图:

MES与PLC集成时的几种握手方式及特点

方式1:定期抓取数据 某些设备的关键工艺参数(如变速器轴齿热处理炉的温度)非常重要,需要定期抓取以生成实时曲线,及用于长期追溯分析。 这些工艺参数通常都是模拟量,数值始终不停地变化。 通常我们可以通过OPC软件读取这些数据,经过精度处理,然后定期写入实时数据库中。 …