国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8S Nginx Ingress實現(xiàn)金絲雀發(fā)布

這篇具有很好參考價值的文章主要介紹了K8S Nginx Ingress實現(xiàn)金絲雀發(fā)布。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

通過給 Ingress 資源指定 Nginx Ingress 所支持的 annotation 可實現(xiàn)金絲雀發(fā)布。

需給服務(wù)創(chuàng)建2個 Ingress,其中1個常規(guī) Ingress,另1個為帶?nginx.ingress.kubernetes.io/canary: "true"?固定的 annotation 的 Ingress,稱為 Canary Ingress。

Canary Ingress 一般代表新版本的服務(wù),結(jié)合另外針對流量切分策略的 annotation 一起配置即可實現(xiàn)多種場景的金絲雀發(fā)布。

以下為相關(guān) annotation 的詳細(xì)介紹:

  • nginx.ingress.kubernetes.io/canary-by-header
    表示如果請求頭中包含指定的 header 名稱,并且值為?always,就將該請求轉(zhuǎn)發(fā)給該 Ingress 定義的對應(yīng)后端服務(wù)。如果值為?never?則不轉(zhuǎn)發(fā),可以用于回滾到舊版。如果為其他值則忽略該 annotation。

  • nginx.ingress.kubernetes.io/canary-by-header-value
    該 annotation 可以作為?canary-by-header?的補(bǔ)充,可指定請求頭為自定義值,包含但不限于?always?或?never。當(dāng)請求頭的值命中指定的自定義值時,請求將會轉(zhuǎn)發(fā)給該 Ingress 定義的對應(yīng)后端服務(wù),如果是其它值則忽略該 annotation。

  • nginx.ingress.kubernetes.io/canary-by-header-pattern
    與?canary-by-header-value?類似,區(qū)別為該 annotation 用正則表達(dá)式匹配請求頭的值,而不是只固定某一個值。如果該 annotation 與?canary-by-header-value?同時存在,該 annotation 將被忽略。

  • nginx.ingress.kubernetes.io/canary-by-cookie
    與?canary-by-header?類似,該 annotation 用于 cookie,僅支持?always?和?never。

  • nginx.ingress.kubernetes.io/canary-weight
    表示 Canary Ingress 所分配流量的比例的百分比,取值范圍 [0-100]。例如,設(shè)置為10,則表示分配10%的流量給 Canary Ingress 對應(yīng)的后端服務(wù)。

  • 金絲雀規(guī)則按優(yōu)先順序進(jìn)行如下排序:canary-by-header - > canary-by-cookie - > canary-weight

基于不同的場景,灰度發(fā)布有四種:

//第一種,所有的請求都會被轉(zhuǎn)發(fā)到灰度(Canary)版本
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-by-header: "always"
 
//第二種,所有的請求都不會被轉(zhuǎn)發(fā)到灰度(Canary)版本
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-by-header: "never"
 
//第三種,如果請求的header頭包含"user-id: user_1",該請求會被轉(zhuǎn)發(fā)到灰度(Canary)版本
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-by-header: "user_id"
    nginx.ingress.kubernetes.io/canary-by-header-value: "user_1"
 
//第四種,如果請求的header頭包含"user-id: user_2"或"user-id: user-3"或"user-id: user4",該請求會被轉(zhuǎn)發(fā)到灰度(Canary)版
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-by-header: "user_id"    #在networking.k8s.io/v1中,canary-by-header的值盡量不用使用下劃線“_”。如果使用了,請求頭中要使用中橫線“-”代替。
    nginx.ingress.kubernetes.io/canary-by-header-pattern: "user_2|user-3|user4"

一、部署藍(lán)環(huán)境版本服務(wù)

1、ConfigMap

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-blue-config
data:
  nginx.conf: |-
    worker_processes  1;

    events {
        accept_mutex on;
        multi_accept on;
        use epoll;
        worker_connections  1024;
    }

    http {
        ignore_invalid_headers off;
        server {
            listen 80;
            location / {
                access_by_lua '
                    local header_str = ngx.say("blue")
                ';
            }
        }
    }

2、Deployment

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nginx-blue
  labels:
    dce.daocloud.io/app: nginx-blue
  annotations:
    dce.daocloud.io/last-replicas: '1'
    deployment.kubernetes.io/revision: '3'
    kubernetes.io/change-cause: update YAML
