はじめに
AWS EKSをWebコンソールから構築することも出来ますが、毎回毎回画面で設定値を入力するのは少々手間です。
eksctlでコマンドから構築できるようなので試してみます。
目的
Webコンソールは使用せず、eksctlのみでAWS EKSのクラスタを構築する。
前提
コンテナでaws cliが利用可能な環境が整っていること
AWS EKSの構築(クラスタの作成)
$ eksctl create cluster --name クラスタ名 --region us-west-1 --node-type t2.micro --nodes 2 --nodes-min 2 --nodes-max 2
AWS EKSの情報を確認してみる
namespace情報の参照
# kubectl get namespace
pod情報の参照
# kubectl get pod
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 177m
すでにクラスタが構築されている場合
すでにクラスタが構築されている状態でAWS CLIが実行可能なコンテナを起動させた場合、aws configureのあとに以下のコマンドを実行することでeksctlやkubectlが利用可能になります。
$ aws eks --region us-west-1 update-kubeconfig --name クラスタ名
他のIAMにもアクセス権を与える
- クラスタ情報を確認
# eksctl get iamidentitymapping --region us-west-1 --cluster クラスタ名
2021-03-03 08:16:45 [ℹ] eksctl version 0.39.0
2021-03-03 08:16:45 [ℹ] using region us-west-1
ARN USERNAME GROUPS
arn:aws:iam::xxxxxxxx:role/xxxxxxxx system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes
- クラスタ名、IAMユーザ名を変更して実行
# eksctl create iamidentitymapping --region us-west-1 --cluster クラスタ名 --arn arn:aws:iam::xxxxxxxx:user/権限を付与したいIAM --group system:masters --username 権限を付与したいIAM
クラスタの削除
# eksctl delete clister —name クラスタ名
おわりに
今回はお手軽にデフォルト、最小、最大ノード数を2とし、使用するEC2インスタンスも最小のt2.microで構築しました。
このあたりの構成は規模に応じて変更すれば良いと思います。
eksctlを使用すると、VPCやサブネットも含め構築されますので、使用するリージョンにVPCを登録できるだけの空きが無いとエラーになります。
また、今回は有志含め2名で検証していたのですが、私が作成したクラスターへアクセスできず困りました。
アクセス権を与えることで有志も私と同様にコマンドを実行できるようになりました。
さらにこのあと、有志はAnsibleを使い、EKSクラスタにPodを自動でプロイする検証を進めてくれました。
とても簡単なサンプルではありますが、応用すればいろいろな環境を自動デプロイできるのではないでしょうか。