はじめに

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インスタンス

ローカルの~/.kubekubectlの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