このトピックでは、Go アプリケーションを使用してマイクロサービスガバナンスの中核機能を始める方法について説明します。
前提条件
(推奨) Container Service for Kubernetes (ACK) Serverless クラスタまたは ACK マネージドクラスタが作成されていること。詳細については、「ACK Serverless クイックスタート」または「ACK マネージドクラスタの作成」をご参照ください。
説明ACK マネージドクラスタを作成する場合、最小構成要件 (10 CPU コアと 20 GB のメモリ) を満たしていることを確認する必要があります。単一インスタンスの構成は 2 CPU コアと 4 GB のメモリを超えないようにすることをお勧めします。
エラスティック IP アドレス (EIP) は、CloudShell へのアクセス用に API サーバーを公開するために使用されます。
Kubernetes サービスディスカバリには CoreDNS が必要です。
デフォルトのローカルドメイン名 cluster.local が ACK クラスタに使用されます。
Microservices Engine (MSE) のマイクロサービスガバナンス エンタープライズエディションがアクティブ化されていること。
説明Go アプリケーションのマイクロサービスガバナンスは、マイクロサービスガバナンス エンタープライズエディションを使用している場合にのみ使用できます。パブリックプレビュー期間中は、この機能を無料で使用できます。
ack-onepilot が ACK クラスタにインストールされ、クラスタに対して高度なサービスガバナンスが有効になっていること。詳細については、「ACK クラスタ内の Go マイクロサービスアプリケーションに対して MSE マイクロサービスガバナンスを有効にする」をご参照ください。
ACK クラスタのトラフィックイングレスとして機能する MSE クラウドネイティブゲートウェイが作成されていること。クラウドネイティブゲートウェイの作成方法の詳細については、「クラウドネイティブゲートウェイの作成」をご参照ください。
デモのデプロイ
デモの概要
このデモでは、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 のディレクトリに切り替えます。次に、次の手順を実行します。
Go バイナリファイルをコンパイルします。
wgetコマンドを実行して、コンパイル環境とコンパイルマシンが存在するリージョンに基づいてコンパイルツールをダウンロードします。説明インターネット経由でオブジェクトストレージサービス (OSS) にアクセスできる場合は、中国 (杭州) リージョンのオペレーティングシステムとアーキテクチャのパブリックエンドポイントを直接使用して、コンパイルツールを取得できます。
オペレーティングシステム
パブリックエンドポイント
VPC エンドポイント
Linux (AMD64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-linux-amd64" -O instgowget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-linux-amd64" -O instgoLinux (ARM64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-linux-arm64" -O instgowget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-linux-arm64" -O instgomacOS (Darwin, ARM64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-darwin-arm64" -O instgowget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-darwin-arm64" -O instgomacOS (Darwin, AMD64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-darwin-amd64" -O instgowget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-darwin-amd64" -O instgoWindows (AMD64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-windows-amd64.exe" -O instgo.exewget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-windows-amd64.exe" -O instgo.exe上記のエンドポイントの
{region-id}を、コンパイル環境が存在するリージョンのリージョン IDに置き換えます。リージョンとリージョン IDのマッピングの詳細については、「サポートされているリージョン」をご参照ください。説明以下のリージョンでコンパイルツールをダウンロードできます。今後、さらに多くのリージョンがサポートされる予定です。
中国のリージョン: 中国 (杭州)、中国 (上海)、中国 (北京)、中国 (張家口)、中国 (深圳)
中国以外のリージョン: シンガポール、米国 (シリコンバレー)
コンパイルツールに実行権限を付与します。オペレーティングシステムが
Linux または macOS (Darwin)の場合は、この手順を実行します。オペレーティングシステムがWindowsの場合は、この手順をスキップします。# コンパイルツールに実行権限を付与します。 chmod +x instgoライセンスキーを取得し、パラメータを構成してプロジェクトをコンパイルします。コマンドの
{licenseKey}パラメータを実際のライセンスキーに置き換えます。ライセンスキーを取得するには、MSE コンソールのマイクロサービスガバナンス の概要ページの右上隅にある [ライセンスキーの表示] をクリックします。説明同じ Alibaba Cloud アカウントの異なるリージョンのライセンスキーは異なります。ライセンスキーを表示する前に、必要なリージョンに切り替える必要があります。
コンパイル結果をテストする必要がある場合、またはライセンスキーを取得できない場合は、コードに
--devを追加して開発モードを有効にします。このモードでは、license keyを指定する必要はありません。開発モードでのコンパイル結果はダウングレードされます。本番環境では開発モードを使用しないでください。
./instgo set --mse --licenseKey=${YourLicenseKey} --regionId=${YourRegionId} --dev=false元のコマンドにプレフィックスとして 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 (バージョン)
-
-
-
-
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"]イメージを作成し、イメージリポジトリにプッシュします。
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.0B
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.0C
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クラスタ詳細ページの左側のナビゲーションペインで、[ワークロード] > >[デプロイメント] を選択します。表示されるページで、目的の名前空間を選択し、右上隅にある [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: LoadBalancerB
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: ClusterIPC
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 マイクロサービスガバナンスを有効にする」の手順に従って実行できます。
サービスクエリ
MSE コンソール にログインします。左側のナビゲーションペインで、[マイクロサービスガバナンス] > [サービスクエリ] を選択します。サービス クエリmse-go-demoジンフレームワーク ページで、マイクロサービス名前空間ドロップダウンリストから を選択し、 ドロップダウンリストから を選択します。
mse-go-demo-a、mse-go-demo-b、および mse-go-demo-c サービスがリストに表示されているかどうかを確認します。サービスが表示されている場合、デモアプリケーションに対してマイクロサービスガバナンスが有効になっています。
スロットリングルール
クラウドネイティブゲートウェイのルートを作成する
[MSEコンソール] にログオンします。左側のナビゲーションペインで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。[ゲートウェイ] ページで、ACKクラスターと同じVPCにあるゲートウェイをクリックします。
ゲートウェイ詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、ルート[送信元] タブをクリックし、[送信元を追加] をクリックします。コンテナー サービスソースの種類ACK/ASK/ACS クラスタACK/ACK Serverless クラスタACK/ACK Serverless クラスターOK パネルで、 に を選択し、 ドロップダウンリストから ACK クラスタを選択し、 をクリックします。
ゲートウェイの詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、[サービス] タブをクリックし、[サービスの追加] をクリックします。[サービスの追加] パネルで、[サービスソース] ドロップダウンリストから [コンテナサービス] を選択し、[名前空間] ドロップダウンリストからデモアプリケーションが属する名前空間を選択し、[サービス] セクションの [選択済み] リストに mse-go-demo-a を追加して、[OK] をクリックします。
ゲートウェイの詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、[ルート] タブをクリックし、[ルートの追加] をクリックします。[ルートの追加] ページで、次のパラメーターを構成し、[保存してアドバタイズ] をクリックします。
[ルーティングルール名]: ランダムな名前を入力します。
[ドメイン名]: ドロップダウンリストから * を選択します。
[パス]: ドロップダウンリストから [次と等しい] を選択し、フィールドに /greet1a と入力します。
[ルートポイント]: ドロップダウンリストから [単一サービス] を選択します。
[バックエンドサービス]
サービス名: mse-go-demo-a を選択します。
サービスプロトコル: HTTP を選択します。
サービスポート: 80 を選択します。
[タイムアウト期間 (秒)]: デフォルト値 60 を保持します。
デモでリクエスト送信者を作成する場合は、関連付けられた Pod の環境変数 MSE_GATEWAY_DOMAIN の値をクラウドネイティブゲートウェイのドメイン名に変更できます。これにより、リクエストスクリプトはアプリケーション A にアクセスする代わりに、クラウドネイティブゲートウェイに直接アクセスできます。
ルールを追加する
[MSE コンソール] にログオンします。左側のナビゲーションペインで、[マイクロサービスガバナンス] > [アプリケーションガバナンス] を選択します。[アプリケーションリスト] ページで、名前空間ドロップダウンリストから mse-go-demo を選択します。
mse-go-demo-a アプリケーションカードをクリックして、[アプリケーション概要] ページに移動します。左側のナビゲーションペインで、[トラフィック管理] をクリックします。トラフィック管理 ページで、[フロー制御] タブをクリックし、[インターフェースフロー制御] サブタブをクリックします。
[スロットリングルールを追加] をクリックします。[スロットリング保護ルールの追加] ダイアログボックスで、次のパラメーターを構成し、[新規] をクリックします。
[保護シナリオを選択]
[API タイプ]: WEB サービスを選択します。
[トラフィックのタイプ]: サーバーを選択します。
[インターフェース名]: /greet1a を選択します。
[保護タイプ]: フロー制御を選択します。
[保護ルールを構成]
[開くかどうか]: スイッチをオンにします。
[スタンドアロン QPS しきい値]: 0 と入力します。このパラメータを 0 に設定すると、リスクが存在する可能性があります。この設定はデモ用にのみ使用されます。オンラインシナリオでは、この設定を使用しないことをお勧めします。
[フロー制御効果]: 高速障害を選択します。
[保護動作を構成]: [関連付け動作] ドロップダウンリストから [デフォルトの動作] を選択します。
リクエストを確認する
[MSEコンソール] にログオンします。左側のナビゲーションペインで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。[ゲートウェイ] ページで、ACKクラスターと同じVPCにあるゲートウェイをクリックします。
ゲートウェイの詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、[ルート] タブをクリックします。ルート タブで、手順 1 で構成したルートを見つけ、[アクション] 列の デバッグ をクリックします。
[送信] をクリックします。右側のセクションにステータスコード 429 が表示されている場合、スロットリングルールが有効になっています。
ルールを無効にする
MSEコンソール にログオンします。左側のナビゲーションペインで、[マイクロサービスガバナンス] > [アプリケーションガバナンス] を選択します。[アプリケーションリスト] ページで、名前空間ドロップダウンリストから mse-go-demo を選択します。
mse-go-demo-a アプリケーションカードをクリックして、[アプリケーション概要] ページに移動します。左側のナビゲーションペインで、[トラフィック管理] をクリックします。トラフィック管理 ページで、[フロー制御] タブをクリックし、[インターフェースフロー制御] サブタブをクリックします。
構成したルールを見つけ、ステータス 列のスイッチをオフにします。
「リクエストを確認する」の手順に従って、クラウドネイティブゲートウェイを使用してリクエストを開始します。リクエストが成功した場合、スロットリングルールは無効になっています。
エンドツーエンドのカナリーリリース
レーン グループを作成する
MSE コンソール にログインします。左側のナビゲーションペインで、[マイクロサービスガバナンス] > [フルリンクグレースケール] を選択します。
[レーン グループとレーンを作成] をクリックします。選択したマイクロサービス名前空間にレーン グループが使用可能な場合は、[+ レーン グループを作成] をクリックします。
[レーン グループを作成] パネルで、次のパラメータを構成し、[OK] をクリックします。
[レーン グループ名]: ランダムな名前を入力します。
[イングレスタイプ]: MSE クラウドネイティブゲートウェイを選択します。
[イングレスゲートウェイ]: 作成したルートに対応するゲートウェイを選択します。
[レーン グループアプリケーション]: mse-go-demo-a、mse-go-demo-b、および mse-go-demo-c を選択します。
レーンを作成する
[フルリンクグレースケール] ページの下部にある [最初の分割レーンを作成] をクリックします。選択したマイクロサービス名前空間にレーンが使用可能な場合は、[レーンを作成] をクリックします。
[レーンを作成] パネルで、次のパラメータを構成し、[OK] をクリックします。
[手順]: ACK を選択します。
[レーン名]: gray と入力します。
[レーン タグ]: gray を選択します。
[ルートを選択]: クラウドネイティブゲートウェイで Go アプリケーションに作成したルートを選択します。
[カナリーリリースモード]: [コンテンツによるカナリーリリース] を選択します。
[カナリーリリース条件]
[パラメータタイプ]: このパラメータをヘッダーに設定します。
[パラメータ]: x-mse-gray-test と入力します。
[条件]: == を選択します。
[値]: このパラメータを 1 に設定します。
リクエストを確認する
[MSEコンソール] にログオンします。左側のナビゲーションペインで、[クラウドネイティブゲートウェイ] > [ゲートウェイ] を選択します。[ゲートウェイ] ページで、ACKクラスターと同じVPCにあるゲートウェイをクリックします。
ゲートウェイの詳細ページの左側のナビゲーションペインで、[ルート] をクリックします。表示されるページで、[ルート] タブをクリックします。ルート タブで、手順 1 で構成したルートを見つけ、[アクション] 列の デバッグ をクリックします。
[送信] をクリックします。レスポンス本文のコンテンツは、リクエストが 3 つのアプリケーションのベースノードを通過したことを示しています。
[ヘッダー] の横にある [パラメータを追加] をクリックします。[キー] を x-mse-gray-test に設定し、[値] を 1 に設定します。次に、[送信] をクリックします。レスポンス [本文] のコンテンツは、リクエストがアプリケーション A と C のカナリーノードを通過したことを示しています。