すべてのプロダクト
Search
ドキュメントセンター

:マイクロサービスガバナンスを 15 分で始める (Go アプリケーションの場合)

最終更新日:Jan 08, 2025

このトピックでは、Go アプリケーションを使用してマイクロサービスガバナンスの中核機能を始める方法について説明します。

前提条件

デモのデプロイ

デモの概要

このデモでは、Kubernetes サービスディスカバリが使用されます。アプリケーションは、A → B → C の順序で呼び出されます。アプリケーション A と C には、ベースバージョンとカナリーバージョンがあります。コードリポジトリ からアプリケーションコードを取得できます。

アプリケーション名

プログラミング言語とフレームワークのバージョン

呼び出し方法

A

go 1.20

gin 1.8.1

HTTP

B

go 1.19

gin 1.8.0

HTTP

C

go 1.18

gin 1.9.0

/

デプロイ方法 1: 既存のイメージを使用する

イメージのパッケージ化とアップロードが不便な場合は、手動でのコンパイルとイメージ生成プロセスをスキップできます。代わりに、既存のイメージをデプロイに直接使用できます。次の YAML コードを使用して、ACK クラスタに deployments を作成します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mse-go-demo-a-base
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mse-go-demo-a
  template:
    metadata:
      labels:
        app: mse-go-demo-a
        msePilotAutoEnable: "on"
        mseNamespace: mse-go-demo
        msePilotCreateAppName: "mse-go-demo-a"
        aliyun.com/app-language: golang
    spec:
      containers:
        - name: mse-go-demo-a
          image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/gin-server-a:1.0
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mse-go-demo-a-gray
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mse-go-demo-a
  template:
    metadata:
      labels:
        app: mse-go-demo-a
        alicloud.service.tag: gray
        msePilotAutoEnable: "on"
        mseNamespace: mse-go-demo
        msePilotCreateAppName: "mse-go-demo-a"
        aliyun.com/app-language: golang
    spec:
      containers:
        - name: mse-go-demo-a-base  // カナリー版のデプロイメント名に注意
          image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/gin-server-a:1.0
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: mse-go-demo-a
spec:
  selector:
    app: mse-go-demo-a
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mse-go-demo-b
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mse-go-demo-b
  template:
    metadata:
      labels:
        app: mse-go-demo-b
        msePilotAutoEnable: "on"
        mseNamespace: mse-go-demo
        msePilotCreateAppName: "mse-go-demo-b"
        aliyun.com/app-language: golang
    spec:
      containers:
        - name: mse-go-demo-b
          image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/gin-server-b:1.0
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: mse-go-demo-b
spec:
  selector:
    app: mse-go-demo-b
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mse-go-demo-c-base
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mse-go-demo-c
  template:
    metadata:
      labels:
        app: mse-go-demo-c
        msePilotAutoEnable: "on"
        mseNamespace: mse-go-demo
        msePilotCreateAppName: "mse-go-demo-c"
        aliyun.com/app-language: golang
    spec:
      containers:
        - name: mse-go-demo-c
          image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/gin-server-c:1.0
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mse-go-demo-c-gray
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mse-go-demo-c
  template:
    metadata:
      labels:
        app: mse-go-demo-c
        alicloud.service.tag: gray
        msePilotAutoEnable: "on"
        mseNamespace: mse-go-demo
        msePilotCreateAppName: "mse-go-demo-c"
        aliyun.com/app-language: golang
    spec:
      containers:
        - name: mse-go-demo-c // カナリー版のデプロイメント名に注意
          image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/gin-server-c:1.0
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: mse-go-demo-c
spec:
  selector:
    app: mse-go-demo-c
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

トラフィックを観測するためのリクエストを作成する必要がある場合は、次の YAML デプロイスクリプトを使用して、リクエストを定期的に送信できます。デフォルトでは、スクリプトはアプリケーション A を直接呼び出します。Pod の環境変数 MSE_GATEWAY_DOMAIN を構成して、ドメイン名を変更できます。たとえば、この環境変数を構成して、クラウドネイティブゲートウェイにリクエストを送信できます。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: request-sender
spec:
  replicas: 1
  selector:
    matchLabels:
      app: request-sender
  template:
    metadata:
      labels:
        app: request-sender
    spec:
      containers:
        - name: request-sender
          image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/requestsender:1.0
          imagePullPolicy: Always
          ports:
            - containerPort: 8080

デプロイ方法 2: Go エージェントを使用してイメージをコンパイルおよびパッケージ化する

