ingress使用

ingress配置金丝雀发布 灰度发布 优先级:canary-by-header -> canary-by-cookie -> canary-weight 基于header: # 配置 nginx.ingress.kubernetes.io/canary: "true" nginx.ingress.kubernetes.io/canary-by-header: "canary" # 访问方式 curl -H "... 阅读详情

一、前言

     在 Kubernetes Ingress 中,Canary 功能是一种基于流量分流和测试的部署策略,用于逐步引入新版本的应用程序并对其进行测试,canary可以通过权重、请求头、cookie来路由流量到不同的环境中

二、使用

权重

这里通过两个不同的服务去展示关于通过权重对流量的切分

vi ingress-web.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web
  namespace: nodejs
spec:
  rules:
  - host: mz.njq.com
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: nodejs
            port:
              number: 80
  ingressClassName: nginx

vi ingree-nacos.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nacos
  annotations:  
    nginx.ingress.kubernetes.io/canary: "true"      #开启canary功能
    nginx.ingress.kubernetes.io/canary-weight: "30"  #配置百分之三十的流量权重到该服务上     
spec:
  rules:
  - host: mz.njq.com       #使用相同的域名
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:          #后端服务是不同的
            name: nacos
            port:
              number: 8848
  ingressClassName: nginx

使用curl测试是否实现

访问到第四次的时候,跳转到了另一个服务上

请求头 

通过两个不同的ingress服务去展示关于通过请求头对流量的切分

vi ingress-web.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web
  namespace: nodejs
spec:
  rules:
  - host: mz.njq.com
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: nodejs
            port:
              number: 80
  ingressClassName: nginx

vi ingree-nacos.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nacos
  annotations: 
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-by-header: "env"    #定义请求头
    nginx.ingress.kubernetes.io/canary-by-header-value: "green" #定义请求头的值,不定义值的话可以在使用请求头的时候用always或者neve,always则表示所有请求都路由到该服务上,never表示所有请求都不路由到该服务上
    #nginx.ingress.kubernetes.io/canary-by-header-pattern: "blue|green"  #该项也是定义请求头的值,只不过这个是使用正则表达式定义,如果与value同时存在,该项不生效
spec:
  rules:
  - host: mz.njq.com
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: nacos
            port:
              number: 8848
  ingressClassName: nginx

使用curl测试是否实现

 可以看到通过加上请求头是访问到不同的服务

cookie

通过两个不同的ingress服务去展示关于通过cookie对流量的切分

vi ingress-web.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web
  namespace: nodejs
spec:
  rules:
  - host: mz.njq.com
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: nodejs
            port:
              number: 80
  ingressClassName: nginx

vi ingree-nacos.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nacos
  annotations: 
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-by-cookie: "test"     #定义cookie,cookie的值不能自定义只能是always或者never,如果是always则所有请求都路由到该服务上,如果是never则不路由到该服务上
spec:
  rules:
  - host: mz.njq.com
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: nacos
            port:
              number: 8848
  ingressClassName: nginx

使用curl测试是否实现

可以看到指定cookie值为always后是访问到指定服务中 

使用 NGINX Ingress 进行 Canary 发布 Canary 发布是一种渐进式部署方式,其核心思想是将新版本的服务首先部署到生产环境中的一小部分用户(称为“金丝雀”),通过监控其性能和用户反馈来验证稳定性。如果一切正常,再逐步将流量切换到新版本;如果发现问题,则可以快速回滚。这种策略在减少部署风险的同时,保证了用户体验。通过 NGINX Ingress Controller,我们可以轻松实现 Canary 发布,支持基于 Cookie、权重和请求头等多种流量分配策略。 阅读详情

相关推荐

kubernetes基于nginx-ingress进行蓝绿部署、金丝雀发布(canary)

