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

使用全鏈路泳道實現全鏈路金絲雀灰度發布(K8s)

本文介紹Spring Cloud及Dubbo應用如何按泳道灰度策略進行金絲雀發布。

背景信息

K8s類型應用支持按泳道灰度策略進行金絲雀發布。基于全鏈路流控泳道的環境隔離機制,在應用灰度發布過程中,被添加至灰度泳道的灰度分批實例將與基線版本實例隔離。只有滿足流控泳道入口規則的流量才會被發送至泳道中的灰度分批實例中。

在相同微服務空間下,多個應用支持同時發布至同一泳道。滿足泳道入口規則的流量將被染色,并在泳道中全鏈路透傳,以實現全鏈路灰度控制。

image.png

泳道流控規則為避免流量中斷,默認存在Fallback策略:

  • 當滿足泳道流控規則的流量沒有對應灰度服務提供者時,流量會Fallback至基線。

  • 當不滿足泳道流控規則的流量沒有對應基線服務提供者時,流量會Fallback至灰度。

Spring Cloud應用進行金絲雀泳道發布

前提條件

已在EDAS控制臺部署完成本示例的四個應用:Zuul網關應用應用A應用B應用C,且每個應用副本數≥2。具體操作,請參見創建和部署應用概述(K8s)

步驟一:創建泳道組

  1. 登錄EDAS控制臺

  2. 在左側導航欄,選擇流量管理 > 微服務治理 > 全鏈路流量控制

  3. 全鏈路流量控制頁面頂部菜單欄選擇地域,在頁面中選擇目標微服務空間,然后單擊創建

  4. 創建泳道組對話框中設置泳道組相關參數,然后單擊確定

    image.png

步驟二:創建泳道

  1. 選擇并切換至步驟一:創建泳道組中創建好的泳道組,并單擊點擊創建第一個分流泳道

    image.png
  2. 創建流控泳道面板中配置相關參數后,單擊確定

    image.png
    • 入口規則本示例設置為基于Header的條件,當存在taggrey時,流量進入灰度泳道。

    • 接收打標流量應用中無需添加應用,應用與泳道的關聯由應用的金絲雀發布策略托管。

步驟三:應用按泳道策略進行金絲雀發布

  1. 登錄EDAS控制臺

  2. 在左側導航欄,選擇應用管理 > 應用列表,單擊需要進行金絲雀發布的應用名稱,如本示例中的應用B、應用C。

  3. 應用總覽頁面右上角,選擇部署 > 部署

  4. 選擇部署模式頁面,選擇金絲雀發布(灰度),并單擊開始部署

  5. 發布策略區域,單擊按泳道灰度,切換至泳道策略選擇框。

    image.png
  6. (可選)新建泳道發布策略需單擊添加策略

    添加泳道灰度策略面板,選擇已創建好的泳道組泳道,單擊確定。配置項信息,請參見c.設置灰度規則

    說明

    只有添加至泳道組中的應用,才支持選擇泳道組及其泳道。

    image.png
  7. 選擇策略下拉列表,選擇已創建的發布策略,然后單擊確定,觸發應用進行金絲雀發布。

    image.png

步驟四:配置確認

  1. 變更記錄頁面查看當前灰度批次及灰度泳道配置。

    image.png
  2. 流量管理 > 微服務治理 > 全鏈路流量控制頁面,可以看到應用的灰度批次已經加入指定泳道。

    image.png

步驟五:流量驗證

  1. 應用總覽頁面的基本信息區域,單擊運行狀態右側的點擊查看,查看灰度批次實例IP地址。

    image.pngimage.png
  2. 應用配置詳情面板,單擊Zuul應用的終端進入本地IP,發送灰度流量。

    for i in {1..10}; do curl  -H "tag: grey" http://47.111.XX.XX/sc-A/a ;sleep 0.1; echo ""; done
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
    Agrey[10.14.2.95] -> Bgrey[10.14.1.224] -> C[10.14.1.220]
  3. 應用配置詳情面板,單擊Zuul應用的終端進入本地IP,發送非灰度流量。

    for i in {1..10}; do curl http://47.111.XX.XX/sc-A/a ;sleep 0.1; echo ""; done     
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]
    A[10.14.1.214] -> B[10.14.2.92] -> C[10.14.1.220]

Dubbo應用進行金絲雀泳道發布

操作流程

  1. 已部署三個Dubbo應用,調用關系為應用A調用應用B應用B調用應用C

  2. 對應用B和應用C進行基于泳道策略的金絲雀發布,并將其泳道策略配置為同一泳道。

預期效果

