traefik gateway api

news2024/11/17 7:21:08

背景

在使用istio后开始考虑网关了,istio已经有自己的网关,为什么还要另外找一个别的网关,参考了好几个文章大致结论是,istio的网关功能不够强大,下图红色的部分是istio网关暂时缺失的,所以我的结论是在istio外面再加一层网关,虽然现在已经有组织在将api gateway和服务网格融合希望降低学习成本,但是我觉得分开也没什么不好的各司其职,毕竟来说先有的网关才有的服务网格,哪一天服务网格没了网关还在。所以我选择了traefik,现在traefik的原因是因为traefik是用go写的,envoy是c,我用go语言更方便一些,再加上github的星星较多,就它了。
在这里插入图片描述

Gateway api

Gateway api是ingress的升级版
在这里插入图片描述

  1. 厂商实现了Gateway API 并定义了自己 GatewayClass 类型,一系列的实现可供选择。就好比编程语言里的类的概念,厂商写好网关类。
  2. 集群管理员安装 Gateway API 的实现,部署跨命名空间的共享网关实例,或者命名空间独享的网关实例。如下图,集群管理员部署了跨 store 和 site 命名空间的网关 foo。类似于实例化类的概念,集群管理员根据需要new出来自己想要的网关。
  3. 开发人员创建 HTTPRoute 资源将流量路由到指定的后端服务。类似于调用类里的方法,集群管理员创建好网关后,开发人员去操作该网关。
    在这里插入图片描述

安装gateway api

看一下这个文章就好了
https://traefik.io/blog/getting-started-with-traefik-and-the-new-kubernetes-gateway-api/
说几点其中注意的

安装 CRD

Kubectl apply -k "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v0.4.0"

如果因为网络限制,可以先把github.com/kubernetes-sigs/gateway-api 这个项目clone下来,然后到/config文件夹执行

Kubectl apply -k ./crd

Helm安装traefik

修改value.yaml

  1. 支持gateway
    在这里插入图片描述
  2. Expose 9000端口,为了dashboard
    在这里插入图片描述
  3. service类型改为nodeport
    在这里插入图片描述

安装

helm install -f values.yaml traefik . -n traefik

更新

helm upgrade -f values.yaml traefik . -n traefik

删除

helm uninstall traefik -n traefik

安装成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果没有看到gateway class或者gatway肯定是不成功的,最好describe看一下gateway的状态,正确应该是listener。

访问dashboard

主机ip:暴露的9000端口/dashboard/如上就是ip:32452/dashboard/就能看到,说明你已经成功了。
在这里插入图片描述
我曾经在这一步上折腾了好久,网上有些文章是说给dashboard配置一个ingress或者http route,但是我按照他们写的都没有成功,可能是我的问题,所以我就用了一个最简单的方法直接暴露9000端口,这个方式官方不推荐,但是我们先跑起来,日后再说。

部署一个httpRoute

whami.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: whoami
  namespace: traefik
spec:
  replicas: 2
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
        - name: whoami
          image: traefik/whoami:v1.6.0
          ports:
            - containerPort: 80
              name: http

---
apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: traefik
spec:
  selector:
    app: whoami

  ports:
    - port: 80
      targetPort: http

whami-httpRoute.yaml

apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
  name: http-app-1
  namespace: traefik

spec:
  parentRefs:
    - name: traefik-gateway

  hostnames:
    - test.whoami.cn

  rules:
    - matches:
        - path:
            type: Exact
            value: /

      backendRefs:
        - name: whoami
          port: 80
          weight: 1

配置一下hosts然后访问
http://test.whoami.cn:暴露的80端口号/ 我这里就是 http://test.whoami.cn:32560/
在这里插入图片描述
也可以去dashboard http里面看看是否配置成功
在这里插入图片描述
这样一个最简单的httpRoute就成功了

总结

我在安装时候遇到了很多的坑,所以如果你失败了一定要按照我如上的步骤,多看看,多想想。

参考

https://cloudnative.to/blog/do-i-need-an-api-gateway-if-i-have-a-service-mesh/
https://traefik.io/blog/getting-started-with-traefik-and-the-new-kubernetes-gateway-api/
https://medium.com/solo-io/getting-started-with-a-service-mesh-starts-with-a-gateway-96384deedca2
https://jimmysong.io/blog/why-gateway-api-is-the-future-of-ingress-and-mesh/
https://mp.weixin.qq.com/s/UZmcAx_Uj4Ozpa7QFVKLwQ
https://atbug.com/why-smi-collaborating-in-gateway-api-gamma/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Monorepo 下 Git 工作流的最佳实践

作者:林宜丙 背景 没有哪一种 Git 工作流是银弹,合适的 Git 工作流往往取决于项目的代码规模、协作人数、应用场景等;本次分享先从适合小型 Monorepo 的 Feature branch 工作流开始分享,接着分享适用于中大型 Monorepo 的 Trunk…

头歌:Ping客户端创建原始套接字(底部附全关完整答案)

头歌实践教学平台 (educoder.net)为Ping客户端创建一个原始类型的套接字原始套接字套接字(socket)是一个抽象层网络应用程序可以通过它发送或接收数据,可对其进行像文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中&a…

<C++>二叉树进阶

文章目录为什么要学这一节1. 二叉搜索树1.1 二叉搜索树概念1.2 二叉搜索树操作1.3 二叉搜索树的实现1.4 二叉搜索树的应用1.5 二叉搜索树的性能分析2. 经典题目2.1 最近公共祖先2.2 从前序与中序遍历序列构造二叉树2.3 二叉树的前序遍历(非递归)为什么要…