デモリポジトリでコンパイルに Go エージェントを使用できます。ただし、目的のイメージを手動でパッケージ化してアップロードする必要があります。デモサービスコード をオンプレミスマシンにクローンし、mse-go-quickstart-demo に移動して、アプリケーション A、B、および C のディレクトリに切り替えます。次に、次の手順を実行します。

  1. Go バイナリファイルをコンパイルします。

    1. wget コマンドを実行して、コンパイル環境とコンパイルマシンが存在するリージョンに基づいてコンパイルツールをダウンロードします。

      説明

      インターネット経由でオブジェクトストレージサービス (OSS) にアクセスできる場合は、中国 (杭州) リージョンのオペレーティングシステムとアーキテクチャのパブリックエンドポイントを直接使用して、コンパイルツールを取得できます。

      オペレーティングシステム

      パブリックエンドポイント

      VPC エンドポイント

      Linux (AMD64)

      wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo
      wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo

      Linux (ARM64)

      wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-linux-arm64" -O instgo
      wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-linux-arm64" -O instgo

      macOS (Darwin, ARM64)

      wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-darwin-arm64" -O instgo
      wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-darwin-arm64" -O instgo

      macOS (Darwin, AMD64)

      wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-darwin-amd64" -O instgo
      wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-darwin-amd64" -O instgo

      Windows (AMD64)

      wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-windows-amd64.exe" -O instgo.exe
      wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-windows-amd64.exe" -O instgo.exe

      上記のエンドポイントの {region-id} を、コンパイル環境が存在するリージョンの リージョン ID に置き換えます。リージョンと リージョン ID のマッピングの詳細については、「サポートされているリージョン」をご参照ください。

      説明

      以下のリージョンでコンパイルツールをダウンロードできます。今後、さらに多くのリージョンがサポートされる予定です。

      • 中国のリージョン: 中国 (杭州)、中国 (上海)、中国 (北京)、中国 (張家口)、中国 (深圳)

      • 中国以外のリージョン: シンガポール、米国 (シリコンバレー)

    2. コンパイルツールに実行権限を付与します。オペレーティングシステムが Linux または macOS (Darwin) の場合は、この手順を実行します。オペレーティングシステムが Windows の場合は、この手順をスキップします。

      # コンパイルツールに実行権限を付与します。
      chmod +x instgo
    3. ライセンスキーを取得し、パラメータを構成してプロジェクトをコンパイルします。コマンドの {licenseKey} パラメータを実際のライセンスキーに置き換えます。ライセンスキーを取得するには、MSE コンソールのマイクロサービスガバナンス の概要ページの右上隅にある [ライセンスキーの表示] をクリックします。

      説明
      1. 同じ Alibaba Cloud アカウントの異なるリージョンのライセンスキーは異なります。ライセンスキーを表示する前に、必要なリージョンに切り替える必要があります。

      2. コンパイル結果をテストする必要がある場合、またはライセンスキーを取得できない場合は、コードに --dev を追加して開発モードを有効にします。このモードでは、license key を指定する必要はありません。開発モードでのコンパイル結果はダウングレードされます。本番環境では開発モードを使用しないでください

      ./instgo set --mse --licenseKey=${YourLicenseKey} --regionId=${YourRegionId} --dev=false
    4. 元のコマンドにプレフィックスとして instgo を追加し、コマンドを実行してコンパイル操作を実行します。

      Linux/Darwin

      ./instgo go build {arg1} {arg2} {arg3}

      Windows

      .\instgo.exe go build {arg1} {arg2} {arg3}

      クロスコンパイル (MacOS での Linux 実行可能バイナリファイルのコンパイルなど) を伴うコンパイル操作を実行する場合は、バイナリファイルのコンパイルのためのコマンドを実行する前に、Go 用 SDK の次の組み込み環境変数を宣言する必要があります。

      ## macOS (Darwin) オペレーティングシステムで Linux 実行可能プログラムをコンパイルします。
      #amd
      CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./instgo go build 
      #arm
      CGO_ENABLED=0 GOOS=linux GOARCH=arm64 ./instgo go build 
      
      ## macOS (Darwin) オペレーティングシステムで Windows 実行可能プログラムをコンパイルします。
      CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./instgo go build 
      
      ## Linux オペレーティングシステムで macOS (Darwin) 実行可能プログラムをコンパイルします。
      #amd
      CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 ./instgo go build 
      #arm
      CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 ./instgo go build 
      
      ## Linux オペレーティングシステムで Windows 実行可能プログラムをコンパイルします。
      CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./instgo go build 
      
      ## Windows オペレーティングシステムで Linux 実行可能プログラムをコンパイルします。
      #amd
      SET CGO_ENABLED=0
      SET GOOS=linux
      SET GOARCH=amd64
      .\instgo.exe go build
      #arm
      SET CGO_ENABLED=0
      SET GOOS=linux
      SET GOARCH=arm64
      .\instgo.exe go build 
      
      ## Windows オペレーティングシステムで macOS (Darwin) 実行可能プログラムをコンパイルします。
      #amd
      SET CGO_ENABLED=0
      SET GOOS=darwin
      SET GOARCH=amd64
      .\instgo.exe go build 
      #arm
      SET CGO_ENABLED=0
      SET GOOS=darwin
      SET GOARCH=arm64
      .\instgo.exe go build

      次の表は、一般的な Instgo コマンドについて説明しています。

      コマンド

      必須

      フラグ

      パラメータタイプ

      説明

      build (コンパイル)

      はい

      --mse

      -

      指定されたエージェントに対して MSE マイクロサービスガバナンス機能を有効にします。

      はい (開発モードでは不要)

      --licenseKey, -l

      string

      MSE マイクロサービスガバナンスのライセンスキーを指定します。

      いいえ

      --dev

      -

      開発モードとして Dev モードを指定します。このモードでは、ライセンスキーを指定せずにデータをコンパイルして機能をテストできます。

      重要

      一部の機能はダウングレードされます。本番環境では Dev モードを使用しないでください。

      いいえ

      --agentVersion

      string

      エージェントのバージョンを指定します。

      いいえ

      --agentPath

      string

      エージェントのオンプレミスパスを指定します。

      いいえ

      --cacheDir

      string

      エージェントのキャッシュディレクトリを指定します。

      いいえ

      --regionId, -r

      string

      エージェントの依存関係の OSS バケットが存在するリージョンの ID。デフォルト値: cn-hangzhou。

      いいえ

      --timeout, -t

      int

      エージェントの依存関係をダウンロードするためのタイムアウト期間。単位: 秒。デフォルト値: 180。

      いいえ

      --verbose, -v

      -

      詳細なコンパイルログを生成するかどうかを指定します。

      いいえ

      --vpc

      -

      仮想プライベートクラウド (VPC) 経由でエージェントの依存関係をダウンロードするかどうかを指定します。

      update (更新)

      はい

      --licenseKey, -l

      string

      MSE マイクロサービスガバナンスのライセンスキーを指定します。

      いいえ

      --cacheDir

      string

      エージェントのキャッシュディレクトリを指定します。

      いいえ

      --regionId, -r

      string

      エージェントの依存関係の OSS バケットが存在するリージョンの ID。デフォルト値: cn-hangzhou。

      いいえ

      --timeout, -t

      int

      エージェントの依存関係をダウンロードするためのタイムアウト期間。単位: 秒。デフォルト値: 180。

      いいえ

      --vpc

      VPC 経由でエージェントの依存関係をダウンロードするかどうかを指定します。

      clean (クリーンアップ)

      -

      -

      -

      コンパイル残差を手動でクリアし、エージェントによって変更されたファイルのコードを復元できます。

      version (バージョン)

      -

      -

      -

      -

  2. Dockerfile を作成し、Dockerfile にサーバーのオペレーティングシステム (OS) イメージ URL を指定します。

    A

    FROM {サーバーの OS イメージ URL}
    WORKDIR /
    COPY mse-go-demo-a /mse-go-demo-a
    ENTRYPOINT ["/mse-go-demo-a"]

    B

    FROM {サーバーの OS イメージ URL}
    WORKDIR /
    COPY mse-go-demo-b /mse-go-demo-b
    ENTRYPOINT ["/mse-go-demo-b"]

    C

    FROM {サーバーの OS イメージ URL}
    WORKDIR /
    COPY mse-go-demo-c /mse-go-demo-c
    ENTRYPOINT ["/mse-go-demo-c"]
  3. イメージを作成し、イメージリポジトリにプッシュします。

    A

    docker build -t mse-go-demo-a:1.0 .
    docker tag mse-go-demo-a:1.0 {イメージのリポジトリ URL}/mse-go-demo-a:1.0
    docker push {イメージのリポジトリ URL}/mse-go-demo-a:1.0

    B

    docker build -t mse-go-demo-b:1.0 .
    docker tag mse-go-demo-b:1.0 {イメージのリポジトリ URL}/mse-go-demo-b:1.0
    docker push {イメージのリポジトリ URL}/mse-go-demo-b:1.0

    C

    docker build -t mse-go-demo-c:1.0 .
    docker tag mse-go-demo-c:1.0 {イメージのリポジトリ URL}/mse-go-demo-c:1.0
    docker push {イメージのリポジトリ URL}/mse-go-demo-c:1.0
  4. クラスタ詳細ページの左側のナビゲーションペインで、[ワークロード] > >[デプロイメント] を選択します。表示されるページで、目的の名前空間を選択し、右上隅にある [YAMLから作成]YAML をクリックします。次に、各アプリケーションの YAML コードをテンプレートにコピーします。

    説明

    spec.template.spec.containers.image を、手順 3 でイメージをプッシュしたリポジトリの URL に設定します。

    A

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mse-go-demo-a-base
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mse-go-demo-a
      template:
        metadata:
          labels:
            app: mse-go-demo-a
            msePilotAutoEnable: "on"
            mseNamespace: mse-go-demo
            msePilotCreateAppName: "mse-go-demo-a"
            aliyun.com/app-language: golang
        spec:
          containers:
            - name: mse-go-demo-a
              image: {イメージのリポジトリ URL}
              imagePullPolicy: Always
              ports:
                - containerPort: 8080
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mse-go-demo-a-gray
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mse-go-demo-a
      template:
        metadata:
          labels:
            app: mse-go-demo-a
            alicloud.service.tag: gray
            msePilotAutoEnable: "on"
            mseNamespace: mse-go-demo
            msePilotCreateAppName: "mse-go-demo-a"
            aliyun.com/app-language: golang
        spec:
          containers:
            - name: mse-go-demo-a-base // カナリー版のデプロイメント名に注意
              image: {イメージのリポジトリ URL}
              imagePullPolicy: Always
              ports:
                - containerPort: 8080
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: mse-go-demo-a
    spec:
      selector:
        app: mse-go-demo-a
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: LoadBalancer

    B

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mse-go-demo-b
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mse-go-demo-b
      template:
        metadata:
          labels:
            app: mse-go-demo-b
            msePilotAutoEnable: "on"
            mseNamespace: mse-go-demo
            msePilotCreateAppName: "mse-go-demo-b"
            aliyun.com/app-language: golang
        spec:
          containers:
            - name: mse-go-demo-b
              image: {イメージのリポジトリ URL}
              imagePullPolicy: Always
              ports:
                - containerPort: 8080
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: mse-go-demo-b
    spec:
      selector:
        app: mse-go-demo-b
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: ClusterIP

    C

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mse-go-demo-c-base
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mse-go-demo-c
      template:
        metadata:
          labels:
            app: mse-go-demo-c
            msePilotAutoEnable: "on"
            mseNamespace: mse-go-demo
            msePilotCreateAppName: "mse-go-demo-c"
            aliyun.com/app-language: golang
        spec:
          containers:
            - name: mse-go-demo-c
              image: {イメージのリポジトリ URL}
              imagePullPolicy: Always
              ports:
                - containerPort: 8080
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mse-go-demo-c-gray
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mse-go-demo-c
      template:
        metadata:
          labels:
            app: mse-go-demo-c
            alicloud.service.tag: gray
            msePilotAutoEnable: "on"
            mseNamespace: mse-go-demo
            msePilotCreateAppName: "mse-go-demo-c"
            aliyun.com/app-language: golang
        spec:
          containers:
            - name: mse-go-demo-c // カナリー版のデプロイメント名に注意
              image: {イメージのリポジトリ URL}
              imagePullPolicy: Always
              ports:
                - containerPort: 8080
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: mse-go-demo-c
    spec:
      selector:
        app: mse-go-demo-c
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: ClusterIP

    トラフィックを観測するためのリクエストを作成する必要がある場合は、次の YAML デプロイスクリプトを使用して、リクエストを定期的に送信できます。デフォルトでは、スクリプトはアプリケーション A を直接呼び出します。Pod の環境変数 MSE_GATEWAY_DOMAIN を構成して、ドメイン名を変更できます。たとえば、この環境変数を構成して、クラウドネイティブゲートウェイにリクエストを送信できます。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: request-sender
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: request-sender
      template:
        metadata:
          labels:
            app: request-sender
        spec:
          containers:
            - name: request-sender
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/requestsender:1.0
              imagePullPolicy: Always
              ports:
                - containerPort: 8080

