日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Nginx Ingress如何遷移至ASM網關

本文介紹Nginx Ingress如何遷移至ASM網關。

前提條件

  • 已創建ASM企業版或旗艦版實例,且實例版本為最新版本。具體操作,請參見創建ASM實例

  • 已添加ACK集群到ASM實例。具體操作,請參見添加集群到ASM實例

方案示意圖

ASM

遷移步驟

步驟一:創建ASM網關

在ASM實例下采用IstioGateway YAML方式創建ASM網關時,需要復用已有的Nginx Ingress對應的CLB,創建對應ASM網關的IstioGateway YAML時,需要注意以下幾點:

說明

通過Service Loadbalancer類型聲明創建的CLB復用,請參見FAQ

  • 編輯ASM網關對應的IstioGateway YAML,在serviceAnnotations下設置CLB相關配置。

  • 復用Ingress已有的CLB實例,對應service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id Annotation

  • 設置不覆蓋CLB已有監聽,對應service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 'false'

  • 復用CLB已有的虛擬服務器組,如果service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port有多個端口及虛擬服務器組的組合,可以通過英文半角逗號(,)分隔。例如"${YOUR_VGROUP_ID_1}:80, ${YOUR_VGROUP_ID_2}:443"

  • 確認CLB的負載均衡調度算法已調整為WRR(加權輪詢),請根據需要,調整ASM網關實例在CLB下的權重。若將權重設置為0,CLB不會轉發流量,通常用于前期ASM網關下對應路由配置還未完或者遭遇異常時需要摘除流量的場景。

相關ServiceAnnotations舉例如下:

 serviceAnnotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxx"  //lb-xxxxx替換為您通過負載均衡管理控制臺創建的CLB實例ID。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 'false'  //需要顯示地設置為false,因為Istiogateway默認是覆蓋監聽的方式。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "${YOUR_VGROUP_ID}:80"   //${YOUR_VGROUP_ID}替換為虛擬服務器。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "60"   //設置Service流量權重,設置為0,則不再接受流量。
                

步驟二:手動Translate Ingress為VS、DR等Istio側的配置

請參照如下Ingress配置,將Ingress翻譯為Istio對應的VirtualService配置。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: helloworld
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
    - http:
        paths:
          - backend:
              serviceName: helloworld
              servicePort: 80
            path: /helloworld(/|$)(.*)
      host: example.com

預期結果:

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: example-vs
spec:
  gateways:
  - istio-system/ingressgateway  ## your gateway name
  hosts:
  - example.com
  http:
  - name: route-helloworld
    match:
    - uri:
        prefix: /helloworld/
    - uri:
        prefix: /helloworld
    rewrite:
      uri: /
    route:
    - destination:
        host: helloworld
        port:
          number: 80

VirtualService和Destinationrule可以和對應的服務Deployment放在同一個Namespace。如果不在同一個Namespace,對應的destination.host字段需要填寫為FQDN格式。

步驟三:驗證流量

Ingress配置轉換為對應的VirtualService后,您還需要進行驗證測試,確認配置是否正確以及是否生效。因此需要進行驗證測試。參考方案示意圖,您可以手動新建一個CLB方式,然后發送測試流量請求至該CLB進行測試流量驗證,通過測試結果判斷配置是否正確。

步驟四:調整Ingress對應的CLB下各個后端實例的權重,將流量逐漸遷移到ASM網關

推薦對應ASM網關實例的權重設置為一個較小的值(如1%),觀察線上請求是否符合預期,一定時間后逐漸增加,直到全部切換到ASM網關。

權重調整方式如下:

  • ASM網關的實例對應權重可以通過IstioGateway下的ServiceAnnotaions進行調整,對應service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "60"

  • Nginx實例對應的權重,可以通過編輯相關Service下的Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight進行操作。若Service未配置權重相關Annotation,Nginx Ingress實例的分發權重可以直接通過CLB控制臺下進行權重配置操作。