Container Service for Kubernetes(ACK)クラスタにデプロイされている Go マイクロサービスアプリケーションに対して、マイクロサービスエンジン(MSE)のマイクロサービスガバナンスを有効にすることができます。たとえば、Gin フレームワークを使用する Go アプリケーションに対してマイクロサービスガバナンスを有効にすることができます。このようにして、MSE によって提供される一連のサービスガバナンス機能を使用して、Go マイクロサービスアプリケーションを管理できます。これにより、オンライン マイクロサービスアプリケーションの安定性と開発効率が向上します。このトピックでは、Go マイクロサービスアプリケーションに対してマイクロサービスガバナンスを有効にする方法について説明します。
Go マイクロサービスアプリケーションのマイクロサービスガバナンスはパブリックプレビュー中です。パブリックプレビュー中は、この機能を無料でご利用いただけます。
前提条件
ACK クラスタが作成されていること。ビジネス要件に基づいて、ACK マネージドクラスターまたは Serverless Kubernetes クラスターを作成できます。クラスタの作成方法の詳細については、「ACK マネージドクラスターを作成する」または「ACK Serverless クイックスタート」をご参照ください。
クラスタ内に名前空間が作成されていること。詳細については、「名前空間とリソースクォータを管理する」をご参照ください。
コンパイル環境のオペレーティングシステムとアーキテクチャ、および Go とフレームワークのバージョンが有効であること。詳細については、「マイクロサービスガバナンスでサポートされている Java フレームワーク」をご参照ください。
go.mod ファイルが準備されていること。MSE のマイクロサービスガバナンスは、go.mod ファイルに基づくリポジトリコンパイルのみをサポートしています。go.mod ファイルがない場合は、go mod init コマンドを使用して go.mod ファイルを作成できます。
手順
ステップ 1:ACK クラスタに MSE のマイクロサービスガバナンスコンポーネントをインストールする
ACK コンソール にログインします。
左側のナビゲーションウィンドウで、[クラスタ] をクリックします。[クラスタ] ページで、作成したクラスタの名前をクリックします。
左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。[アドオン] ページで、検索ボックスに ack-onepilot と入力し、検索アイコンをクリックします。
重要ack-onepilot のバージョンが 3.2.3 以降であることを確認してください。デフォルトでは、ack-onepilot コンポーネントは 1,000 ポッドをサポートしています。クラスタ内の追加の 1,000 ポッドごとに、コンポーネントに 0.5 CPU コアと 512 MB のメモリを追加する必要があります。
[ack-onepilot] カードで、[インストール] をクリックします。
表示されたダイアログボックスで、パラメータを設定し、[OK] をクリックします。デフォルト値を使用することをお勧めします。
説明ack-onepilot コンポーネントを初めてインストールする場合、インストール をクリックしてインストールしたバージョンは、コンポーネントの最新バージョンであり、3.2.3 以降です。
インストールが完了したら、[アドオン] ページで ack-onepilot コンポーネントをアップグレード、設定、またはアンインストールできます。
ステップ 2:高度なガバナンス機能を有効にする
MSE コンソール にログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、[マイクロサービスガバナンス] > [O&M センター] を選択します。[O&M センター] ページで、[K8s クラスタリスト] タブをクリックし、目的のクラスタの名前をクリックします。
[クラスタの詳細] ページで、高度なガバナンス機能を有効にします。
説明高度なガバナンス機能を有効にするには、約 1 分かかります。この機能が有効になると、ステータスが [無効] から [有効] に変わります。
ステップ 3:Go バイナリファイルをコンパイルする
wgetコマンドを実行して、コンパイル環境とコンパイルマシンが存在するリージョンに基づいてコンパイルツールをダウンロードします。説明インターネット経由で Object Storage Service(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, ARM64)
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}を、コンパイル環境が存在するリージョンのregion IDに置き換えます。リージョンとregion 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
文字列
MSE マイクロサービスガバナンスのライセンスキーを指定します。
いいえ
--dev
-
開発モードとして開発モードを指定します。このモードでは、ライセンスキーを指定せずにデータをコンパイルして機能をテストできます。
重要一部の機能はダウングレードされます。本番環境では開発モードを使用しないでください。
いいえ
--agentVersion
文字列
エージェントのバージョンを指定します。
いいえ
--agentPath
文字列
エージェントのオンプレミス パスを指定します。
いいえ
--cacheDir
文字列
エージェントのキャッシュディレクトリを指定します。
いいえ
--regionId, -r
文字列
エージェントの依存関係の OSS バケットが存在するリージョンの ID。デフォルト値:cn-hangzhou。
いいえ
--timeout, -t
int
エージェントの依存関係をダウンロードするためのタイムアウト期間。単位:秒。デフォルト値:180。
いいえ
--verbose, -v
-
詳細なコンパイルログを生成するかどうかを指定します。
いいえ
--vpc
-
VPC 経由でエージェントの依存関係をダウンロードするかどうかを指定します。
update (更新)
はい
--licenseKey, -l
文字列
MSE マイクロサービスガバナンスのライセンスキーを指定します。
いいえ
--cacheDir
文字列
エージェントのキャッシュディレクトリを指定します。
いいえ
--regionId, -r
文字列
エージェントの依存関係の OSS バケットが存在するリージョンの ID。デフォルト値:cn-hangzhou。
いいえ
--timeout, -t
int
エージェントの依存関係をダウンロードするためのタイムアウト期間。単位:秒。デフォルト値:180。
いいえ
--vpc
VPC 経由でエージェントの依存関係をダウンロードするかどうかを指定します。
clean (クリーンアップ)
-
-
-
コンパイル残差を手動でクリアし、エージェントによって変更されたファイルのコードを復元できます。
version (バージョン)
-
-
-
-
ステップ 4:Go アプリケーションに対して MSE マイクロサービスガバナンスを有効にする
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。[クラスタ] ページで、管理するクラスタを見つけ、[アクション] 列の [アプリケーション] をクリックします。
表示されたページの左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。[デプロイメント] ページで、アプリケーションが存在する [名前空間] に切り替え、管理するアプリケーションを見つけ、アプリケーション名をクリックしてアプリケーション詳細ページに移動します。
アプリケーション詳細ページの右上隅にある [YAML で表示] をクリックします。[YAML の編集] ダイアログボックスで、
spec.template.metadata.labelsレベルに次のラベルを追加し、[更新] をクリックします。labels: # golang 値は、このアプリケーションが Go アプリケーションであることを示します。この値は Go アプリケーションに必要です。 aliyun.com/app-language: golang # on 値は、マイクロサービスガバナンスが有効になっていることを示します。 on 値は二重引用符( "")で囲む必要があります。 msePilotAutoEnable: "on" # アプリケーションが存在するマイクロサービスガバナンス名前空間。指定した名前空間が存在しない場合は、指定した名前の名前空間が自動的に作成されます。 mseNamespace: "<your-mse-governance-namespace>" # マイクロサービスガバナンスが有効になっているアプリケーションの実際の名前。名前は二重引用符( "")で囲む必要があります。 msePilotCreateAppName: "<your-application-name>"
結果の確認
手順 の上記の手順を実行し、アプリケーションを再起動すると、ACK クラスタにデプロイされている Go アプリケーションに対して MSE マイクロサービスガバナンスが有効になります。
MSE コンソール にログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、[マイクロサービスガバナンス] > [アプリケーションガバナンス] を選択します。
[アプリケーションリスト] ページで、マイクロサービス名前空間を選択し、アプリケーションが表示されているかどうかを確認します。アプリケーションが表示されている場合は、アプリケーションに対してマイクロサービスガバナンスが有効になっています。