Terraformで構築するAmazon EKS Access Entry設定する
- POSTS
1. はじめに EKS クラスターを作成したのはいいが、kubectl で Kubernetes API をコールした際、アクセス権限のエラーが出力されたということはありませんか。
よくある理由としては、デフォルト設定では、 Kubernetes API のコールは、クラスターを作成した IAM ユーザーや IAM ロールに限られます。
クラスターは、Terraform 等でクラスター作成され、Terraform 用 IAM ユーザーが利用されることが多いとおもいます。
そのため、自分自身のIAM ユーザーで Kubernetes API をコールしても、Kubernetes API にアクセスする権限が与えられていないため、Kubernetes API を呼び出すことができないのです。
こういった際にKubernetes API をコールする必要がある IAM ユーザーやロールにアクセス権限を与えるために利用されるのが、Access Entry です。
本記事では、Access Entry の説明や設定例について記述してゆきます。
2. Access Entry とは? Access Entry とは、Kubernetes内部の設定ファイル(aws-auth ConfigMap)を触ることなく、AWS側(IAM)だけでEKSクラスターのアクセス権限を一元管理できる機能です。
2.1. クラスターの認証モード(Authentication Mode) Access Entry を利用するにあたり、EKSクラスターには「認証モード」という設定が用意されています。これにより、従来の権限管理から新しい Access Entry へどのように移行するかを制御できます。
認証モード 概要 補足・ユースケース CONFIG_MAP 従来の方式です。aws-auth ConfigMap のみを使用して権限を管理します。 互換性のために残されていますが、現在は非推奨です。 API_AND_CONFIG_MAP Access Entry(API)と aws-auth ConfigMap の両方を評価します。 既存のクラスターから新しい方式へ安全に移行したい場合に最適です。 API aws-auth ConfigMap を完全に無視し、Access Entry のみで権限を管理します。 新規クラスターにおけるベストプラクティスです。 2.2. Access Entryの必要性 Access Entry 以前は、aws-auth ConfigMap という機能で認証が利用されていましたが、現在は非推奨となっています。