spec:
  replicas: 1
  selector:
    matchLabels:
      dce.daocloud.io/component: nginx-blue
  template:
    metadata:
      name: nginx-blue
      labels:
        dce.daocloud.io/app: nginx-blue
        dce.daocloud.io/component: nginx-blue
      annotations:
        dce.daocloud.io/parcel.egress.burst: '0'
        dce.daocloud.io/parcel.egress.rate: '0'
        dce.daocloud.io/parcel.ingress.burst: '0'
        dce.daocloud.io/parcel.ingress.rate: '0'
        dce.daocloud.io/parcel.net.type: calico
    spec:
      volumes:
        - name: nginx-blue-config
          configMap:
            name: nginx-blue-config
            defaultMode: 420
      containers:
        - name: nginx-blue
          image: 'x.x.x.x/library/openresty:1.19.9.1-sw-r4'
          resources:
            limits:
              cpu: 500m
              memory: '314572800'
            requests:
              cpu: 200m
              memory: '314572800'
          volumeMounts:
            - name: nginx-blue-config
              mountPath: /etc/nginx/nginx.conf
              subPath: nginx.conf

3、Service

kind: Service
apiVersion: v1
metadata:
  name: nginx-blue-default
  labels:
    dce.daocloud.io/app: nginx-blue
  annotations:
    io.daocloud.dce.serviceSelectorType: service
spec:
  ports:
    - name: nginx-nginx-default-80680-80
      protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 31046
  selector:
    dce.daocloud.io/component: nginx-blue
  clusterIP: 172.31.69.137
  type: NodePort
  sessionAffinity: None
  externalTrafficPolicy: Cluster

4、修改pod內(nèi)容

cd /usr/local/openresty/nginx/html/

ls
50x.html  index.html

echo "Hello Blue" > index.html

cat index.html 
Hello Blue

二、部署綠環(huán)境版本服務(wù)

1、ConfigMap

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-green-config
data:
  nginx.conf: |-
    worker_processes  1;

    events {
        accept_mutex on;
        multi_accept on;
        use epoll;
        worker_connections  1024;
    }

    http {
        ignore_invalid_headers off;
        server {
            listen 80;
            location / {
                access_by_lua '
                    local header_str = ngx.say("green")
                ';
            }
        }
    }

2、Deployment

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nginx-green
  labels:
    dce.daocloud.io/app: nginx-green
  annotations:
    deployment.kubernetes.io/revision: '5'
    kubernetes.io/change-cause: update YAML
spec:
  replicas: 1
  selector:
    matchLabels:
      dce.daocloud.io/component: nginx-green
  template:
    metadata:
      name: nginx-green
      labels:
        dce.daocloud.io/app: nginx-green
        dce.daocloud.io/component: nginx-green
        env: green
      annotations:
        dce.daocloud.io/parcel.egress.burst: '0'
        dce.daocloud.io/parcel.egress.rate: '0'
        dce.daocloud.io/parcel.ingress.burst: '0'
        dce.daocloud.io/parcel.ingress.rate: '0'
        dce.daocloud.io/parcel.net.type: calico
        dce.daocloud.io/parcel.net.value: default-ipv4-ippool
    spec:
      volumes:
        - name: nginx-green-config
          configMap:
            name: nginx-green-config
            defaultMode: 420
      containers:
        - name: nginx-green
          image: 'x.x.x.x/library/openresty:1.19.9.1-sw-r4'
          resources:
            limits:
              cpu: 500m
              memory: '314572800'
            requests:
              cpu: 200m
              memory: '314572800'
          volumeMounts:
            - name: nginx-green-config
              mountPath: /etc/nginx/nginx.conf
              subPath: nginx.conf

3、Service

kind: Service
apiVersion: v1
metadata:
  name: nginx-green-default
  labels:
    dce.daocloud.io/app: nginx-green
  annotations:
    io.daocloud.dce.serviceSelectorType: service
spec:
  ports:
    - name: nginx-nginx-default-15833-80
      protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 35218
  selector:
    dce.daocloud.io/component: nginx-green
  clusterIP: 172.31.207.22
  type: NodePort
  sessionAffinity: None
  externalTrafficPolicy: Cluster

?4、修改pod內(nèi)容

