Amazon EKS から Azure Kubernetes Service (AKS) に移行する
この記事では、一般的なステートレス ワークロードとステートフル ワークロードを Amazon EKS から Azure Kubernetes Service (AKS) に移行する方法について説明します。
考慮事項
現実世界での実動ワークロードの実際のデプロイ プロセスは、次の要因によって異なる場合があります。
デプロイ戦略: GitOps と従来の DevOps 継続的インテグレーション/継続的デプロイ (CI/CD) 手法の間での選択は、デプロイ アプローチに大きく影響します。 GitOps では、バージョン管理されたリポジトリを介して管理される宣言型インフラストラクチャを優先しますが、DevOps CI/CD では、アプリケーションデリバリー用の自動化されたワークフローに重点を置きます。
デプロイ成果物: デプロイ成果物の選択は、デプロイ構造を定義する上で重要な役割を果たします。 YAML ファイル、マニフェスト ファイル、Helm チャート、Kustomize 構成は、それぞれの長所とユース ケースにより、デプロイ設定の指定とカスタマイズを行うためのさまざまなアプローチを示します。
ワークロードの認証と承認: セットアップによって、認証方法と承認方法が異なる場合があります。 アクセス制御には、アマゾン ウェブ サービス (AWS) の ID およびアクセス管理 (IAM) におけるロール、ワークロード ID メカニズム、または接続文字列を使用できます。
監視: 監視ソリューションの実装は、デプロイされたワークロードのパフォーマンスと正常性を確保するため、さまざまなツールと手法を伴う重要な局面です。 AKS 監視と EKS の比較の詳細については、「Kubernetes の監視とログ記録」を参照してください。
移行を開始する前に、次の一般的ガイダンスとベスト プラクティス リソースの確認と検討を行ってください。
- 「クラスターのオペレーターと開発者向けのベスト プラクティス」を確認してください。
- アプリケーションが期待どおり実行されるように、監視とアラートの戦略を定義します。
- アプリケーションと AKS 環境のセキュリティとコンプライアンスの要件を定義します。
- アクセス制御ポリシーとその執行方法を定義します。 準拠する必要があるコンプライアンス基準を特定します。
- AKS 環境とアプリケーションのディザスター リカバリーとビジネス継続性計画を定義します。
- バックアップと復元のポリシーと手順を定義します。 復旧時間目標 (RTO) と復旧時点目標 (RPO) を特定します。
- デプロイ中に発生する可能性のあるリスクや課題を特定します。
- ライブ トラフィックを新しい AKS クラスターにリダイレクトする前に、アプリケーションが期待どおりに動作することを確かめる機能をテストします。
ワークロードの移行に関する考慮事項
このセクションでは、Amazon EKS から AKS にワークロードを移行する前に考慮すべき事項をいくつか見てゆきます。
既存の Amazon EKS 環境を把握する
既存の EKS 環境を分析して、現在のアーキテクチャ、リソース、および構成を把握します。
EKS 構成を評価する: ノードの種類、ノード数、Kubernetes のバージョンとサポート ポリシー、スケーリング構成など、EKS クラスター構成を評価します。
Note
EKS では、EKS ノード用のカスタム AMI イメージを作成できます。 AKS では、カスタム ノード イメージの使用はできません。 デプロイでノードのカスタマイズが必要な場合は、kubelet カスタマイズやデーモンセット を適用してノードをカスタマイズできます。
アプリケーション ワークロードを確認する: デプロイ、サービス、ステートフル セット、イングレス構成、永続ボリューム要求など、EKS クラスターで実行されるすべての Kubernetes ワークロードを特定します。 アプリケーションとそれらの関連リソースの完全リストがあることを確かめます。
依存関係をチェックする: EKS に固有の AWS サービスへの依存関係を特定します。
AWS サービス 依存関係 AWS Secret Manager Azure Key Vault AWS Guard Duty エージェント Microsoft Defender for Containers EKS Pod Identity エージェント Microsoft Entra ID ワークロード ID Amazon Elastic File System (EFS) または Elastic Block Store (EBS) の Container Storage Interface (CSI) ドライバー AKS CSI ドライバー EKS クラスターをバックアップする: Velero などの Microsoft 以外のツールを使用して、Kubernetes リソースと永続ボリュームのバックアップと移行ができます。
Azure AKS 環境を準備する
Amazon Virtual Private Cloud (VPC) の Container Networking Interface (CNI) は、EKS でサポートされている既定のネットワーク プラグインです。 AKS クラスターでは、クラスターを仮想ネットワークにデプロイするための、次のような複数のネットワーク プラグインと手法をサポートしています。
- Kubenet ネットワーク (AKS の既定)
- Azure CNI ネットワーク
- Azure CNI オーバーレイ
- 動的割り当てのための Azure CNI ネットワーク
- Azure CNI Powered by Cilium
- Microsoft 以外の CNI
AKS クラスターを準備するには、次の手順に従います。
- Azure に新しい AKS クラスターを作成し、要件に合わせて目的のネットワーク設定を構成します。
- EKS で使用されている Kubernetes マニフェストと YAML ファイルを確認します。 潜在的な Kubernetes API バージョンの非互換性、または AKS でサポートされていない特定の EKS 構成をチェックします。
- Docker イメージとコンテナー イメージ レジストリの場所に AKS クラスターからアクセスできることを確かめます。 ネットワーク接続と、イメージにアクセスするために必要な認証と承認の設定を確認します。
これらの手順に従うことで、AKS クラスターを正常に作成し、Kubernetes マニフェストと Docker イメージの互換性を確かめて、EKS から AKS へのスムーズな移行プロセスを確保できます。
移行の概要
Amazon EKS から AKS への移行には、次のようないくつかの手順が含まれます。
コンテナー イメージの移行: コンテナー イメージの移行は、EKS から AKS に移行する際に重要な手順です。 kubectl、Docker、コンテナー レジストリなどのツールを使用して、イメージのエクスポートとインポートができます。
- EKS からイメージをエクスポートします。
- Azure Container Registry をセットアップ して、まだ AKS にアタッチしていない場合はアタッチします。
- コンテナー レジストリにイメージをプッシュします。
コンテナー イメージは、Azure 以外のパブリック リポジトリやプライベート リポジトリからコンテナー レジストリに直接インポートすることもできます。 詳しくは、「コンテナー イメージをインポートする」を参照してください。
Kubernetes マニフェストの移行: AKS は、Kubernetes YAML ファイル マニフェストを使用して Kubernetes オブジェクトを定義します。 デプロイは通常、kubectl create か kubectl apply で作成および管理されます。 デプロイを作成するには、YAML 形式のマニフェスト ファイルを定義します。 詳細については、このサンプル AKS マニフェストを参照してください。 デプロイと YAML マニフェストを確認することで、Kubernetes での YAML ファイルの動作の詳細がわかります。
データの移行: データ損失や予期しないダウンタイムを回避するために、ステートフル アプリケーションの移行は慎重に計画してください。 詳細については、「ステートフル ワークロードの移行に関する考慮事項」を参照してください。
ステートレス ワークロードの移行に関する考慮事項
Kubernetes マニフェストの移行では、次の手順を含め、Azure 環境で動作するように構成を調整する必要があります。
マニフェストを更新する: Kubernetes マニフェストを更新して、Container Registry の新しいイメージの場所を使用します。 YAML ファイル内のイメージ参照を Container Registry パスに置き換えます。
- VPC および IAM ロールなど、AWS 固有の構成については、既存の Kubernetes マニフェスト ファイルを確認します。
- ノード、サービス アカウント、および他のリソースに関連付けられている EKS IAM ロールを確認します。 それを同等の Azure AKS ロールベース アクセス制御 (RBAC) ロールでマップします。 詳細については、「Kubernetes ワークロード ID およびアクセス管理」を参照してください。
- マニフェスト ファイルを変更して、AWS 固有の設定を注釈などの Azure 固有の設定に置き換えます。
マニフェストを AKS に適用する:
- AKS クラスターに接続します。
- 変更した Kubernetes マニフェスト ファイルを、
kubectl apply -f
を使用して適用します。
ステートフル ワークロードの移行に関する考慮事項
アプリケーションがデータ ストレージに永続ボリューム (PV) か永続ボリューム要求 (PVC) を使用する場合は、必ずこのデータをバックアップしてください。 Velero などのツールを使用して、PV や PVC データなどのクラスター バックアップを実行できます。 詳細については、「Velero を使用して Amazon EKS クラスターリソースのバックアップと復元を行う」を参照してください。
ステートフル アプリケーションには通常、永続的データ ストレージ要件があり、移行プロセスが複雑になります。 Amazon EKS と AKS のストレージ機能の比較については、「Kubernetes クラスターのストレージ オプション」を参照してください。
永続データをバックアップするには、次の手順に従います。
- Velero を AKS および EKS クラスターでセットアップします。
- EKS クラスターのバックアップを実行します。
- AzCopy コマンドを使用して、S3 バケットから Azure Blob Storage に Velero バックアップをコピーします。
- AKS と EKS では永続ボリューム要求に対して異なる
storageClassNames
を使う場合があるため、AKS と互換性のあるクラス名にソースstorageClassNames
を変換するconfigMap
を作成します。 EKS と AKS の Kubernetes クラスターで同じストレージ ソリューションを使用している場合は、この手順を無視できます。 - バックアップを AKS に復元します (Velero 復元コマンドを使用)。
- Amazon Elastic Container Registry (ECR) のコンテナー イメージへの参照やシークレットへのアクセス権など、復元されたオブジェクトに必要な変更を適用します。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパルの作成者:
- Dixit Arora | ISV DN CoE のシニア カスタマー エンジニア
- ケタン・チャウダ | シニア カスタマー エンジニア (ISV DN CoE)
その他の共同作成者:
- Paolo Salvatori | プリンシパル カスタマー エンジニア、ISV & DN CoE
- Anthony Nevico | 主要クラウド ソリューション アーキテクト
- Francis Simy Nazareth | シニア テクニカル スペシャリスト
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。
次のステップ
- 移行ガイド - Azure サンプル
- AKS for Amazon EKS プロフェッショナル
- Kubernetes の ID およびアクセス管理
- Kubernetes の監視とログ記録
- Kubernetes へのネットワーク アクセスをセキュリティで保護する
- Kubernetes クラスターのストレージ オプション
- Kubernetes のコスト管理
- Kubernetes のノードとノード プールの管理
- クラスターのガバナンス