kubernetes基于nginx-ingress进行蓝绿部署、金丝雀发布(canary) 用户通过负载均衡器访问v1版本,关掉v1版本,接触到v2版本。 在关闭版本a部署版本b,此技术意味着服务的停机时间取决于应用程序的关闭和启动持续时间,对用户的影响较大。 kubernetes滚动更新方式: 滚动更新策略包括通过逐个替换实例来逐步更新应用程序的版本,直到所有版本更新为止,过程:在负载均衡器后面使用版本A池,部署版本B的一个实例。当服务准备好接收流量时,该实例将添加到池中,然后,从池中删除版本A的实例并.

weixin_46754666的博客 1142

构建基于 Ingress 的全链路灰度能力

微服务架构下,有一些需求开发,涉及到微服务调用链路上的多个微服务同时发生了改动,通常每个微服务都会有灰度环境或分组来接受灰度流量,我们希望通过进入上游灰度环境的流量,也能进入下游灰度的环境中,确保1个请求始终在灰度环境中传递,即使这个调用链路上有一些微服务没有灰度环境,这些应用请求下游的时候依然能够回到灰度环境中。通过 MSE 提供的全链路灰度能力,可以在不需要修改任何您的业务代码的情况下,能够轻松实现上述能力。

阿里巴巴云原生的博客 860

k8s ingress介绍以及使用ingress实现灰度发布

例如,你可以这样做: kubectl apply -f my-ingress.yaml 这个命令会创建一个名为my-ingress的Ingress资源,并且通知Ingress控制器来更新它的配置。• nginx.ingress.kubernetes.io/canary-by-header-value:要匹配的 Request Header 的值,用于通知 Ingress 将请求路由到 Canary Ingress 中指定的服务。灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。

weixin_62834659的博客 897

K8S Base: Nginx Ingress实现金丝雀发布

通过给 Ingress 资源指定 Nginx Ingress 所支持的 annotation 可实现金丝雀发布。需给服务创建2个 Ingress,其中1个常规 Ingress另1个为带固定的 annotation 的 Ingress,称为 Canary Ingress。Canary Ingress 一般代表新版本的服务,结合另外针对流量切分策略的 annotation 一起配置即可实现多种场景的金丝雀发布。表示如果请求头中包含指定的 header 名称,并且值为always。

summer_fish的专栏 2319

K8S ingress 初体验 - ingress-ngnix 的安装与使用

1个ingress controller 可以对应多个ingress 吗?答: 可以的如果1个ingress 的controller 配有多个ingress instance, 里面的配置会冲突吗?如果有相同的path 设置答: 会冲突, 所以要保证多个ingress instance 的配置中 path 互相不重复如果一个 Ingress 控制器对应两个 Ingress 资源,并且这两个 Ingress 的配置中具有相同的路径,那么会发生冲突。

nvd11的专栏 1621

Nginx-ingress部署及使用

目录 一 手动部署-官网版 1.1 获取资源 1.2 安装RBAC 1.3 安装基础资源 1.4 安装ingress controllers 1.5 创建ingress controllers service 二 手动部署-github社区版(推荐) 2.1 获取资源 2.2 创建default backend 2.3 确认验证 三 ingress使用 3.1 创建demo环境 3.2 创建ingress策略 3.3 确认验证 四 ingress h

sinat_28371057的博客 2815

K8s中配置使用ingress

前面也提到,Ingress资源要正常工作,集群必须有一个正在运行的 Ingress 控制器, Ingress 控制器不是随集群自动启动的,目前k8s项目中,支持和维护 AWS、 GCE 和 Nginx Ingress 控制器;当然也有一起其他三方的控制器可使用;注意:配置文件中除了镜像的地址改后,ingress-nginx-controller的Service默认的type、ingress-nginx-controller的Deployment的配置中的hostNetwork也按照需求改一下。

tonglei111的博客 1526

k8s Ingress使用详解

k8s Ingress使用详解

congge 7801

ingress的使用

Service对集群之外暴露服务的主要方式有两种:NotdePort和 LoadBalancer,但是这两种方式,都有一定的缺点:基于这种现状,kubernetes提供了Ingress资源对象,Ingress只需要一个NodePort或者一个LB就可 以满足暴露多个Service的需求。工作机制大致如下图表示: 实际上,Ingress相当于一个7层的负载均衡器,是kubernetes对反向代理的一个抽象,它的工作原理 类似于Nginx,可以理解成在Ingress里建立诸多映射规则,Ingress Cont

