EKS 機能 - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

EKS 機能

Amazon EKS 機能は、開発者のベロシティを加速させ、Kubernetes での構築とスケールの複雑さを軽減するのに役立つ、完全マネージド型のクラスター機能のレイヤーセットです。EKS 機能は、宣言型の継続的デプロイ、AWS リソース管理、Kubernetes リソースの作成とオーケストレーションに対応した Kubernetes ネイティブの機能であり、いずれも AWS で完全に管理されます。EKS 機能を使用すると、基盤となるプラットフォームサービスのオペレーションにかかる負担を AWS にオフロードして、ワークロードの構築とスケールに集中できます。これらの機能はクラスター内ではなく EKS 内で実行されるため、重要なプラットフォームコンポーネントをワーカーノードにインストール、メンテナンス、スケールする必要がありません。

使用を開始するには、新規または既存の EKS クラスターに 1 つ以上の EKS 機能を作成します。そのためには、AWS CLI、AWS マネジメントコンソール、EKS API、eksctl、または任意の Infrastructure as Code ツールを使用します。EKS 機能は、互いに連携するように設計されていると共に、ユースケースと要件に基づいて選択可能な独立したクラウドリソースです。

EKS でサポートされている Kubernetes バージョンは、いずれも EKS 機能でサポートされています。

注記

EKS 機能は、Amazon EKS が利用可能なすべての AWS 商用リージョンで利用できます。サポートされているリージョンの一覧については、「AWS 全般的なリファレンス」の「Amazon EKS エンドポイントとクォータ」を参照してください。

利用可能な機能

AWS Controllers for Kubernetes (ACK)

ACK を使用すると、Kubernetes API を使用して AWS リソースを管理できるため、Kubernetes カスタムリソースを使用して S3 バケット、RDS データベース、IAM ロールなどの AWS リソースを作成および管理できます。ACK は、目的の状態と AWS での実際の状態とを継続的に調整して、時間の経過に伴うドリフトを修正します。これにより、システムの正常性を維持し、リソースを指定どおりに設定できます。Kubernetes ワークロードと共に、同じツールとワークフローを使用して AWSリソースも管理でき、S3、RDS、DynamoDB、Lambda など 50 を超える AWS サービスをサポートしています。ACK は、クロスアカウントおよびクロスリージョンのリソース管理をサポートし、マルチアカウントでマルチクラスターの複雑なシステム管理アーキテクチャを実現します。また、読み取り専用リソースと読み取り専用採用をサポートしているため、他の Infrastructure as Code ツールから Kubernetes ベースのシステムに容易に移行できます。

ACK の詳細はこちら →

Argo CD

Argo CD は、アプリケーションを GitOps ベースで継続的にデプロイする仕組みを実装しており、Git リポジトリをワークロードとシステム状態の信頼できるソースとして使用します。また、アプリケーションリソースを Git リポジトリからクラスターに自動的に同期し、ドリフトを検出および修正して、デプロイしたアプリケーションが目的の状態と一致するようにします。1 つの Argo CD インスタンスから複数のクラスターにわたってアプリケーションをデプロイおよび管理でき、変更がコミットされるたびに Git リポジトリから自動的にデプロイされます。Argo CD と ACK を一緒に使用すると、基盤となる GitOps システムを実現して、ワークロードの依存関係管理をシンプルにし、クラスターやインフラストラクチャを規模に応じて管理するなどシステム全体の設計をサポートできます。Argo CD は、AWS アイデンティティセンターとの統合により認証と認可を実施し、Argo UI のホストによりアプリケーションのヘルスとデプロイのステータスを可視化します。

Argo CD の詳細はこちら →

kro (Kube Resource Orchestrator)

