AWSはEKSブループリントをリリースした。これは、EKSクラスタをシンプルに設定・デプロイするためのInfrastructure as Code(IaC)モジュールのコレクションである。EKSブループリントは現在、HashiCorp TerraformとAWS Cloud Development Kit (CDK)の両方に実装されている。ブループリントは、Prometheus、Nginx、Argo CDなどの多くのオープンソースアドオンをサポートする。
ブループリントでは、EKSクラスタを構成するために完全なブートストラップが提供される。これはオープンソースのアプローチである。ブートストラップでは、含まれているアドオンの必要に応じて、適切なIAMポリシー、ロール、サービスアカウントの設定を行う。ブループリントには、コントロールプレーンとワーカーノードを含むEKSクラスタの状態に対する設定を含めることができる。ブループリントを設定すると、それを使って、複数のリージョンあるいはアカウントに渡って同じEKS環境をデプロイできる。
EKSブループリントは、管理者チームとアプリケーションチームを設定・管理するために使用できる。管理者チームはクラスタにアクセス・管理でき、アプリケーションチームはクラスタ名前空間で実行されている処理を管理できる。「ソフトマルチテナンシー」の形式で、複数のチームが同じクラスタ内で処理を実行するようにできる。Kevin Coleman氏、Apoorva Kulkarni氏、Mikhail Shapirove氏、Vara Bonthu氏の説明によると「ソフトマルチテナントは、ネイティブのKubernetes構造(名前空間、ロール、ロールバインディング、ネットワークポリシーなど)を活用して、テナントを論理的に分離する。」
EKSブループリントでは、処理設定とアドオン設定を管理する方法を示す2つのArgo CDリポジトリのサンプルを提供する。次の例では、Argo CDを使ってEKSクラスタをセットアップする方法を示している。Argo CDにはサンプルのリポジトリを活用する2つのアプリケーションリソースが含まれる。
module "kubernetes-addons" {
...
enable_argocd = true
argocd_manage_add_ons = true # Indicates that Argo CD is responsible for managing/deploying Add-ons.
addons = {
path = "chart"
repo_url = "https://github.com/aws-samples/eks-blueprints-add-ons.git"
add_on_application = true
}
workloads = {
path = "envs/dev"
repo_url = "https://github.com/aws-samples/eks-blueprints-workloads.git"
add_on_application = false
}
}
EKSブループリントは、EKSとセルフマネージドアドオンの両方をEKSクラスタにセットアップできる。Amazon EKSアドオンは、Amazonによって整理・管理されている。そこには最新のセキュリティパッチとバグ修正が含まれており、AmazonによってEKSで動作することが検証されている。Amazon EKSアドオンが利用できるが、セルフマネージドバージョンがすでに使われている場合には、代わりにAmazonバージョンをインストールできる。
アドオンとしてサーバサイドのHelmレポジトリが参照される。これはオープンソースである。EKSブループリントには、AWS APIにリクエストする各アドオン向けに、サービスアカウントに対するデフォルトのIAMロールが含まれている。これらのデフォルトは、必要に応じてオーバーライドできる。
Amazon EKSによって管理される、Amazon EKSアドオン用の設定フィールドは、Amazon EKS APIを通して更新できる。アドオンの起動後は、EKSによって管理されていない設定フィールドは、Kubernetesクラスタを介して調整できる。その際、Kubernetesサーバサイド適用機能が利用されるため、これらの変更がAmazon EKSによって上書きされることはない。Amazon EKSアドオンは、1.18以降のAmazon EKSクラスタで使うことができる。
このリリースには、Datadog、HashiCorp、Snykといった企業からの多数のパートナーアドオンも含まれている。HashiCorpは、VaultインスタンスをKubernetesにデプロイするVaultアドオンをリリースした。これにより、以下に示すワークフローでVaultを有効にすることにより、EKSでVaultに簡単にアクセスできるようになる。
module "eks_addons" {
source = "github.com/aws-ia/terraform-aws-eks-blueprints//modules/kubernetes-addons"
eks_cluster_id = module.eks_blueprints.eks_cluster_id
enable_vault = true
}
TerraformとCDK用のEKSブループリントは、GitHubから入手できる。EKSブループリントは無料で使用でき、デプロイされたリソースに対してのみ費用が発生する。