基本機能の確認

説明

スロットリングルールとエンドツーエンドのカナリーリリースを使用する前に、ack-onepilot 3.2.3 以後がインストールされ、高度なサービスガバナンスが有効になっていることを確認してください。インストール操作は、「ACK クラスタ内の Go マイクロサービスアプリケーションに対して MSE マイクロサービスガバナンスを有効にする」の手順に従って実行できます。

サービスクエリ

  1. MSE コンソール にログインします。左側のナビゲーションペインで、[マイクロサービスガバナンス] > [サービスクエリ] を選択します。サービス クエリmse-go-demoジンフレームワーク ページで、マイクロサービス名前空間ドロップダウンリストから を選択し、 ドロップダウンリストから を選択します。

  2. mse-go-demo-a、mse-go-demo-b、および mse-go-demo-c サービスがリストに表示されているかどうかを確認します。サービスが表示されている場合、デモアプリケーションに対してマイクロサービスガバナンスが有効になっています。

スロットリングルール

クラウドネイティブゲートウェイのルートを作成する

  1. [MSEコンソール] にログオンします。左側のナビゲーションペインで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。[ゲートウェイ] ページで、ACKクラスターと同じVPCにあるゲートウェイをクリックします。

  2. ゲートウェイ詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、ルート[送信元] タブをクリックし、[送信元を追加] をクリックします。コンテナー サービスソースの種類ACK/ASK/ACS クラスタACK/ACK Serverless クラスタACK/ACK Serverless クラスターOK パネルで、 に を選択し、 ドロップダウンリストから ACK クラスタを選択し、 をクリックします。

  3. ゲートウェイの詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、[サービス] タブをクリックし、[サービスの追加] をクリックします。[サービスの追加] パネルで、[サービスソース] ドロップダウンリストから [コンテナサービス] を選択し、[名前空間] ドロップダウンリストからデモアプリケーションが属する名前空間を選択し、[サービス] セクションの [選択済み] リストに mse-go-demo-a を追加して、[OK] をクリックします。

  4. ゲートウェイの詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、[ルート] タブをクリックし、[ルートの追加] をクリックします。[ルートの追加] ページで、次のパラメーターを構成し、[保存してアドバタイズ] をクリックします。

    1. [ルーティングルール名]: ランダムな名前を入力します。

    2. [ドメイン名]: ドロップダウンリストから * を選択します。

    3. [パス]: ドロップダウンリストから [次と等しい] を選択し、フィールドに /greet1a と入力します。

    4. [ルートポイント]: ドロップダウンリストから [単一サービス] を選択します。

    5. [バックエンドサービス]

      1. サービス名: mse-go-demo-a を選択します。

      2. サービスプロトコル: HTTP を選択します。

      3. サービスポート: 80 を選択します。

    6. [タイムアウト期間 (秒)]: デフォルト値 60 を保持します。

