TL;DR
スキーマ定義 見ながらyaml書いて下記を実行
eksctl create cluster -f <yaml file>
依存ツール
既にインストール済みの場合は無視
AWS CLI
こちらを参照
eksctl
こちらを参照
eksctlについて
VPC(Subnet)やNATゲートウェイ、NodeGroup(ASG)等を自動で作り簡単にEKS環境を整えられるツール。
作るだけでなく、クラスター(kubernates)のアップデートやスケーリングの調整等も行えます。
command vs yaml
eksctlはコマンド引数として設定値を渡す方法と、yamlに記載して渡す方法があります。
コマンド引数の方がお手軽ですが、現在の設定値の管理や更新に支障がでるので出来るだけyamlで管理しましょう。
command
eksctl create cluster \
--name eks-sample \
--version 1.14 \
--region ap-northeast-1 \
--zones ap-northeast-1a,ap-northeast-1c,ap-northeast-1d \
--nodegroup-name eks-sample-node \
--node-type m5.large \
--nodes 3 \
--nodes-min 3 \
--nodes-max 4 \
--alb-ingress-access \
--asg-access
一回きりのその場で実行する場合は簡単に実行できます。
しかし、現在の状態がどのようになっているかも、コンソールからVPCやEKS、EC2の画面を見なければなりません。
また、新たにノードグループを増やしたい場合は別途commandが必要です。
yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: eks-sample
region: ap-northeast-1
# yamlならコメントも記載できます。
# MultiAZ
availabilityZones: ["ap-northeast-1a", "ap-northeast-1c", "ap-northeast-1d"]
nodeGroups:
- name: eks-sample-node
instanceType: m5.large
# 3AZ保つための最低数
desiredCapacity: 3
minSize: 3
maxSize: 10
iam:
withAddonPolicies:
autoScaler: true
albIngress: true
eksctl create cluster -f cluster.yaml
最初はyaml作成に時間が必要ですが、パラメータのコメントも記載でき、yamlを見るだけでどういう構成が把握できます。
しかし、コンソールから状態変更があった場合はyamlと差分が出るのでどう取り込むかという課題が新たに発生しますが・・・
新たにノードグループを増やしたい場合は既存のyamlに追記するだけです。
nodeGroups:
- name: eks-sample-node
.....
# プライベートネットワークにノードグループを作成
- name: eks-sample-private-node
instanceType: m5.large
desiredCapacity: 3
minSize: 3
maxSize: 10
privateNetworking: true
eksctl create nodegroup --config-file=cluster.yaml --include='eks-sample-private-node'