kro でカスタムの Kubernetes API を作成することにより、複数のリソースを高次の抽象化に構成できるため、プラットフォームチームはよく使用されるリソースを組み合わせてクラウド構成要素を構築できるように再利用可能なパターンを定義できます。kro では、Kubernetes リソースと AWS リソースの両方を統合抽象化に構成し、シンプルな構文を使用して、動的設定と条件付きロジックを有効にできます。kro を使用すると、プラットフォームチームが適切なガードレールに沿ってセルフサービス機能を提供できるため、開発者は組織の標準とベストプラクティスを維持しながら、シンプルな目的別 API を使用して複雑なインフラストラクチャをプロビジョニングできます。kro リソースは Kubernetes リソースにすぎず、Kubernetes マニフェストに指定して Git に保存できます。あるいは、Amazon ECR などの OCI 互換のレジストリにプッシュして、組織内に広範に分散させることもできます。

kro の詳細はこちら →

EKS 機能のメリット

EKS 機能は、AWS で完全に管理されるため、基礎となるクラスターサービスのインストール、メンテナンス、スケールが不要です。AWS がセキュリティパッチ適用、更新、オペレーション管理を担うため、チームはクラスターオペレーションではなく AWS での構築に集中できます。クラスターリソースを消費する従来の Kubernetes アドオンとは異なり、機能はワーカーノードではなく EKS で動作します。これにより、クラスター内コントローラーやその他のプラットフォームコンポーネントの管理に伴うオペレーションの負担を最小限に抑えながら、ワークロードのクラスターのキャパシティとリソースを解放できます。

EKS 機能により、kubectl などネイティブの Kubernetes API とツールを使用して、デプロイ、AWS リソース、カスタム Kubernetes リソース、およびコンポジションを管理できます。すべての機能がクラスターのコンテキストで動作し、アプリケーションリソースとクラウドインフラストラクチャリソースの両方で設定のドリフトを自動的に検出して修正します。1 つのコントロールポイントから複数のクラスター、AWS アカウント、およびリージョンにリソースをデプロイして管理できるため、複雑な分散環境でのオペレーションがシンプルになります。

EKS 機能は、GitOps ワークフロー用に設計されており、インフラストラクチャとアプリケーションのバージョンを宣言型で管理できます。変更が Git からシステムを通じて流れていくため、監査証跡、ロールバック機能、およびコラボレーションワークフローを既存の開発プラクティスと統合できます。この Kubernetes ネイティブアプローチにより、複数のツールを使用したり、クラスターの外部にある Infrastructure as Code システムを管理したりする必要がなく、信頼できる単一のソースを参照すればよくなります。バージョン管理された Kubernetes 宣言型設定に定義された目的の状態は、環境全体に継続的に適用されます。

料金

EKS 機能に前払いのコミットメントや料金はありません。機能リソースごとに Amazon EKS クラスターでアクティブになっている時間単位で課金されます。EKS 機能で管理される特定の Kubernetes リソースも、時間単位で課金されます。

現在の料金については、「Amazon EKS の料金ページ」を参照してください。

ヒント

AWS Cost Explorer と、コストと使用状況レポートとを使用すると、機能のコストを他の EKS 料金とは別に追跡できます。機能にコスト配分の目的でクラスター名、機能タイプ、その他の詳細のタグを付与できます。

EKS 機能の仕組み

各機能は、EKS クラスターに作成する AWS リソースです。作成した機能は、EKS で実行され、AWS で完全に管理されます。

注記

1 つのクラスターのタイプ (Argo CD、ACK、kro) ごとに機能リソースを 1 つ作成できます。同じクラスターで同じタイプに機能リソースを複数作成することはできません。

クラスターの機能とのインタラクションには、標準の Kubernetes API とツールを使用します。

  • kubectl を使用して Kubernetes カスタムリソースを適用します。

  • GitOps ワークフローの信頼できるソースとして Git リポジトリを使用します。

追加のツールがサポートされている機能もあります。例えば、次のようになります。

  • Argo CD CLI を使用して、Argo CD 機能のリポジトリおよびクラスターを設定および管理します。

  • Argo CD UI を使用して、Argo CD 機能で管理されるアプリケーションを可視化および管理します。

各機能は、互いに連携するように設計されていますが、いずれも独立しており、完全にオプトインされています。必要に応じて 1 つ、2 つ、または 3 つすべての機能を有効にし、要件の進化に伴って設定を更新できます。

