DevOps/Kubernetes
[EKS] eksctl create cluster yaml file 생성
Jen'_'
2022. 3. 18. 12:18
반응형
사전 환경
- VPC 1개
- Private Subnet 2개
- Public Subnet 에 IGW, NAT 생성
- keypair 생성
클러스터 적용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: eks-demo
region: ap-northeast-2
version: "1.21"
iam:
withOIDC: true
vpc:
subnets:
private:
ap-northeast-2a: { id: subnet-xxxxxxxxxxxxxxxxx }
ap-northeast-2c: { id: subnet-xxxxxxxxxxxxxxxxx }
|
cs |
- metadata 에 cluster 의 정보를 넣습니다.
- iam.withOIDC: Amazon CNI 플러그인에 대해 IAM OIDC 공급자와 IRSA를 활성화합니다. 후에 alb-ingress-controller 와 같은 addons 를 설치하기 위해 필요합니다.
- vpc.subnets 에서 지정한 서브넷에 worker node가 생성됩니다.
NodeGroup 적용 (managed)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
managedNodeGroups:
- name: eks-worker
instanceType: t3.medium
instanceName: eks-worker
privateNetworking: true
# autoscaling
minSize: 2
maxSize: 4
desiredCapacity: 2
# volume
volumeType: gp3
volumeSize: 20
# ssh
ssh:
allow: true
# keypair-pem key
publicKeyName: jenakey
# new feature for restricting SSH access to certain AWS security group IDs
sourceSecurityGroupIds: ["sg-xxxxxxxxxxxx"]
labels: {role: worker}
tags:
nodegroup-role: worker
|
cs |
1. 노드그룹에는 관리형(managedNodeGroups) 와 비관리형(nodeGroups) 가 있습니다.
- managedNodeGroups은 최신 k8s 및 호스트 OS 버전으로 노드를 최신화 상태로 유지시켜 줍니다. 반대로 nodeGroups는 사용자가 직접 업데이트를 해야합니다.
- EKS 콘솔에는 managedNodeGroups 만 표시가 됩니다. nodeGroups 콘솔에 표시되지 않습니다.
- https://eksctl.io/usage/eks-managed-nodes/#creating-managed-nodegroups
2. privateNetworking: 보안을 위해 private 을 사용했습니다.
3. ssh
- publickeyName: 키페어로 생성한 pem key 를 입력했습니다.
- sourceSecurityGroupIds: ssh 를 허용하는 sg id 를 입력합니다. master ec2 의 보안그룹을 입력하여 master 에서만 접근 가능하도록 했습니다.
클러스터 생성
$ eksctl create cluster -f cluster.yaml
위의 명령어를 입력하면 클러스터가 생성됩니다.
CloudFormation 에서 클러스터 구성 스택이 끝나고 노드 구성 스택이 생성되는 과정을 거칩니다.
참고
반응형