説明

デモでリクエスト送信者を作成する場合は、関連付けられた Pod の環境変数 MSE_GATEWAY_DOMAIN の値をクラウドネイティブゲートウェイのドメイン名に変更できます。これにより、リクエストスクリプトはアプリケーション A にアクセスする代わりに、クラウドネイティブゲートウェイに直接アクセスできます。

ルールを追加する

  1. [MSE コンソール] にログオンします。左側のナビゲーションペインで、[マイクロサービスガバナンス] > [アプリケーションガバナンス] を選択します。[アプリケーションリスト] ページで、名前空間ドロップダウンリストから mse-go-demo を選択します。

  2. mse-go-demo-a アプリケーションカードをクリックして、[アプリケーション概要] ページに移動します。左側のナビゲーションペインで、[トラフィック管理] をクリックします。トラフィック管理 ページで、[フロー制御] タブをクリックし、[インターフェースフロー制御] サブタブをクリックします。

  3. [スロットリングルールを追加] をクリックします。[スロットリング保護ルールの追加] ダイアログボックスで、次のパラメーターを構成し、[新規] をクリックします。

    1. [保護シナリオを選択]

      1. [API タイプ]: WEB サービスを選択します。

      2. [トラフィックのタイプ]: サーバーを選択します。

      3. [インターフェース名]: /greet1a を選択します。

      4. [保護タイプ]: フロー制御を選択します。

    2. [保護ルールを構成]

      1. [開くかどうか]: スイッチをオンにします。

      2. [スタンドアロン QPS しきい値]: 0 と入力します。このパラメータを 0 に設定すると、リスクが存在する可能性があります。この設定はデモ用にのみ使用されます。オンラインシナリオでは、この設定を使用しないことをお勧めします。

      3. [フロー制御効果]: 高速障害を選択します。

    3. [保護動作を構成]: [関連付け動作] ドロップダウンリストから [デフォルトの動作] を選択します。

