banner
欢迎观看

通过Ingress实现金丝雀发布

Scroll down

本文作者:丁辉

通过Ingress实现金丝雀发布

通过 Ingress 实现基于权重的金丝雀

部署测试示例 Nginx Deployment v1和v2

  1. 部署 v1 版本

    1
    kubectl apply -f https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/nginx-deployment-v1.yaml
  2. 部署 v2 版本

    1
    kubectl apply -f https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/nginx-deployment-v2.yaml
  3. 创建两个 Service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Service
    metadata:
    name: nginx-deployment-service-1
    namespace: default
    spec:
    selector:
    app: nginx
    version: v1
    ports:
    - port: 80
    targetPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
    name: nginx-deployment-service-2
    namespace: default
    spec:
    selector:
    app: nginx
    version: v2
    ports:
    - port: 80
    targetPort: 80
    EOF
  4. 创建 Ingress 资源

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    cat <<EOF | kubectl apply -f -
    # 金丝雀 Ingress 对象为 v1 版本
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: nginx-ingress-1
    namespace: default
    spec:
    ingressClassName: nginx # 通过 kubectl get ingressclass 查看
    rules:
    - host: example.com # 修改为自己的对外域名
    http:
    paths:
    - backend:
    service:
    name: nginx-deployment-service-1 # Nginx Serice 名称
    port:
    number: 80 # Nginx 端口
    path: /
    pathType: Prefix
    tls:
    - hosts:
    - example.com # 替换为你的域名
    secretName: example-tls # 替换为你的证书
    ---
    # 金丝雀 Ingress 对象为 v2 版本
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: nginx-ingress-2
    namespace: default
    annotations:
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-weight: "10" # 10%流量到金丝雀
    spec:
    ingressClassName: nginx # 通过 kubectl get ingressclass 查看
    rules:
    - host: example.com # 修改为自己的对外域名
    http:
    paths:
    - backend:
    service:
    name: nginx-deployment-service-2 # Nginx Serice 名称
    port:
    number: 80 # Nginx 端口
    path: /
    pathType: Prefix
    tls:
    - hosts:
    - example.com # 替换为你的域名
    secretName: example-tls # 替换为你的证书
    EOF
  5. 慢慢调整 Nginx-Ingress-2 流量到 100%,即可完成更新

要是这篇文章为您解了惑、带来了帮助,不妨用小小的打赏来支持下我的创作吧,您的鼓励就是我持续分享的最大动力哦,感谢您啦!

其他文章
cover
创建Ingress资源提供访问
  • 70/01/01
  • 00:00
  • Kubernetes-网关
cover
使用Kind安装Kubernetes
  • 70/01/01
  • 00:00
  • Kubernetes-部署文档
目录导航 置顶
  1. 1. 通过Ingress实现金丝雀发布
请输入关键词进行搜索