EKS コンピューティングのいずれのタイプも、EKS 機能で使用できるようにサポートされています。詳細については、「ノードを使用してコンピューティングリソースを管理する」を参照してください。

IAM ロールでのセキュリティ設定と詳細については、「EKS 機能のセキュリティに関する考慮事項」を参照してください。マルチクラスターアーキテクチャパターンについては、「EKS 機能と考慮事項」を参照してください。

一般的なユースケース

アプリケーションとインフラストラクチャの GitOps

Argo CD を使用してアプリケーションとオペレーションコンポーネントをデプロイし、ACK を使用してクラスター設定の管理とインフラストラクチャのプロビジョニングを行います。どちらも、Git リポジトリから実施します。アプリケーション、データベース、ストレージ、ネットワークといったスタック全体がコードとして定義され、自動的にデプロイされます。

例: 開発チームが Git に変更をプッシュします。Argo CD が更新後のアプリケーションをデプロイし、ACK が新規 RDS データベースを適切な設定でプロビジョニングします。すべての変更が監査可能で、可逆性があり、環境間で一貫性が保たれます。

セルフサービスによるプラットフォームエンジニアリング

kro でカスタム API を作成して、ACK リソースと Kubernetes リソースを構成できます。プラットフォームチームは、ガードレールに沿って承認済みのパターンを定義します。アプリケーションチームは、シンプルで高レベルの API を使用して、完全なスタックをプロビジョニングします。

例: プラットフォームチームは、「WebApplication」という API を作成して、デプロイ、サービス、イングレス、S3 バケットをプロビジョニングします。開発者は、この API を使用するにあたって、その基盤となる複雑さや AWS アクセス許可について知る必要がありません。

マルチクラスターアプリケーション管理

Argo CD を使用して、リージョンやアカウントが異なる複数の EKS クラスターにアプリケーションをデプロイします。一貫したポリシーとワークフローに従って、単一の Argo CD インスタンスからすべてのデプロイを管理します。

例: 複数のリージョンにまたがる開発、ステージング、本番稼働用のクラスターに同じアプリケーションをデプロイします。Argo CD により、各環境はその対応する Git ブランチと常に同期するようになります。

マルチクラスター管理

ACK を使用して EKS クラスターを定義およびプロビジョニングし、kro を使用して組織の標準に従ってクラスター設定をカスタマイズし、Argo CD を使用してクラスターのライフサイクルと設定を管理します。これにより、作成から継続的な運用までエンドツーエンドでクラスターを管理できます。

例: ACK と kro により、クラスターインフラストラクチャをプロビジョニングおよび管理するように EKS クラスターを定義して、ネットワーク、セキュリティポリシー、アドオンなどの設定に関して組織全体の標準を定義します。Argo CD を使用すると、一貫した標準と自動ライフサイクル管理を利用してフリート全体でクラスター、設定、Kubernetes バージョン更新を作成し、継続的に管理します。

移行とモダナイズ

ネイティブのクラウドリソースプロビジョニングと GitOps ワークフローに従って、EKS への移行をシンプルにします。ACK を使用して既存の AWS リソースを再作成することなく採用し、Argo CD を使用して Git からワークロードのデプロイを運用できるようにします。

例: EC2 から EKS に移行するチームは、まず ACK を使用して既存の RDS データベースと S3 バケットを採用し、次に Argo CD を使用して Git からコンテナ化されたアプリケーションをデプロイします。移行パスは明確で、オペレーションは最初から標準化されます。

アカウントとリージョンのブートストラッピング

Argo CD と ACK を一緒に使用して、アカウントとリージョン全体にわたるインフラストラクチャのロールアウトを自動化します。Git に Infrastructure as Code を定義し、機能がデプロイと管理を担えるようにします。

例: プラットフォームチームは、VPC、IAM ロール、RDS インスタンス、モニタリングスタックといった標準アカウント設定を定義している Git リポジトリを維持します。Argo CD がこれらの設定を新しいアカウントとリージョンに自動的にデプロイするため、一貫性が確保され、手動セットアップ時間が数日から数分に短縮されます。