リクエストを確認する

  1. [MSEコンソール] にログオンします。左側のナビゲーションペインで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。[ゲートウェイ] ページで、ACKクラスターと同じVPCにあるゲートウェイをクリックします。

  2. ゲートウェイの詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、[ルート] タブをクリックします。ルート タブで、手順 1 で構成したルートを見つけ、[アクション] 列の デバッグ をクリックします。

  3. [送信] をクリックします。右側のセクションにステータスコード 429 が表示されている場合、スロットリングルールが有効になっています。

ルールを無効にする

  1. MSEコンソール にログオンします。左側のナビゲーションペインで、[マイクロサービスガバナンス] > [アプリケーションガバナンス] を選択します。[アプリケーションリスト] ページで、名前空間ドロップダウンリストから mse-go-demo を選択します。

  2. mse-go-demo-a アプリケーションカードをクリックして、[アプリケーション概要] ページに移動します。左側のナビゲーションペインで、[トラフィック管理] をクリックします。トラフィック管理 ページで、[フロー制御] タブをクリックし、[インターフェースフロー制御] サブタブをクリックします。

  3. 構成したルールを見つけ、ステータス 列のスイッチをオフにします。

  4. 「リクエストを確認する」の手順に従って、クラウドネイティブゲートウェイを使用してリクエストを開始します。リクエストが成功した場合、スロットリングルールは無効になっています。

