구름 쿠버네티스

구름 쿠버네티스 전문가 과정 6기 - 33일차

jwlish 2023. 10. 6. 15:16
반응형

리뷰 (Review)


IaC 개요

 

IaC

  • Infrastructure as Code, 프로그래밍형 인프라
  • 인프라 구성을 코드를 통해 자동으로 구축, 관리, 프로비저닝

  • ex) 100개의 서버로 구성된 인프라 구축
    • 수동 설정 - 오랜 시간이 걸리고 구축 도중 오류 발생 확률이 높다.
    • IaC 활용 설정 - 하나의 코드를 통해 100개의 서버를 자동으로 구축

 

IaC 장점

  • 비용 절감
  • 배포 속도 향상
  • 오류 감소
  • 인프라 일관성 향상 (멱등성)
    • 멱등성 - 언제나 동일한 결과 제공

 

용어

  • 프로비저닝 - provisioning
    • 클라우드 서비스를 시작하고 구성하는 것을 프로비저닝이라 한다.
    • 인프라를 설정하는 프로세스로 시스템, 데이터, 네트워크 작동을 준비하는 과정을 의미한다.
  • 형상 관리 - configuration management
    • 이력 관리
    • 서버 운영상 필요한 소프트웨어를 설치하고 설정으로 관리하는 것
    • 설정 관리에 사용되는 여러 정보 이력을 관리
  • IaC와 형상 관리
    • IaC - 코드를 이용한 인프라 관리
    • 형상 관리 - 운영체제 상에서 패키지를 설치하고 필요한 설정을 코드로 관리하는 것

  • 배포 - deploy
    • 프로비저닝 된 서버를 실행시키기 위해 Application version을 제공하는 작업
  • 오케스트레이션 - orchestration
    • 여러 시스템 또는 서비스를 조정하는 것
    • 오케스트레이션의 목표는 배포, 관리, 확장, 네트워킹의 자동화

 

IaC tools

  • AWS CloudFormation
    • AWS에서 제공하는 IaC 서비스
  • Ansible
    • 별도의 Agent 없이 IaC 서비스 제공
    • SSH 기반으로 IaC 서비스 제공
  • Puppet
  • Chef
  • Terraform
    • GUI 기반으로 IaC 서비스 제공
  • 기타

IaC 서비스 - AWS CloudFormation

 

AWS CloudFormation

  • 참고 자료
  • AWS 대표적인 IaC 구성 조정 도구
  • 스택을 생성할 때마다 AWS CloudFormation에서 템플릿에 설명된 리소스를 프로비저닝과 구성을 담당하는 AWS
    리소스를 수동으로 생성하거나 구성할 필요가 없고 어떤 것이 무엇에 의존하는지 파악할 필요가 없다.
  • 장점
    • 인프라 관리 간소화
    • 신속하게 인프라 복제
    • 인프라 변경 사항을 쉽게 제어 및 추적
  • JSON 또는 YAML을 이용하여 작성
    • JSON - https://www.json.org/json-en.html
      • 각 요소 작성할 때 tab 간격을 사용하여 작성
      • 요소는 key : value 형식
      • 파일 확장자 .json
    • YAML - https://yaml.org/
      • 각 요소 작성할 때 space 2칸을 사용하여 작성
      • 요소는 key : value 형식
      • 파일 확장자 .yaml, .yml

 

AWS CloudFormation 구성 요소

  • 템플릿 - Template
    • 스택 리소스 프로비저닝 및 구성을 위해 필요한 텍스트 파일
    • JSON 또는 YAML 형식의 파일로 작성
    • AWS CloudFormation Designer를 사용하여 GUI 기반으로 작성할 수 있다.
      • 불필요한 코드가 템플릿에 추가될 수 있다. ex) size, position,  ...
    • AWS CloudFormation 템플릿을 AWS 리소스 구축을 위한 blueprint로 사용
  • 스택 - Stack
    • 하나의 단위로 관리할 수 있는 AWS 리소스 모음
    • 스택의 생성, 업데이트, 삭제를 통해 리소스 모음의 생성, 업데이트, 삭제
    • 스택의 모든 리소스는 AWS CloudFormation 템플릿을 통해 정의
    • 스택을 삭제하면 모든 리소스는 모두 삭제

 

AWS CloudFormation 작동 방식

  1. JSON 또는 YAML 포맷으로 AWS CloudFormation 템플릿 작성
    • 구성하려고 하는 AWS 리소스에 대한 정보 기술
  2. 작성된 템플릿을 S3 버킷에 저장
    • 템플릿 파일은 로컬 저장 또는 S3 버킷 저장 선택 가능
  3. 템플릿 위치를 지정하여 CloudFormation 스택 생성
  4. 템플릿에 지정된 스택을 통해 AWS 리소스에 대한 프로비저닝 및 구성 작업 진행

 

