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

通過ASM入口網(wǎng)關(guān)訪問網(wǎng)格內(nèi)gRPC服務(wù)

您可以通過ASM入口網(wǎng)關(guān)安全地訪問網(wǎng)格內(nèi)的gRPC服務(wù),實(shí)現(xiàn)對(duì)gRPC服務(wù)的精確訪問控制,提升服務(wù)治理能力,保障服務(wù)間通信的安全性。本文介紹如何通過入口網(wǎng)關(guān)訪問網(wǎng)格內(nèi)gRPC服務(wù),并在gRPC的兩個(gè)版本之間進(jìn)行流量切換。

前提條件

步驟一:部署示例應(yīng)用

部署名為istio-grpc-server-v1和istio-grpc-server-v2的示例應(yīng)用。

  1. 登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群

  2. 集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇工作負(fù)載 > 無狀態(tài)

  3. 無狀態(tài)頁面上方,選擇目標(biāo)命名空間,然后在右上角單擊使用YAML創(chuàng)建資源

    說明

    當(dāng)前選中的命名空間應(yīng)當(dāng)已標(biāo)注自動(dòng)注入Sidecar,即包含istio-injection=enabled標(biāo)簽。具體操作,請(qǐng)參見啟用自動(dòng)注入

  4. 創(chuàng)建頁面,選擇自定義示例模板,配置以下YAML,然后單擊創(chuàng)建

    展開查看YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: grpc-helloworld-py-v1
      labels:
        app: grpc-helloworld-py
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: grpc-helloworld-py
          version: v1
      template:
        metadata:
          labels:
            app: grpc-helloworld-py
            version: v1
        spec:
          containers:
            - name: grpc-helloworld-py
              image: registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog/istio-grpc-server:grpc-helloworld-py-v1.0
              imagePullPolicy: Always
              env:
                - name: podname
                  valueFrom:
                    fieldRef:
                      apiVersion: v1
                      fieldPath: metadata.name
              ports:
                - containerPort: 50051
                  name: grpc-port
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: grpc-helloworld-py-v2
      labels:
        app: grpc-helloworld-py
        version: v2
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: grpc-helloworld-py
          version: v2
      template:
        metadata:
          labels:
            app: grpc-helloworld-py
            version: v2
        spec:
          containers:
            - name: grpc-helloworld-py
              image: registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog/istio-grpc-server:grpc-helloworld-py-v1.0
              imagePullPolicy: Always
              env:
                - name: podname
                  valueFrom:
                    fieldRef:
                      apiVersion: v1
                      fieldPath: metadata.name
              ports:
                - containerPort: 50051
                  name: grpc-port
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: grpc-helloworld-py
      labels:
        app: grpc-helloworld-py
    spec:
      ports:
        - port: 50051
          name: grpc-port
      selector:
        app: grpc-helloworld-py

步驟二:設(shè)置服務(wù)網(wǎng)格ASM的路由規(guī)則