Hurry6的博客 1885

【机械臂算法】基于最小惯性参数集的动力学辨识仿真实践

本文深入探讨了机械臂动力学参数辨识的核心挑战与解决方案,重点阐述了基于最小惯性参数集的理论与方法。通过分析PUMA560实例,详细介绍了利用QR分解法或符号推导法获取可辨识参数集,并系统讲解了从激励轨迹设计、仿真数据采集、线性系统求解到模型验证的完整实践流程,为高精度动力学建模与控制奠定了坚实基础。

weixin_29054399的博客 376

2d游戏地图编辑器_[U3D]基于MarchingCubes实现的War3Editor 地表/悬崖编辑器

花了几天时间研究清楚Marching cubes后,发现这个方法是一个非常适用于地图编辑,网格编辑,procedural 生成的工具。最大的优点有着较好的边缘,表面处理。然后我用U3D写了一个悬崖/地表的编辑器。其中使用到了Marching Cubes的2.5D,2D两种降维的方法。talk is cheap,让我看效果!DemoEditor展示https://www.zhihu.com/vide...

weixin_42504649的博客 1178

在K8S中,Ingress该如何使用?

首先,创建一个YAML文件来定义Ingress资源,其中包括路由规则、TLS配置(如果需要HTTPS)以及每个规则所指向的后端服务。metadata:spec:rules:http:paths:- path: /backend:service:port:name: httptls:- hosts:在上述例子中,任何发往主机名且路径为根()的请求会被转发到名为的服务的http端口。

努力变的更强 727

细聊Oracle通过ODBC数据源连接SQL Server数据库

    类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,废话不多说。    我的应用场景:    项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;    我的测试开发环境为64bitwin7PC机,本机上装有64位Oracl...

xueren_83的博客 1万+

k8s——ingress的基本使用

ingress controller是一个pod服务,封装了一个web前端负载均衡器,同时在其基础上实现了动态感知ingress并根据ingress的定义生成前端web负载均衡器的配置文件,ingress-nginx-controller本质上就是一个nginx,只不过它能根据ingress资源定义的动态生成nginx的配置文件,然后动态reload。个人觉得ingress controller的重大作用是将前端负载均衡器和k8s完美地结合起来,一方面在云、容器平台下方便配置管理,另一方面实现了。.....

WuDan_1112的博客 7921

STM32H723串口接收全为0 & CAN错误中断问题

STM32H723串口接收全为0 和 叠加的导致CAN错误问题

weixin_38743772的博客 3916

利用python爬取东方财富网股吧评论并进行情感分析(一)

利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直

YMG521000的博客 1万+

【K8s】Ingress的使用

上一章中,NotePort和LoadBalancer类型的Service可给集群外部机器提供访问,但这两种类型都有缺点:由此,Ingress资源对象出现,Ingress或者一个LB就可以满足暴露多个Service的需求。总结就是ingress中定义转发规则,ingress controller中解析规则,完成转发 Ingress(以Nginx为例)的工作原理如下:下载ingress的yaml文件: 创建ingress-nginx的pod和Service 创建pod和Service,结构如下:使用- - -把

llg___的博客 3155

硬件知识点-----SPI串联电阻、振铃、过冲

电阻取值,没有公式,一被传输线的特征阻抗为50欧姆左右,而TTL电路输出电阻大桃为13欧姆左右,在源端串一个33姆,大致和50相当,这样就可以柳制从终端反射回来的倍号,防止再次反射。传输时间tp=L/V,其中L是导线长度,V是电磁波在电路板中的传输速度V=C/sqrDk,其中Dk是光速衰减因子,对于电路板而言是铜线,Dk=4电磁波在电路板中的速度都是慢于光速的。实际上串联多大的电阻与传输线的阻抗有关,为了保证阻抗的连续性,如果传输线的特性阻抗 Z0与驱动源的输出阻抗 Zd不匹配,会引发信号的反射。

