ack-onepilot コンポーネントは、Kubernetes クラスター内の Application Real-Time Monitoring Service (ARMS) エージェントを自動的に更新します。新しいエージェントバージョンを広範囲に展開する前に検証する必要がある場合や、安定性を保つために特定のバージョンを維持する必要がある場合は、自動更新に任せるのではなく、エージェントを特定のバージョンに固定します。
クラスター内の ack-onepilot バージョンに基づいて、以下のいずれかの方法を選択します。
タスク | 方法 | ack-onepilot バージョン |
特定のエージェントバージョンを固定する (セルフサービス) | V3.0.17 以降 | |
バージョンをインスタンスのサブセットに先行展開する | V3.3.0 以降 | |
セルフサービスが利用できない場合にバージョンを固定する | V3.0.17 より前 |
エージェントバージョンの指定
必須: ack-onepilot V3.0.17 以降。 バージョンを確認するには、コンテナサービス管理コンソールに移動し、[アドオン] をクリックし、ack-onepilot を見つけ、そのバージョンを確認します。 アップグレードが利用可能な場合は、[アップグレード] をクリックします。
これは、エージェントバージョンを管理するための推奨する方法です。3 つの方法があります。方法 1 と方法 2 の両方を使用する場合、または方法 1 と方法 3 の両方を使用する場合、方法 2 または方法 3 で指定されたバージョンが方法 1 よりも優先されます。
ステップ 1:使用するエージェントバージョンの確認
ARMS コンソールにログインします。
左側のナビゲーションペインで、 を選択します。
使用するバージョン番号をメモします。お使いの環境で特定のバージョンが必要でない限り、最新の安定版を選択します。
[エージェントオンラインステータス] タブで、各アプリケーションの現在のエージェントバージョンを記録します。このバージョンは、問題が発生した場合のロールバック先になります。
ステップ 2:バージョンの適用
以下のいずれかの方法を選択します。
方法 1:YAML ラベル
アプリケーションの YAML ファイルに aliyun.com/agent-version ラベルを追加します。
metadata:
labels:
aliyun.com/agent-version: "<agent-version>"<agent-version> をステップ 1 で確認したバージョン番号に置き換えます。
ファイルを保存して[更新]をクリックすると、アプリケーションが自動的に再起動され、指定のバージョンが適用されます。
このラベルは、このアプリケーションにのみ適用されます。バージョンを固定する必要がある各アプリケーションに対して、このステップを繰り返します。
方法 2:EDAS コンソール
Enterprise Distributed Application Service (EDAS) コンソールを使用して Kubernetes クラスターにアプリケーションをデプロイする場合、[高度な設定] タブの [監視およびガバナンス設定] セクションでエージェントバージョンを指定します。
EDAS で使用可能なエージェントバージョンを調整するには、EDAS のテクニカルサポートにお問い合わせください。
方法 3:EDAS API
EDAS API を使用してアプリケーションを作成またはデプロイする場合、InsertK8sApplication API または DeployK8sApplication API において CustomAgentVersion パラメーターを設定します。
ステップ 3:検証と展開
まず、テストアプリケーションにバージョンを適用します。
新しいエージェントバージョンでアプリケーションが期待どおりに動作することを検証します。
検証に成功したら、残りのアプリケーションに対してステップ 2 を繰り返します。
新しいエージェントバージョンで問題が発生した場合は、ラベルまたはパラメーターを、ステップ 1 で控えておいた以前のバージョンに戻します。
プログレッシブアップデートの有効化
前提条件: ack-onepilot V3.3.0 以降。アプリケーションのワークロードは、3 つ以上のレプリカを持つ必要があります。
プログレッシブアップデートを使用すると、新しいエージェントバージョンがワークロード全体に展開される前に、少数のインスタンスで検証できます。
アプリケーションの YAML に両方のラベルを追加します。
metadata:
labels:
aliyun.com/agent-version: "<agent-version>"
aliyun.com/enable-progressive-update: "true"プログレッシブアップデートが有効になっている ACK クラスターで Deployment または StatefulSet ワークロードを再デプロイすると、1 つまたは 2 つのインスタンスのみに指定されたエージェントバージョンが適用されます。残りのインスタンスは現在のバージョンを維持します。
制限事項
プログレッシブアップデートには、少なくとも 3 つのレプリカが必要です。ワークロードのレプリカが 3 つ未満の場合、ラベルが設定されていても、どのインスタンスも指定されたバージョンに更新されません。この場合、このワークロードではプログレッシブアップデートを有効にしないでください。
プログレッシブアップデートは、Deployment と StatefulSet ワークロードにのみ適用されます。
テクニカルサポートへの連絡によるバージョンの固定
ack-onepilot が V3.0.17 より前の場合、またはお使いの環境で手動による YAML の変更が必要な場合は、この方法を使用します。このアプローチでは、バージョンロックを使用して、非推奨またはサポートされていないバージョンから最新バージョンにエージェントを移行します。
テストアプリケーションを選択します。ARMS テクニカルサポートに連絡して、エージェントを対象バージョンにロックするよう依頼します。
テストアプリケーションを再起動し、新しいエージェントバージョンを検証します。
検証に成功したら、ARMS テクニカルサポートに連絡して、残りのクラスターにバッチでロックされたバージョンを更新するよう依頼します。
各バッチのアプリケーションを再起動して、更新を適用します。
ベストプラクティス
広範囲な展開の前に検証する: まず、単一のテストアプリケーションで新しいバージョンを固定します。残りのアプリケーションを更新する前に、正常な動作を確認します。
本番環境のワークロードにはプログレッシブアップデートを使用する: 3 つ以上のレプリカを持つワークロードの場合、プログレッシブアップデートを有効にして、バージョン変更時の影響範囲を制限します。
変更前に現在のバージョンを記録: 新しいバージョンをピン留めする前に、[エージェントオンラインステータス] タブで現在のエージェントバージョンを記録しておくと、迅速にロールバックできます。
ack-onepilot を最新の状態に保つ: ack-onepilot を V3.0.17 以降にアップグレードしてセルフサービスによるバージョン固定を利用するか、V3.3.0 以降にアップグレードしてプログレッシブアップデートを利用し、テクニカルサポートに頼らずに済むようにします。