计算机组成原理复习:数据的表示和运算

计算机组成原理复习:数据的表示和运算2. 数据的表示和运算2.1 数制与编码2.1.1 数制:进位计数制及其相互转换2.1.2 编码:数值数据的编码与表示2.1.2.1 逻辑型数据2.1.2.2 字符型数据 之 ASCII码2.1.2.3 数值型数据 之 BCD码2.1.3 校验码——奇…

Part类 -- 上传文件

Part类 -- 上传文件一、核心方法1.1 HttpServletRequest 类方法1.2 Part 类方法二、代码示例前端搭配 form 表单:form input type “file”,允许通过浏览器选中一个文件上传给服务器。 Servlet 就支持处理这种上传文件的请求,把这个请求到的文…

安科瑞智能操控无线测温装置在江苏某化工产业园项目的应用

安科瑞 李亚俊 1 概述 江苏富强新材料有限公司是中国企业500强——山东金岭集团在江苏淮安盐化新材料产业园区投资设立的盐化工企业。公司将利用淮安丰富的盐矿资源和优越的发展环境,投资200亿元,建设120万吨/年离子膜烧碱项目、70万吨/年甲烷氯化物项…

vue新春游戏-拼手速抢车票小游戏,学习玩乐两不误,春节小游戏,新年小游戏

ue新春游戏-拼手速抢车票,老规矩,体验地址:http://game.pkec.net/word-ticket/。 写这个主要是前几天群里运营老师说咋没人写抢车票的,再加上我上一篇文章上了掘金一周,听说多上几次有证书,我还没搞到过掘金…

Go语言 函数传递:值传递 和 虚假的 “引用传递”

前言 其实从变量本身来说,go只有值传递,函数内的修改不会影响函数外。但有一种特例是指针,go可以传指针给函数,指针指向申请出来的实际内存,也就是保存元素的内存, 这样在函数内的修改,可以影响…

就算是TOP程序员,也有这些坏习惯

绝大多数程序员在职业生涯中,多多少少都会养成一些坏习惯,今天就来说一说身边最常见的一些坏习惯,也给刚入行的新朋友们提个醒,少走一些弯路。 那么,就让我们开始吧! 1.不注意适当休息 比如日常工作时、…

B端产品-登录功能设计

在项目启动初期,基本大家都是先从账号体系先开始着手设计的,那么B端的登录功能如何设计呢? 一、需求分析 B端的产品的用户基本上可以分为内部员工和客户,如果是客户使用,基本上都会有注册功能;如果是内部员…

C# Console.Read读取回车和换行

C#的Console.Read函数: 读取缓冲区中的数据,读取到一个字符时停止。 C#的Console.ReadLine函数 读取缓冲区中的数据,遇到回车时停止。 Enter键: 将行数据输入缓冲区,并且将回车符和换行符 加入缓冲区。 注意 Consol…

【H5UI库和二维码】一.H5UI库;二.加密技术;三.二维码

目录​​​​​​​ 一.H5UI库 1.使用方法: (1)页面中引入css文件 (2)页面中引入js文件 2.组件的用法 (2)按钮的使用:button。有三种类型(primary、danger、defaul…

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《3》

前面了解到Faster R-CNN在实验中的效果很不错,以及对论文做了一个大概的了解,对此有兴趣的伙伴们也可以先浏览前面两篇文章:MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《1》MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《…

【Node】Node.js安装与配置(详细步骤)

Node.js安装与配置(详细步骤)一、安装Node.js1.1 下载1.2 安装1.3 环境变量二、验证是否安装成功三、修改模块下载位置3.1 查看npm默认存放位置3.2 在 nodejs 安装目录下,创建 “node_global” 和 “node_cache” 两个文件夹3.3 修改默认文件…

xd卡数据丢失原因和三种数据恢复方法介绍

xd卡适用于富士/奥林巴斯相机品牌,它能配合各式读卡器,方便的与个人电脑连接传输图像视频等。但是xd卡与其他类型的存储卡一样容易因各种原因出现数据丢失。如果您的xd卡出现了数据丢失的问题,不妨了解下这里给大家分析的xd卡数据丢失原因和具…

解决仓库产品管理痛点,选对条码工具至关重要

" 最近我们仓库管理遇到了很多问题,一方面 我们进出库的产品数量非常庞大,目前公司的条码扫描系统识别效率非常低,只能单个产品进行扫描,经常需要加班加点出入库,而且有些产品条码比较特殊,现在的扫描…

【LeetCode每日一题】——507.完美数

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数学 二【题目难度】 简单 三【题目编号】 507.完美数 四【题目描述】 对于一个 正整数&…

windows10安装goland

一、安装包 下载以下两个安装包: go语言二进制包: https://golang.google.cn/dl/ goland安装包 https://www.jetbrains.com/go/nextversion/ 二、安装go语言包 双击下载的语言包,直接next,选择安装路径(自己选择&am…

图的遍历(深度DFS与广度BFS)

文章目录图的遍历深度优先遍历思路邻接表邻接矩阵性能分析广度优先遍历思路邻接表邻接矩阵性能分析源代码图的遍历 **对有向图和无向图进行遍历是按照某种次序系统地访问图中的所有顶点, 并且使得每一个顶点只能访问一次. ** 对于图的遍历需要解决掉两个问题: 如果存在回路/环…

实力总结四类Bean注入Spring的方式

xml 方式 注解方式 Configuration Bean Import FactoryBean BDRegistryPostProcessor 源码 实战 一提到Spring,大家最先想到的是啥?是AOP和IOC的两大特性?是Spring中Bean的初始化流程?还是基于Spring的Spring Cloud全家桶呢…