設(shè)置服務(wù)網(wǎng)格的服務(wù)網(wǎng)關(guān)、虛擬服務(wù)和目標(biāo)規(guī)則,將流量全部指向istio-grpc-server-v1。

  1. 登錄ASM控制臺(tái),在左側(cè)導(dǎo)航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁面,找到待配置的實(shí)例,單擊實(shí)例的名稱或在操作列中單擊管理

  3. 創(chuàng)建網(wǎng)關(guān)規(guī)則

    1. 在網(wǎng)格詳情頁面左側(cè)導(dǎo)航欄,選擇ASM網(wǎng)關(guān) > 網(wǎng)關(guān)規(guī)則,然后在右側(cè)頁面,單擊使用YAML創(chuàng)建

    2. 創(chuàng)建頁面,設(shè)置命名空間default,選擇任意場景模版,配置以下YAML,然后單擊創(chuàng)建

      apiVersion: networking.istio.io/v1beta1
      kind: Gateway
      metadata:
        name: grpc-gateway
      spec:
        selector:
          istio: ingressgateway
        servers:
        - port:
            number: 8080
            name: grpc
            protocol: GRPC
          hosts:
          - "*"
  4. 創(chuàng)建目標(biāo)規(guī)則

    1. 在網(wǎng)格詳情頁面左側(cè)導(dǎo)航欄,選擇流量管理中心 > 目標(biāo)規(guī)則,然后在右側(cè)頁面,單擊使用YAML創(chuàng)建

    2. 創(chuàng)建頁面,設(shè)置命名空間default,選擇任意場景模版,配置以下YAML,然后單擊創(chuàng)建

      apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        name: dr-istio-grpc-server
      spec:
        host: grpc-helloworld-py
        trafficPolicy:
          loadBalancer:
            simple: ROUND_ROBIN
        subsets:
          - name: v1
            labels:
              version: "v1"
          - name: v2
            labels:
              version: "v2"    
  5. 創(chuàng)建虛擬服務(wù)

    1. 在網(wǎng)格詳情頁面左側(cè)導(dǎo)航欄,選擇流量管理中心 > 虛擬服務(wù),然后在右側(cè)頁面,單擊使用YAML創(chuàng)建

    2. 創(chuàng)建頁面,設(shè)置命名空間default,選擇任意場景模版,配置以下YAML,然后單擊創(chuàng)建

      展開查看YAML

      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: grpc-vs
      spec:
        hosts:
        - "*"
        gateways:
        - grpc-gateway
        http:
          - match:
              - port: 8080
            route:
              - destination:
                  host: grpc-helloworld-py
                  port:
                    number: 50051
                  subset: v1
                weight: 100
              - destination:
                  host: grpc-helloworld-py
                  port:
                    number: 50051
                  subset: v2
                weight: 0        

步驟三:部署新入口網(wǎng)關(guān)或復(fù)用已有入口網(wǎng)關(guān)

在入口網(wǎng)關(guān)中,如果不存在8080端口,需要添加8080端口。

新建入口網(wǎng)關(guān)

  1. 登錄ASM控制臺(tái),在左側(cè)導(dǎo)航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁面,單擊目標(biāo)實(shí)例名稱,然后在左側(cè)導(dǎo)航欄,選擇ASM網(wǎng)關(guān) > 入口網(wǎng)關(guān)

  3. 入口網(wǎng)關(guān)頁面,單擊創(chuàng)建,配置相關(guān)信息,然后單擊創(chuàng)建

    部分配置項(xiàng)說明如下。關(guān)于配置項(xiàng)的更多信息,請(qǐng)參見入口網(wǎng)關(guān)配置項(xiàng)說明

    配置項(xiàng)

    說明

    部署集群

    選擇要部署入口網(wǎng)關(guān)的集群。

    負(fù)載均衡CLB類型

    此處指定負(fù)載均衡的類型為公網(wǎng)訪問

    負(fù)載均衡

    選擇負(fù)載均衡。

    • 使用已有負(fù)載均衡:從已有負(fù)載均衡列表中選擇。

    • 新建負(fù)載均衡CLB:單擊新建負(fù)載均衡CLB,從下拉列表中選擇所需的負(fù)載均衡規(guī)格。

    說明

    建議您為每個(gè)Kubernetes服務(wù)分配一個(gè)CLB。如果多個(gè)Kubernetes服務(wù)復(fù)用同一個(gè)CLB,存在以下風(fēng)險(xiǎn)和限制:

    • 使用已有的CLB會(huì)強(qiáng)制覆蓋已有監(jiān)聽,可能會(huì)導(dǎo)致您的應(yīng)用不可訪問。

    • Kubernetes通過Service創(chuàng)建的CLB不能復(fù)用,只能復(fù)用您手動(dòng)在控制臺(tái)(或調(diào)用OpenAPI)創(chuàng)建的CLB。

    • 復(fù)用同一個(gè)CLB的多個(gè)Service不能有相同的前端監(jiān)聽端口,否則會(huì)造成端口沖突。

    • 復(fù)用CLB時(shí),監(jiān)聽的名字以及虛擬服務(wù)器組的名字被Kubernetes作為唯一標(biāo)識(shí)符。請(qǐng)勿修改監(jiān)聽和虛擬服務(wù)器組的名字。

    • 不支持跨集群復(fù)用CLB。

    端口映射

    設(shè)置協(xié)議TCP服務(wù)端口8080

