Cloud/EKS

AWS EKS Workshop - (EKS 클러스터 생성, 샘플애플리케이션 소개)

J's Note 2023. 10. 11. 17:38

Amazon Elastic Kubernetes Service(Amazon EKS)는 Amazon Web Services(AWS)에 Kubernetes 컨트롤 플레인을 설치, 운영 및 유지 관리할 필요가 없는 관리형 서비스입니다. EKS 워크숍을 통해 샘플 앱을 배포해보도록 하겠습니다.

 

먼저 eksctl 도구를 사용하여 실습용 클러스터를 구축해보도록 하겠습니다.

일반적으로 eksctl 은 cloud9 환경에서 제공되므로 이를 사용해도 좋고, 로컬환경에서 설치하여 사용해도 됩니다.

로컬에서 실행하는경우 aws configure 설정이 되어있어야합니다.

 

클러스터를 구축하는 구성은 다음과 같습니다. (cluster.yaml)

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

availabilityZones:
- ap-northeast-2a
- ap-northeast-2c

metadata:
  name: 'eks-workshop'
  region: 'ap-northeast-2'
  version: '1.25'
  tags:
    karpenter.sh/discovery: 'eks-workshop'
    created-by: eks-workshop-v2
    env: 'eks-workshop'

iam:
  withOIDC: true

vpc:
  cidr: 10.42.0.0/16
  clusterEndpoints:
    privateAccess: true
    publicAccess: true

addons:
- name: vpc-cni
  version: v1.12.5-eksbuild.2
  configurationValues: "{\"env\":{\"ENABLE_PREFIX_DELEGATION\":\"true\", \"ENABLE_POD_ENI\":\"true\", \"POD_SECURITY_GROUP_ENFORCING_MODE\":\"standard\"}}"
  resolveConflicts: overwrite

managedNodeGroups:
- name: default
  desiredCapacity: 3
  minSize: 3
  maxSize: 6
  instanceType: t3.small
  privateNetworking: true
  releaseVersion: 1.25.6-20230304
  labels:
    workshop-default: 'yes'

2023년 10월 11일 기준 AWS에서 제공하는 EKS 버전은 1.28이지만, 이해를 하기위해  1.25버전을 사용하도록 하겠습니다.

해당 구성으로 EKS 클러스터가 생성되게 됩니다.

  1. 2개의 가용영역에 걸친 vpc가 생성됩니다. (ap-northeast-2a, ap-northeast-2c)
  2. EKS클러스터가 생성됩니다. (eks-workshop)
  3. IAM OIDC 공급자가 생성됩니다.
  4. default 라는 이름이 지정된 관리형 노드그룹을 추가합니다.
  5. 접두사 위임을 사용하도록 VPC CNI를 구성합니다.

다음과 같이 구성파일을 적용합니다.

vi cluster.yaml
eksctl create cluster -f cluster.yaml

다음 작업은 EKS 클러스터를 생성하는 작업이기에, 20분정도 소요됩니다.

꽤 오래걸리는군..

클러스터가 생성되는동안, EKS를 간단히 설명하는 유튜브를 시청합니다. 러닝타임은 10분정도입니다.

클러스터 구성 완료

저희가 사용하게 될 샘플 애플리케이션은 간단한 웹 스토어 애플리케이션입니다.

https://github.com/aws-containers/retail-store-sample-app

 

GitHub - aws-containers/retail-store-sample-app: Sample application for demonstrating container platforms and related technology

Sample application for demonstrating container platforms and related technology - GitHub - aws-containers/retail-store-sample-app: Sample application for demonstrating container platforms and relat...

github.com

EKS 클러스터는 처음이므로 관리형DB나 로드밸런서 같은 AWS 매니지드 서비스를 사용하지는 않고, EKS 클러스터에 배포할것입니다.

 

클러스터가 준비되어있으므로 노드를 출력해봅니다.

kubectl get nodes

추후 EKS 클러스터를 Destroy하려는경우 다음 명령어를 사용합니다.

eksctl delete cluster eks-workshop --wait

추가적으로, CloudFormation 스택을 찾아 삭제합니다.