본문 바로가기

k8s 실전 프로젝트/1. EKS 환경구축

1. CloudFormation 으로 기본 환경 생성하기

# 클라우드 포메이션 기반 기본 환경 세팅하기

1. 클라우드 포메이션으로 이동 후 스택 생성을 클릭하여 스택을 생성한다.

2. 템플릿 관련 옵션을 설정 후 생성을 진행 한다.

3. 업로드한 파일을 확인한다. 우측 하단에 디자이너에서 보기를 클릭하면 아래와 같이 생성된 인프라를 볼 수 있다.

- 상당에는 그래픽으로 환경을 표시하고 하단에는 스크립트로 환경을 볼 수 있다.

- 스크립트로 표현된 환경

- 스택 생성: 상단에 아이콘을 클릭하면 구성된 인프라를 기반으로 환경이 생성 된다.

상단 아이콘을 클릭하면 스택 생성 화면으로 이동하고, 다음을 클릭하면 스택 생성이 된다.

- 생성전 확인화면이 아래와 같이 설정된다.

- 스택 옵션 구성 화면에서는 다른 옵션을 설정하지 않고 다음을 클릭하여 다음으로 넘어간다. 

- 마지막 검토 화면에서 템플릿 URL 부분에서 파일 이름 외 끝부분은 동적으로 변경된다는것을 기억하자.

- 스택 생성을 클릭하여 위의 설정된 환경으로 스택을 생성한다.

- 생성이 진행되는 모습, 생성이 완료가 되면 CREATE_COMPLETE로 상태가 변경 된다.

4. 생성한 스택 확인

- VPC로 이동하여 정상적으로 스택이 생성되었는지 확인한다.

- 아래의 모습처럼 정상적으로 VPC 스택이 생성된것을 볼 수 있다.

- 생성한 VPC 리소스가 정상적인지 체크

세부정보 및 CIDR 등 기본 정보에 대한 확인이 가능하다. 이상없이 확인이 된다면 정상적으로 생성이 된것이다.

5. 환경생성 전체 소스 (클라우드 포메이션)

AWSTemplateFormatVersion: '2010-09-09'

Parameters:
  ClusterBaseName:
    Type: String
    Default: eks-work

  TargetRegion:
    Type: String
    Default: ap-northeast-2

  AvailabilityZone1:
    Type: String
    Default: ap-northeast-2a

  AvailabilityZone2:
    Type: String
    Default: ap-northeast-2b

  AvailabilityZone3:
    Type: String
    Default: ap-northeast-2c

  VpcBlock:
    Type: String
    Default: 192.168.0.0/16

  WorkerSubnet1Block:
    Type: String
    Default: 192.168.0.0/24

  WorkerSubnet2Block:
    Type: String
    Default: 192.168.1.0/24

  WorkerSubnet3Block:
    Type: String
    Default: 192.168.2.0/24

Resources:
  EksWorkVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !Ref VpcBlock
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: !Sub ${ClusterBaseName}-VPC

  WorkerSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: !Ref AvailabilityZone1
      CidrBlock: !Ref WorkerSubnet1Block
      VpcId: !Ref EksWorkVPC
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: !Sub ${ClusterBaseName}-WorkerSubnet1

  WorkerSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: !Ref AvailabilityZone2
      CidrBlock: !Ref WorkerSubnet2Block
      VpcId: !Ref EksWorkVPC
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: !Sub ${ClusterBaseName}-WorkerSubnet2

  WorkerSubnet3:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: !Ref AvailabilityZone3
      CidrBlock: !Ref WorkerSubnet3Block
      VpcId: !Ref EksWorkVPC
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: !Sub ${ClusterBaseName}-WorkerSubnet3

  InternetGateway:
    Type: AWS::EC2::InternetGateway

  VPCGatewayAttachment:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      InternetGatewayId: !Ref InternetGateway
      VpcId: !Ref EksWorkVPC

  WorkerSubnetRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref EksWorkVPC
      Tags:
        - Key: Name
          Value: !Sub ${ClusterBaseName}-WorkerSubnetRouteTable

  WorkerSubnetRoute:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref WorkerSubnetRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref InternetGateway

  WorkerSubnet1RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref WorkerSubnet1
      RouteTableId: !Ref WorkerSubnetRouteTable

  WorkerSubnet2RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref WorkerSubnet2
      RouteTableId: !Ref WorkerSubnetRouteTable

  WorkerSubnet3RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref WorkerSubnet3
      RouteTableId: !Ref WorkerSubnetRouteTable

Outputs:
  VPC:
    Value: !Ref EksWorkVPC

  WorkerSubnets:
    Value: !Join
      - ","
      - [!Ref WorkerSubnet1, !Ref WorkerSubnet2, !Ref WorkerSubnet3]

  RouteTable:
    Value: !Ref WorkerSubnetRouteTable

'k8s 실전 프로젝트 > 1. EKS 환경구축' 카테고리의 다른 글

2. EKS 클러스터 구축  (0) 2022.03.03