在已有入口網(wǎng)關(guān)添加8080端口

  1. 登錄ASM控制臺(tái),在左側(cè)導(dǎo)航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁面,單擊目標(biāo)實(shí)例名稱,然后在左側(cè)導(dǎo)航欄,選擇ASM網(wǎng)關(guān) > 入口網(wǎng)關(guān)

  3. 入口網(wǎng)關(guān)頁面,單擊目標(biāo)網(wǎng)關(guān)名稱,在網(wǎng)關(guān)詳情頁面的基本選項(xiàng)區(qū)域,單擊端口配置右側(cè)的Dingtalk_20230104170049.jpg圖標(biāo),在端口映射對(duì)話框,單擊添加端口,設(shè)置協(xié)議TCP服務(wù)端口8080,然后單擊確認(rèn)

步驟四:運(yùn)行g(shù)RPC客戶端

  1. grpcurl是一個(gè)命令行工具,用于與gRPC服務(wù)進(jìn)行交互。它提供了一種簡單的方式來測試和調(diào)試gRPC服務(wù),以及查看服務(wù)的定義和元數(shù)據(jù)。具體如何下載安裝可以參考https://github.com/fullstorydev/grpcurl。運(yùn)行如下命令:

    grpcurl -d '{"name": "Jack"}' -plaintext {入口網(wǎng)關(guān)IP地址}:8080 helloworld.Greeter/SayHello
  2. 返回以下結(jié)果,可以看到所有的請(qǐng)求都指向了v1。

     "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"
     "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"
     "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"
     "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"
     "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"     

步驟五:按比例將流量路由到v2

將40%的流量指向v2,其余60%的流量仍然指向v1。

  1. 登錄ASM控制臺(tái),在左側(cè)導(dǎo)航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁面,單擊目標(biāo)實(shí)例名稱,然后在左側(cè)導(dǎo)航欄,選擇流量管理中心 > 虛擬服務(wù)

  3. 虛擬服務(wù)頁面,在grpc-vs虛擬服務(wù)右側(cè)的操作列下,單擊查看YAML

  4. 編輯對(duì)話框,更新以下YAML內(nèi)容,單擊確定

    ....
          route:
            - destination:
                host: grpc-helloworld-py
                port:
                  number: 50051
                subset: v1
              weight: 60
            - destination:
                host: grpc-helloworld-py
                port:
                  number: 50051
                subset: v2
              weight: 40
  5. 繼續(xù)使用grpcurl執(zhí)行以下命令,訪問網(wǎng)格內(nèi)的gRPC服務(wù)。

    grpcurl -d '{"name": "Jack"}' -plaintext {入口網(wǎng)關(guān)IP地址}:8080 helloworld.Greeter/SayHello

    返回以下結(jié)果,可以看到40%的流量指向了v2。

    說明

    您的測試結(jié)果不一定總是100次中有40次指向v2,但從總體比例來看,將接近40%。

    "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"
    "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"
    "message": "Hello, Jack! I'm from grpc-helloworld-py-v2-7f56b49b7f-9vvr7!"
    "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"
    "message": "Hello, Jack! I'm from grpc-helloworld-py-v2-7f56b49b7f-9vvr7!"
    "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"
    "message": "Hello, Jack! I'm from grpc-helloworld-py-v2-7f56b49b7f-9vvr7!"
    "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"
    "message": "Hello, Jack! I'm from grpc-helloworld-py-v2-7f56b49b7f-9vvr7!"
    "message": "Hello, Jack! I'm from grpc-helloworld-py-v1-79b5dc9654-cg4dq!"