Cloud Formation 기본 인프라 배포

SummerToday·2024년 8월 18일
0

Amazon EKS 기본 강의

목록 보기
3/6
post-thumbnail
post-custom-banner

AWS CloudFormation

  • AWS CloudFormation은 Amazon Web Services에서 제공하는 인프라 관리 도구로, 코드로 인프라를 정의하고 관리할 수 있게 해준다.

  • 클라우드 환경에서 서버, 데이터베이스, 네트워크 등 다양한 AWS 리소스를 효율적으로 프로비저닝하고 관리할 수 있도록 도와준다.

  • Git, Subversion(SVN) 등 선택한 버전 제어 시스템을 사용하여 CloudFormation 템플릿을 관리할 수 있다.

  • JSON 또는 YAML 템플릿 파일에서 전체 애플리케이션 스택(애플리케이션에 필요한 모든 리소스)을 정의한다.


스택

출처: Architecting on AWS 7.7.6 (KO): Student Guide

  • 단일 단위로 관리되는 AWS 리소스 모음이다.

  • 스택을 통해 여러 리소스를 한꺼번에 생성, 업데이트, 삭제할 수 있어, 복잡한 인프라 설정을 쉽고 일관되게 관리할 수 있다.


계층형 아키텍처 구현 가능

출처: Architecting on AWS 7.7.6 (KO): Student Guide

  • CloudFormation을 사용하면 각 계층을 개별 템플릿이나 모듈로 관리할 수 있다.

  • 각 계층의 리소스가 독립적으로 관리되고, 필요할 때 특정 계층만 업데이트할 수 있다.

  • 예를 들어, 네트워크 계층(VPC, 서브넷 등)은 한 템플릿으로 정의하고, 애플리케이션 계층(EC2 인스턴스, 로드 밸런서 등)은 다른 템플릿으로 관리할 수 있다.


CloudFormation 스택 생성

  • sgingressSshcidr
    AWS CloudFormation 템플릿에서 보안 그룹(Security Group)의 SSH(포트 22) 인바운드 규칙을 정의할 때 사용되는 매개변수(Parameter)이다. 이 매개변수는 특정 CIDR 블록을 지정하여 SSH 트래픽을 허용할 IP 범위를 정의한다. 여기서는 자신의 IP 주소/32로 설정해준다.

  • 나머지는 기본 설정으로 진행한다.


CloudFormation 기본 인프라 배포 구성

출처: 인프런, Ongja_CloudNet@, ⌜CloudNet@와 함께하는 Amazon EKS 기본 강의⌟

출처: 인프런, Ongja_CloudNet@, ⌜CloudNet@와 함께하는 Amazon EKS 기본 강의⌟

  • myeks-host라는 EC2 인스턴스는 EKS 관리 용도의 인스턴스로 Bastion Host 역할을 수행한다. 즉 myeks-host에 접근하여 EKS 관리 작업을 수행한다.

    • Bastion Host
      보안 목적으로 사용되는 특별한 유형의 서버로, 민감한 내부 네트워크에 위치한 다른 서버들에 접근하기 위한 게이트웨이 역할을 한다.
  • 보안 그룹은 위에서 설정한 대로 각자의 PC만 접근이 가능하도록 설정되어 있다.

  • cf. 인터넷 게이트웨이
    퍼블릭 서브넷의 리소스가 인터넷과 양방향으로 통신할 수 있도록 한다.

  • cf. NAT 게이트웨이
    프라이빗 서브넷의 리소스가 인터넷에 나가는 트래픽을 처리하되, 외부에서 해당 리소스로 직접 접근할 수는 없다.


EC2 접속 후 기본 설정

putty를 사용하여 myeks-host EC2에 접속하여 다음 명령어들을 실행한다.

  • 사용자 확인
    whoami 명령어를 통해 root 사용자임을 확인한다.

  • 기본 설치 도구 확인

    # kubectl 버전 확인
    kubectl version --client=true -o yaml | yh
    
    # eksctl 버전 확인
    eksctl version
    
    # awscli 버전 확인
    aws --version
    
    # 도커 정보 확인
    docker info | yh

  • awscli 사용을 위한 IAM 자격 증명
    aws configure 명령어를 통해 IAM 사용자의 액세스 키들을 참고하여 자격 증명을 설정해준다. 그래야 awscli 사용이 가능하다.


  • EKS 배포할 VPC 정보 확인

    # CLUSTER_NAME 변수 확인
    echo $CLUSTER_NAME
    
    # EKS를 배포할 myeks-VPC 정보 확인
    aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq
    
    # EKS를 배포할 myeks-VPC ID 값만 확인
    aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq -r .Vpcs[].VpcId
    

  • EKS 배포할 VPC ID 변수 저장

    # VPCID 변수에 myeks-VPC ID 값을 저장
    export VPCID=$(aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq -r .Vpcs[].VpcId)
    
    # VPCID를 전역 변수로 선언
    echo "export VPCID=$VPCID" >> /etc/profile
    
    # VPCID 변수 호출
    echo $VPCID

  • EKS를 배포할 VPC의 서브넷 정보 확인

    # EKS를 배포할 VPC의 전체 서브넷 정보 확인
    aws ec2 describe-subnets --filters "Name=vpc-id,Values=$VPCID" --output json | jq
    
    # EKS를 배포할 VPC의 퍼블릭 서브넷 정보 확인
    aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" | jq
    
    aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet2" | jq
    
    # EKS를 배포할 VPC의 퍼블릭 서브넷 ID 값만 확인
    aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" --query "Subnets[0].[SubnetId]" --output text
    
    aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet2" --query "Subnets[0].[SubnetId]" --output text
    

  • EKS를 배포할 퍼블릭 서브넷 ID 변수 저장

    // 변수에 퍼블릭 서브넷 ID 값을 저장
    export PubSubnet1=$(aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" --query "Subnets[0].[SubnetId]" --output text)
    
    export PubSubnet2=$(aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet2" --query "Subnets[0].[SubnetId]" --output text)
    
    // 퍼블릭 서브넷 ID를 전역 변수로 선언
    echo "export PubSubnet1=$PubSubnet1" >> /etc/profile
    
    echo "export PubSubnet2=$PubSubnet2" >> /etc/profile
    
    // VPCID 변수 호출
    echo $PubSubnet1
    
    echo $PubSubnet2



해당 글은 다음 강의의 내용을 참고한 글임을 밝힙니다. 자세한 내용은 다음 강의에서 확인해볼 수 있습니다.
인프런, Ongja_CloudNet@, ⌜CloudNet@와 함께하는 Amazon EKS 기본 강의⌟
profile
IT, 개발 관련 정보들을 기록하는 장소입니다.
post-custom-banner

0개의 댓글