贾saisai的博客 2719

Kubernetes Ingress Controller 使用教程

Kubernetes Ingress Controller 使用教程 1. 项目介绍 Kubernetes Ingress Controller 是一个用于 Kubernetes 的 Ingress 控制器,它使用 NGINX 作为反向代理和负载均衡器。该项目的主要目的是为 Kubernetes 集群提供外部访问服务的统一入口,通过 Ingress 资源来管理 HTTP 和 HTTPS 路由。 2...

gitblog_00245的博客 967

GeoServer改造Springboot源码一(公共部分)

今天开始开启关于GeoServer的一个全新系列,主要是把改造Springboot后的详细代码粘贴出来,此文应配合《》系列共同阅读,按照前系列的时间顺序结合此系列的源码展示可以快速构建GeoServer功能的二次封装的后端系统。

龙井的专栏 1902

【教程4>第4章>第22节】FFT频偏估计方法,导频+cordic频偏估计方法,costas环的性能对比

频偏范围适应性:Costas 环频偏锁定和基于 PN 导频和 CORDIC 算法的频偏估计都可以通过调整参数来适应一定范围的频偏,但 Costas 环的频率捕获范围相对较窄,而基于 PN 导频和 CORDIC 算法的频偏估计,基于 FFT 变换频偏估计对频偏范围较大。在高信噪比条件下,三种方法都可以获得较高的估计精度,但在低信噪比环境中,基于 PN 导频和 CORDIC 算法的频偏估计,基于 FFT 变换频偏估计这两个开环方案相对更具优势,而Costas 环频偏锁定的精度可能会受到较大影响.

FPGA/MATLAB学习教程/源码/项目合作开发 610

如何使用K8S的Ingress

如何使用K8S的Ingress Ingress的好处与特点我就没有必要再说一次了,本文主要说明的是使用方法 准备条件 请先完成K8S的安装,安装ingress,它包括一个defaulebackend,与nginx-ingress-control,并pull下需要的docker image 注意 这里请注意一点,为了方便,我们希望在部署ingress的时候,将部署文件Ymal中的一个条目修改 修改y...

LegendHonor的博客 2265

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ingress之tls和path使用

ingress tls 上节课给大家展示了 traefik 的安装使用以及简单的 ingress 的配置方法,这节课我们来学习一下 ingress tls 以及 path 路径在 ingress 对象中的使用方法。 TLS 认证 在现在大部分场景下面我们都会使用 https 来访问我们的服务,这节课我们将使用一个自签名的证书,当然你有在一些正规机构购买的 CA 证书是最好的,这样任何人访问你...

weixin_34109408的博客 638

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Kubernetes - 使用Ingress、Ingress控制器(Ingress Controller)转发请求

上图是一个客户端访问k8s集群服务的示意图,本文只讲解ingress控制器、NodePort类型的Service对外暴露端口两部分。Ingress和Ingress控制器的官方定义如下。 Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP,Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟托管。 Ingress通常负责通过负载均衡器来实现 Ingress。 官方定义看得人云里雾里。我用大白话解释,打个比方Ingress控制器类似于与nginx,I..

CodingSoldier的博客 6942

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

在k8s中:ingress 原理、安装、使用案例

1、就是增强版的nginx、node的每个节点都监听80和443端口。2、来了http的请求、根据设置的路径转发到对应的service。3、转发:haproxy转发——————>ingress(80和443)————————> service ————————> pod。

m0_68750915的博客 2511

使用 Kubernetes Ingress 对外暴露服务

本文主要介绍如何通过 Kubernetes Ingress 资源对象实现从外部对 k8s 集群中服务的访问,介绍了 k8s 对外暴露服务的多种方法、Ingress 及 Ingress Controller 的概念。涉及到的话题有: k8s 对外暴露服务的方法; Ingress 及 Ingress Controller 简介; helm 裸机部署 Nginx Ingress Controller;...

qhh0205 1万+
上一篇: elk收集k8s微服务日志
下一篇: ingress部署
Apex   Predator
博客等级 码龄6年 9371粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值