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
  1. metadata 에 cluster 의 정보를 넣습니다.
  2. iam.withOIDC: Amazon CNI 플러그인에 대해 IAM OIDC 공급자와 IRSA를 활성화합니다. 후에 alb-ingress-controller 와 같은 addons 를 설치하기 위해 필요합니다.
  3. 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 에서 클러스터 구성 스택이 끝나고 노드 구성 스택이 생성되는 과정을 거칩니다.

 

 

 

 

참고

https://eksctl.io/usage/schema/

https://github.com/weaveworks/eksctl/tree/main/examples

반응형