ingress使用

一、前言

     在 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后是访问到指定服务中 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值