cd /usr/local/openresty/nginx/html/

ls
50x.html  index.html

echo "Hello Green" > index.html

cat index.html 
Hello Green

三、設(shè)置Ingress

1、blue環(huán)境Ingress

kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
  name: nginx-blue-ingress
  labels:
    dce.daocloud.io/app: nginx-blue
  annotations:
    nginx.ingress.kubernetes.io/use-port-in-redirects: 'true'
spec:
  rules:
    - host: nginx.ms-sit.xxxxxx.net
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              serviceName: nginx-blue-default
              servicePort: 80

2、green環(huán)境Ingress

案例1:

kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
  name: nginx-green-ingress
  labels:
    dce.daocloud.io/app: nginx-green
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/canary: 'true'
    nginx.ingress.kubernetes.io/canary-by-header: env
    nginx.ingress.kubernetes.io/canary-by-header-pattern: green
spec:
  rules:
    - host: nginx.ms-sit.xxxxxx.net
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              serviceName: nginx-green-default
              servicePort: 80

案例2:

kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
  name: nginx-green-ingress  
ingress
  labels:
    dce.daocloud.io/app: nginx-green
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/canary: 'true'
    nginx.ingress.kubernetes.io/canary-by-header: Cookie
    nginx.ingress.kubernetes.io/canary-by-header-pattern: bu=xxxcn|bu=xxxsg
spec:
  rules:
    - host: nginx.ms-sit.aswatson.net
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              serviceName: nginx-green-default
              servicePort: 80

四、測試

K8S Nginx Ingress實現(xiàn)金絲雀發(fā)布,K8S,kubernetes,nginx

案例1:

K8S Nginx Ingress實現(xiàn)金絲雀發(fā)布,K8S,kubernetes,nginx

案例2:

K8S Nginx Ingress實現(xiàn)金絲雀發(fā)布,K8S,kubernetes,nginx文章來源地址http://www.zghlxwxcb.cn/news/detail-678666.html

