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

ingress能用来干什么

你是否想要用Kubernetes来运行你的容器化应用,但是不知道如何让外界访问你的应用呢?如果是这样,那么你需要了解一下Ingress这个神奇的资源对象,它可以让你轻松地配置你的应用的网络访问。Ingress是Kubernetes的一个核心组件,它可以让你定义一些规则,来指定哪些请求可以访问哪些服务,以及如何处理这些请求。

ingress是什么

要使用Ingress,你需要两个东西:一个Ingress控制器和一个Ingress资源。Ingress控制器是一个负责实现Ingress规则的组件,它通常是一个反向代理服务器,如Nginx,Traefik,Istio等。Ingress资源是一个定义了Ingress规则的YAML文件,它可以让你指定如何匹配请求的路径或者主机名,以及如何转发请求到对应的服务或者端口。

要创建一个Ingress资源,你需要先创建一个或者多个服务,来暴露你的应用的端口。然后,你需要编写一个Ingress资源的YAML文件,来定义你的Ingress规则。例如,你可以这样写:

  apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: rules: •  host: example.com  http: paths: •  path: /  pathType: Prefix backend: service: name: my-service port: number: 80  这个文件定义了一个名为my-ingress的Ingress资源,它匹配example.com这个主机名,并且将所有以/开头的请求转发到名为my-service的服务的80端口。

怎么使用ingress

要部署你的Ingress资源,你需要先安装和启动一个Ingress控制器,然后使用kubectl apply命令来应用你的Ingress资源的YAML文件。例如,你可以这样做:  kubectl apply -f my-ingress.yaml  这个命令会创建一个名为my-ingress的Ingress资源,并且通知Ingress控制器来更新它的配置。你可以使用kubectl get ingress命令来查看你的Ingress资源的状态,以及它暴露的IP地址或者域名。

使用ingress实现灰度发布

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。

k8s 的 nginx-ingress 提供了金丝雀发布规则, 包含基于header的灰度发布、基于权重比例的灰度发布和基于cookie的灰度发布。  

要使用nginx-ingress实现灰度发布,你需要两个东西:一个Ingress控制器和一个Ingress资源。Ingress控制器是一个负责实现Ingress规则的组件,它通常是一个反向代理服务器,如Nginx,Traefik,Istio等。Ingress资源是一个定义了Ingress规则的YAML文件,它可以让你指定如何匹配请求的路径或者主机名,以及如何转发请求到对应的服务或者端口。  

要管理Ingress的金丝雀规则,你可以使用以下四种注解:  

•  nginx.ingress.kubernetes.io/canary-by-header:基于 Request Header 的流量切分,适用于灰度发布以及 A/B 测试。 当 Request Header 设置为always时,请求将会被一直发送到 Canary 版本;当 Request Header 设置为never时,请求不会被发送到 Canary 入口;对于任何其他 Header 值,将忽略 Header,并通过优先级将请求与其他金丝雀规则进行优先级的比较。  

•  nginx.ingress.kubernetes.io/canary-by-header-value:要匹配的 Request Header 的值,用于通知 Ingress 将请求路由到 Canary Ingress 中指定的服务。 当 Request Header 设置为此值时,它将被路由到 Canary 入口。 该规则允许用户自定义 Request Header 的值,必须与上一个 annotation (即:canary-by-header)一起使用。

  •  nginx.ingress.kubernetes.io/canary-weight:基于服务权重的流量切分,适用于蓝绿部署,权重范围 0 - 100 按百分比将请求路由到 Canary Ingress 中指定的服务。 权重为 0 意味着该金丝雀规则不会向 Canary 入口的服务发送任何请求。 权重为 100 意味着所有请求都将被发送到 Canary 入口。  

•  nginx.ingress.kubernetes.io/canary-by-cookie:基于 Cookie 的流量切分,适用于灰度发布与 A/B 测试。 用于通知 Ingress 将请求路由到 Canary Ingress 中指定的服务的cookie。 当 cookie 值设置为always时,它将被路由到 Canary 入口;当 cookie 值设置为never时,请求不会被发送到 Canary 入口;对于任何其他值,将忽略 cookie 并将请求与其他金丝雀规则进行优先级的比较 。

 注意:金丝雀规则按优先顺序进行如下排序: canary-by-header - > canary-by-cookie - > canary-weight 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值