應用A按特定判斷條件進行分發,滿足特定條件的流量會被轉發至應用B的灰度批次,并透傳至相同泳道中的其他應用灰度批次。

image.png

使用限制

  • 由于目前泳道入口規則基于HTTP協議設定,所以泳道規則對于Dubbo協議間的調用不會生效。

  • 應用的灰度分批選擇及添加至泳道,實際上是為當前應用的灰度分批實例打標簽。所以,流量識別并染色需自行注入流量標簽。

步驟一:創建泳道組

  1. 登錄EDAS控制臺

  2. 在左側導航欄,選擇流量管理 > 微服務治理 > 全鏈路流量控制

  3. 全鏈路流量控制頁面頂部菜單欄選擇地域,在頁面中選擇目標微服務空間,然后單擊創建

  4. 創建泳道組對話框中設置泳道組相關參數,將上述流量鏈路中涉及的應用添加至泳道組涉及所有應用中,然后單擊確定

    image.png

步驟二:創建泳道

  1. 選擇并切換至已創建的泳道組,單擊點擊創建第一個分流泳道

    image.png
  2. 創建流控泳道面板中配置相關參數后,單擊確定

    image.png
    • 對于Dubbo協議的服務,泳道入口規則無實際效果,故填寫任意條件即可。

    • 接收打標流量應用中無需添加應用,應用與泳道的關聯由應用的金絲雀發布策略托管。

  3. 全鏈路流量控制頁面,查看創建的流控泳道。

    image.png

步驟三:消費端應用流量標注入

本示例中為應用A。

  1. 在程序pom.xml中引入以下依賴。

            <dependency>
                <groupId>com.alibaba.arms.apm</groupId>
                <artifactId>arms-sdk</artifactId>
                <version>1.7.3</version>
            </dependency>
  2. 在代碼中增加流量判斷條件,并實現流量標注入。

    public String test(String param) {
        if ("grey".equals(param)) {
            injectGreyTrafficTag();
        }
        return demoService.echo(param);
    }
    
    // 注意:此處的laneTag替換為創建泳道時設置的泳道標,其他配置不變。
    private void injectGreyTrafficTag() {
        String laneTag = "testbaggage";
        Span span = Tracer.builder().getSpan();
        Map<String, String> baggageItems = span.baggageItems();
        JSONObject tag = new JSONObject();
        tag.put("name", laneTag);
        tag.put("priority", 100);
        baggageItems.put("__microservice_tag__", JSONObject.toJSONString(Arrays.asList(tag)));
        baggageItems.put("cs", laneTag + "(DEFAULT)");
        span.withBaggage(baggageItems);
    }

步驟四:應用按泳道策略進行金絲雀發布

  1. 登錄EDAS控制臺

  2. 在左側導航欄,選擇應用管理 > 應用列表,單擊需要進行金絲雀發布的應用名稱,如本示例中的應用B、應用C。

  3. 應用總覽頁面右上角,選擇部署 > 部署

  4. 選擇部署模式頁面,選擇金絲雀發布(灰度),并單擊開始部署

  5. 發布策略區域,單擊按泳道灰度,切換至泳道策略選擇框。

    image.png
  6. (可選)新建泳道發布策略需單擊添加策略

    添加泳道灰度策略面板,選擇已創建好的泳道組泳道,單擊確定。配置項信息,請參見c.設置灰度規則

    說明

    只有添加至泳道組中的應用,才支持選擇泳道組及其泳道。

    image.png
  7. 選擇策略框,選擇已創建的發布策略,然后單擊確定,觸發應用進行金絲雀發布。

    image.png

步驟五:配置確認

  1. 變更記錄頁面查看當前灰度批次及灰度泳道配置。

    image.png
  2. 流量管理>微服務治理>全鏈路流量控制頁面,可以看到應用的灰度批次已經加入指定泳道。

    image.png

步驟六:流量驗證

  1. 應用總覽頁面的基本信息區域,單擊運行狀態右側的點擊查看,查看灰度批次實例IP地址。

    image.pngimage.png
  2. 應用配置詳情面板,單擊操作列的終端,發送灰度流量。

    for i in {1..10}; do curl http://127.0.0.1:8088/traffic?param=grey;sleep 0.1; echo ""; done
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
    A[10.14.1.213] -> B[10.14.1.210] -> C[10.14.1.212]
  3. 應用配置詳情面板,單擊操作列的終端,發送非灰度流量。

    for i in {1..10}; do curl http://127.0.0.1:8088/traffic;sleep 0.1; echo ""; done
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]
    A[10.14.1.213] -> B[10.14.2.51] -> C[10.14.1.251]

相關文檔

使用控制臺金絲雀發布應用(K8s)