Table of Contents
Terraform 으로 EKS 클러스터 생성하기
작업중
사전준비
-
AWS 계정
-
AWS CLI
여기 를 참조해서 설정합니다.
-
terraform
여기 를 참조해 설치합니다.
-
kubectl
여기 를 참조해 설치합니다.
-
aws-iam-authenticator
여기 를 참조해 설치합니다.
-
helm
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh chmod 700 get_helm.sh ./get_helm.sh
EKS 리포 클론받기
EKS
템플릿을 위한 리포를 클론받습니다.
git clone https://github.com/terraform-providers/terraform-provider-aws.git
cd terraform-provider-aws/examples/eks-getting-started
리전을 ap-northeast-2
로 변경합니다.
vi providers.tf
map_public_ip_on_launch = true
를 추가해 줍니다.
vi vpc.tf
......
resource "aws_subnet" "demo" {
count = 2
availability_zone = data.aws_availability_zones.available.names[count.index]
cidr_block = "10.0.${count.index}.0/24"
map_public_ip_on_launch = true
vpc_id = aws_vpc.demo.id
......
EKS 클러스터 생성
terraform init
terraform plan
terraform apply
yes
를 입력해야 실제로 클러스터가 생성됩니다.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
클러스터의 생성이 완료되려면 10-20분 정도가 소요됩니다.
kubectl 설정하기
mkdir ~/.kube/
terraform output kubeconfig>~/.kube/config
kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2", GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032", GitTreeState:"clean", BuildDate:"2020-04-16T11:56:40Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15+", GitVersion:"v1.15.11-eks-af3caf", GitCommit:"af3caf6136cd355f467083651cc1010a499f59b1", GitTreeState:"clean", BuildDate:"2020-03-27T21:51:36Z", GoVersion:"go1.12.17", Compiler:"gc", Platform:"linux/amd64"}
terraform output config_map_aws_auth > configmap.yml
kubectl apply -f configmap.yml
kubectl get nodes -o wide
vi tiller-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
kubectl apply -f tiller-user.yaml
helm init --service-account tiller
helm install \
stable/nginx-ingress \
--name my-nginx \
--set rbac.create=true
클러스터 삭제하기
terraform destroy