스택 생성

  • 서비스 메뉴→ 관리 및 거버넌스 → CloudFormation  스택 생성
  1. 템플릿 지정
    • 준비된 템플릿 - 사용자가 생성한 템플릿
    • 샘플 템플릿 사용 - AWS에 미리 만들어져 있는 템플릿
    • Designer에서 템플릿 생성 - Designer를 이용하여 템플릿 생성하여 사용
  2. 스택 세부 정보 지정
    • 스택 이름
    • 파라미터
      • template 파일에 지정된 파라미터 정보 표시
      • 해당 template을 이용하여 AWS 리소스 생성 시 필요한 파라미터 입력 시 사용
  3. 스택 옵션 구성
    • 태그 지정
    • 권한 부여
    • 스택 실패 옵션 설정
    • 고급 옵션 설정
  4. 검토 및 스택 생성
  • 스택 생성 후 이벤트 정보를 확인하면 해당 스택이 템플릿을 이용하여 수행하는 과정 정보가 출력된다.
    과정 중 에러가 발생하면 원인을 파악하여 템플릿 내용을 수정하고 다시 수행하는 과정을 반복한다.
  • 스택을 삭제하면 스택에 의해 생성된 모든 AWS 리소스는 같이 삭제된다.

 

더보기

Designer로 AWS CloudFormation 템플릿 생성

  • 버킷 생성 - ACL 비활성화, 모든 퍼블릭 액세스 차단, 버킷 버전 관리 활성화, 태그, 기본 암호화 필요시 활성
  • 서비스 메뉴 → 관리 및 거버넌스 → CloudFormation
    • 스택 생성 → Designer에서 템플릿 생성
      • CloudFormation 템플릿을 시각적인 도구를 사용하여 작성할 때 사용하는 도구
      • Designer 사용법
        • 리소스 유형
          • 템플릿을 구성할 리소스에 대한 종류를 시각적인 형태로 제공
          • EC2를 선택하면 일반적인 EC2 기반으로 인프라 구성을 위한 리소스 유형이 존재

 

AWS CloudFormation 템플릿

 

CloudFormation 템플릿 구성 요소

  • AWSTemplateFormatVersion
    • 템플릿 버전
    • 템플릿 문자는 문자열 형태 사용
    • 값을 지정하지 않은 경우 최신 버전 템플릿 포맷 버전으로 지정
  • Metadata
    • 템플릿에 대한 추가 정보 제공
    • CloudFormation은 Metadata 섹션에 포함된 정보를 변환, 수정, 삭제하지 않음
    • 민감 정보는 포함하지 않는 것이 좋다.
  • Parameter
    • 리소스 생성하거나 업데이트할 때 넘겨줄 파라미터 생성
    • 템플릿의 Resource 및 Outputs 섹션에 파라미터 참조 가능
    • 최대 60개 파라미터 지정 가능
    • 각 파라미터마다 CloudFormation이 스택을 프로비저닝 할 실행 시간에 대한 값을 할당해야 함
    • 파라미터는 동일한 템플릿에서 선언하고 참조해야 함
    • 파라미터 참조 시에는 !ref <파라미터 이름> (yaml 기준) 형식 사용
  • Mappings
    • 조건부 파라미터 값을 지정하는 데 사용할 수 있는 키와 관련 값의 매핑
    • Mappings 섹션은 "키 이름" "Mappings"로 이루어짐
    • 매핑 키 이름은 문자열 사용
  • Resource (필수)
    • AWS 리소스 및 해당 속성 지정
      • Logical ID - Resource 식별자, 논리적 ID, 영숫자로 구성, 고유한 값을 가져야 한다.
      • Resource type - 리소스 유형은 선언하려는 리소스 유형을 식별
      • 리소스 속성(Properties) - 리소스에 지정할 수 있는 추가 옵션
  • Outputs
    • 스택 속성을 볼 때마다 반환하는 값 설명
    • CloudFormation은 outputs 섹션에 포함된 정보를 삭제하거나 난독화 하지 않는다.
    • 최대 60개 출력 가능

TIF

9월 중순이다.

9월이 된 지 얼마 안 지난 것 같은데 다음 주면 또 10월이다.

옆에 사람 한 명 붙여놓고 싶다. 매일 집중해서 몰입해도 모자랄 판국에 정신 팔고 있는 시간이 많은 것 같다.

 

10월도 코 앞이고 다음 주부터는 네트워크 관리사 2급 자격증 조금씩 준비해야겠다.

 

 

2022. 09. 19 에 작성된 글입니다.

반응형