エンドツーエンドのカナリーリリース

レーン グループを作成する

  1. MSE コンソール にログインします。左側のナビゲーションペインで、[マイクロサービスガバナンス] > [フルリンクグレースケール] を選択します。

  2. [レーン グループとレーンを作成] をクリックします。選択したマイクロサービス名前空間にレーン グループが使用可能な場合は、[+ レーン グループを作成] をクリックします。

  3. [レーン グループを作成] パネルで、次のパラメータを構成し、[OK] をクリックします。

    1. [レーン グループ名]: ランダムな名前を入力します。

    2. [イングレスタイプ]: MSE クラウドネイティブゲートウェイを選択します。

    3. [イングレスゲートウェイ]: 作成したルートに対応するゲートウェイを選択します。

    4. [レーン グループアプリケーション]: mse-go-demo-a、mse-go-demo-b、および mse-go-demo-c を選択します。

レーンを作成する

  1. [フルリンクグレースケール] ページの下部にある [最初の分割レーンを作成] をクリックします。選択したマイクロサービス名前空間にレーンが使用可能な場合は、[レーンを作成] をクリックします。

  2. [レーンを作成] パネルで、次のパラメータを構成し、[OK] をクリックします。

    1. [手順]: ACK を選択します。

    2. [レーン名]: gray と入力します。

    3. [レーン タグ]: gray を選択します。

    4. [ルートを選択]: クラウドネイティブゲートウェイで Go アプリケーションに作成したルートを選択します。

    5. [カナリーリリースモード]: [コンテンツによるカナリーリリース] を選択します。

    6. [カナリーリリース条件]

      1. [パラメータタイプ]: このパラメータをヘッダーに設定します。

      2. [パラメータ]: x-mse-gray-test と入力します。

      3. [条件]: == を選択します。

      4. [値]: このパラメータを 1 に設定します。

リクエストを確認する

  1. [MSEコンソール] にログオンします。左側のナビゲーションペインで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。[ゲートウェイ] ページで、ACKクラスターと同じVPCにあるゲートウェイをクリックします。

  2. ゲートウェイの詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、[ルート] タブをクリックします。ルート タブで、手順 1 で構成したルートを見つけ、[アクション] 列の デバッグ をクリックします。

  3. [送信] をクリックします。レスポンス本文のコンテンツは、リクエストが 3 つのアプリケーションのベースノードを通過したことを示しています。

  4. [ヘッダー] の横にある [パラメータを追加] をクリックします。[キー] を x-mse-gray-test に設定し、[値] を 1 に設定します。次に、[送信] をクリックします。レスポンス [本文] のコンテンツは、リクエストがアプリケーション A と C のカナリーノードを通過したことを示しています。