到了這里,關(guān)于K8S Nginx Ingress實現(xiàn)金絲雀發(fā)布的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微服務(wù)部署:金絲雀發(fā)布、藍(lán)綠發(fā)布和滾動發(fā)布的對比

    金絲雀發(fā)布、藍(lán)綠發(fā)布和滾動發(fā)布都是軟件發(fā)布策略,它們都旨在降低發(fā)布風(fēng)險并提高發(fā)布速度。但是,這三種策略在工作方式、優(yōu)缺點等方面存在一些差異。 工作方式 金絲雀發(fā)布 :將新版本軟件逐步發(fā)布給用戶,從一小部分用戶開始,逐漸擴(kuò)展到所有用戶。 藍(lán)綠發(fā)布 :

    2024年02月19日
    瀏覽(22)
  • 1W字長文:藍(lán)綠發(fā)布、金絲雀發(fā)布、滾動發(fā)布、A/B測試 原理和實操

    1W字長文:藍(lán)綠發(fā)布、金絲雀發(fā)布、滾動發(fā)布、A/B測試 原理和實操

    藍(lán)綠發(fā)布、金絲雀發(fā)布、滾動發(fā)布、A/B測試 ,是大家日常常見的發(fā)布工作。所以 發(fā)布的原理和實操 是一個 非常、非常核心的面試知識點 。 在40歲老架構(gòu)師 尼恩的 讀者交流群 (50+)中,其相關(guān)面試題是一個非常、非常高頻的交流話題。 只要一面試,基本就會問: 對灰度發(fā)布

    2024年02月04日
    瀏覽(25)
  • 藍(lán)/綠部署 VS 金絲雀部署

    藍(lán)/綠部署 VS 金絲雀部署

    在生產(chǎn)環(huán)境中更新和配置應(yīng)用程序通常是件令人望而生畏的事。面對如此多的可用選項,應(yīng)如何選擇最適合你的用例的部署策略? 部署策略用于升級或配置正在運(yùn)行的應(yīng)用程序。在下文中,我們將討論三種部署策略: 重建部署 :在部署新版本之前,終止當(dāng)前版本。 藍(lán)/綠部

    2024年02月06日
    瀏覽(44)
  • 自動化金絲雀部署:Flagger全面解讀webhook(含源碼)

    自動化金絲雀部署:Flagger全面解讀webhook(含源碼)

    內(nèi)容導(dǎo)讀: 上文通過下面的配置就實現(xiàn)了 驗收測試 和 壓力測試 ,對此有以下疑問: metadata定義腳本和類型,說明接口能執(zhí)行shell,那它是怎么實現(xiàn)的? type未設(shè)置是怎樣的執(zhí)行邏輯?type有哪些值,各有什么作用? 本文將通過源碼來解答以上問題 本文采用 粗讀 源碼方式,

    2024年04月11日
    瀏覽(37)
  • k8s使用ingress實現(xiàn)應(yīng)用的灰度發(fā)布升級

    k8s使用ingress實現(xiàn)應(yīng)用的灰度發(fā)布升級

    v1是1.14.0版本nginx ,實操時候升級到v2是1.20.0版本nginx,來測試灰度發(fā)布實現(xiàn)過程 一、方案:使用ingress實現(xiàn)應(yīng)用的灰度發(fā)布 1、服務(wù)端:正常版本v1,灰度升級版本v2 2、客戶端:帶有請求頭version=v2標(biāo)識的請求訪問版本v2,其他的請求訪問版本v1 3、待版本v2穩(wěn)定后,所有請求切換

    2024年01月24日
    瀏覽(23)
  • k8s中部署nginx-ingress實現(xiàn)外部訪問k8s集群內(nèi)部服務(wù)

    k8s中部署nginx-ingress實現(xiàn)外部訪問k8s集群內(nèi)部服務(wù)

    k8s通過nginx-ingress實現(xiàn)集群外網(wǎng)訪問功能 1.1 ingress 工作原理 step1:ingress contronler通過與k8s的api進(jìn)行交互,動態(tài)的去感知k8s集群中ingress服務(wù)規(guī)則的變化,然后讀取它,并按照定義的ingress規(guī)則,轉(zhuǎn)發(fā)到k8s集群中對應(yīng)的service。 step2:而這個ingress規(guī)則寫明了哪個域名對應(yīng)k8s集群中的

    2024年02月07日
    瀏覽(27)
  • Kubernetes(k8s)使用ingress發(fā)布服務(wù)

    目錄 一.系統(tǒng)環(huán)境 二.前言 三.Kubernetes ingress簡介 四.Ingress vs NodePort vs LoadBalancer 五.安裝部署Nginx Ingress Controller控制器 六.使用Ingress來發(fā)布Kubernetes服務(wù) 6.1 創(chuàng)建3個pod 6.2 配置ingress規(guī)則發(fā)布服務(wù) 七.總結(jié) 本文主要基于Kubernetes1.21.9和Linux操作系統(tǒng)CentOS7.4。 服務(wù)器版本 Nginx Ingress C

    2024年02月08日
    瀏覽(22)
  • k8s部署ingress-nginx

    k8s部署ingress-nginx

    k8s服務(wù)對外暴露有三種方式 NodePort,LoadBalancer,Ingress Nodeport : 服務(wù)暴露需要在集群每個節(jié)點都開放一個同樣的端口,通過 nodtIp:nodePort 來訪問,如果服務(wù)數(shù)量多了,開放的端口就難以管理 LoadBalancer : 大部分情況下只適用于支持外部負(fù)載均衡器的云提供商(AWS,阿里云,華為云等)

    2024年02月04日
    瀏覽(22)
  • 關(guān)于k8s中ingress、Gateway、nginx之間關(guān)系

    在Kubernetes中,Ingress是一種用于將外部流量路由到集群內(nèi)部服務(wù)的API對象。它通常與Ingress控制器一起使用,Ingress控制器負(fù)責(zé)根據(jù)Ingress規(guī)則路由外部流量到不同的服務(wù)上。 下面是使用Ingress的一些步驟: 安裝Ingress控制器 在Kubernetes中,Ingress控制器是需要安裝和配置的。有許多

    2024年02月09日
    瀏覽(26)
  • K8s的ingress-nginx配置https

    K8s的ingress-nginx配置https

    在另一臺機(jī)器上配置hosts解析www.yaoyao.com,然后訪問 curl --cacert tls.crt https://www.yaoyao.com:10443 這里的10443端口是ingress-nginx-controller服務(wù)暴露的nodeport端口

    2024年02月07日
    瀏覽(55)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包