⚓
Terraformでサッと使える検証用EKS環境を作った
なにこれ
個人でKubernetesおよびEKSを学習するにあたって、
簡単に検証用のクラスタを作り消しできるようにTerraformを書きましたので共有します🍥
terraform apply
すると、10〜15minほどかかったのちEKS環境がうまれます👶
空の状態で起動しっぱなしの時のコストは 約15~20円/h
程度の想定(EKSクラスター0.1USD + EC2インスタンス0.04USD
)ですが、
このZennを書いてる時点で 全然わからない俺たちは雰囲気で
状態で環境を作ってるので、もし間違ってたらすみません
k8sのバージョンは 1.21
で、ノードとして t3.small
インスタンスが2つ作成されます
その他作成されるAWSリソースには、 study-k8s
というPrefixが付くように設定しています
また、追加で以下を設定しています
ローカルに必要なものは以下です
- direnv
- awscli
- terraform
- 1.0.5
- kubectl
導入手順
一式はこちらのリポジトリに格納しています
apply手順は以下です
# AdministratorAccessを持つユーザのID/シークレットを用意しておいてください
$ cp -p .envrc.sample .envrc
$ direnv allow
# デフォルトでは 172.17.0.0/16 のVPCを作ってその中で色々やるので、
# 既存で作っているものと重複している場合は以下ファイルを作成して上書きしてください
$ cp -p terraform.tfvars.sample terraform.tfvars
# S3バックエンドを利用する場合、以下ファイル内のコメントアウトを解除してください
$ ls -l terraform.tf
# AWS環境にapply
$ terraform init
$ terraform apply
略
Apply complete! Resources: 48 added, 0 changed, 0 destroyed.
Outputs:
cluster_name = "study-k8s-XXXXXXXX"
# 接続設定を更新 / 確認
$ aws eks update-kubeconfig --name study-k8s-XXXXXXXX
$ kubectl config current-context
arn:aws:eks:ap-northeast-1:1234567890:cluster/study-k8s-XXXXXXXX
# Server VersionのGitVersionに `eks` が入っていればEKSに接続できてますたぶん
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.1", GitCommit:"632ed300f2c34f6d6d15ca4cef3d3c7073412212", GitTreeState:"clean", BuildDate:"2021-08-19T15:45:37Z", GoVersion:"go1.16.7", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21+", GitVersion:"v1.21.2-eks-0389ca3", GitCommit:"8a4e27b9d88142bbdd21b997b532eb6d493df6d2", GitTreeState:"clean", BuildDate:"2021-07-31T01:34:46Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"linux/amd64"}
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-172-16-2-184.ap-northeast-1.compute.internal Ready <none> 4m32s v1.21.2-eks-55daa9d
ip-172-16-3-4.ap-northeast-1.compute.internal Ready <none> 4m41s v1.21.2-eks-55daa9d
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system aws-load-balancer-controller-5fb99754b5-tjdmk 1/1 Running 0 5m54s
kube-system aws-node-5t57d 1/1 Running 0 4m8s
kube-system aws-node-w7k8d 1/1 Running 0 4m17s
kube-system coredns-76f4967988-bm6ld 1/1 Running 0 7m48s
kube-system coredns-76f4967988-sq5p7 1/1 Running 0 7m48s
kube-system kube-proxy-7s87r 1/1 Running 0 4m8s
kube-system kube-proxy-z8ps8 1/1 Running 0 4m17s
kube-system metrics-server-569b4c5df9-4knbj 1/1 Running 0 5m57s
実際に手を動かしてみると色々分かった気になれてたのしいぞ🍠
(本当にわかったかは別)
# 飽きたら削除しましょう
$ terraform destroy
参考文献
作成にあたり、ためになったものをはっておきます
Discussion