はじめに
Amazon EKSでKubernetesクラスターを作成および管理するためのシンプルなコマンドラインツールである eksctl。これを使うと簡単にAmazon EKSクラスターを作成することができます。
今回は、Kubernetes初心者がeksctlを使ってAmazon EKSでKubernetesクラスターを作成してみて、実際どのようなリソースが作られているのか確認してみました。
eksctlでEKSクラスターを作成してみる
Amazon EKS クラスターは、主要な2つのコンポーネント「Amazon EKS コントロールプレーン」と「コントロールプレーンに登録された Amazon EKS ノード」で構成されており、具体的に必要なリソースは以下です。
- EKS動作用のVPCネットワーク(サブネット、NatGateway、InternetGateway、ENI、Elastic IP、ルートテーブル)
- EKSクラスター用のIAMロールとポリシー(他の AWS サービスを呼び出せるように)
- EKSコントロールプレーン
- EKSコントロールプレーンへの接続設定
- EKSワーカーノードとなるEC2インスタンス(EC2起動テンプレートやAutoScalingグループ/Nodeグループ)
環境・条件
- eksctl version: 0.149
- マネージド型ノード(Amazon EC2インスタンス)
- クラスター名とリージョンを指定し、そのほかはデフォルト値を使用
- Kubernetesのコマンドラインツールであるkubectlをインストール済み
eksctlコマンド実行
eksctl create cluster --name my-cluster --region region-code
※ eksctl create cluster –help でコマンドのオプション一覧が見れます。
これでEKSクラスターが作成されました!
何が作られたのか
2つのCloudFormationスタック
以下の2つの自動生成されたスタックの内容で各AWSリソースが作成されます。
- eksctl-xxxxx-xxxxx-cluster スタック
→ EKS動作用のVPCネットワーク、EKSクラスター用のIAMロールとポリシー、EKSコントロールプレーン - eksctl-xxxxx-xxxxx-nodegroup-xxxxx スタック
→ EKSワーカーノードとなるEC2インスタンス
ローカルの~/.kube
のkubectl
のconfigファイル
作成したEKSコントロールプレーンへの接続設定がconfigファイルに追加され、kubectlを使用してEKSコントロールプレーンへ接続ができるようになります。
接続確認
kubectl get svc
作成後のリソース構成図
まとめ
今回は、eksctlコマンドを使用したEKSクラスター構築で実際に作成されるリソースの内容について説明しました。
また、eksctlコマンドにはさまざまな機能が用意されているため、また別の機会にご紹介できればと思います。
参考リンク
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/what-is-eks.html