Personal/DevOps

90DaysOfDevOps IaC 60~62일차

qkselc 2024. 11. 26. 18:53

Day 60 - Docker Containers, Provisioners & Modules

Docker 컨테이너

- nginx 컨테이너에 로컬에서 액세스할 수 있도록 하는 테라폼 코드이다.

Provisioners

- 선언적일 수 없는 경우에 배포에 파싱할 수 있는 방법을 제공하기 위해 존재한다.

모듈

- 함께 사용되는 여러 리소스를 위한 컨테이너이다.
- 모듈은 동일한 디렉터리에 있는 .tf 파일 모음으로 구성된다.

Day 61 - Kubernetes & Multiple Environments

간단한 Kubernetes 데모

- 쿠버네티스 클러스터 내에 3개의 새로운 리소스, 네임스페이스, 배포 및 서비스를 생성하는 코드이다.

- 네임스페이스에 nginx가 추가된 걸 볼 수 있다.

Terraform workspaces: 단일 백엔드 내의 여러 개의 명명된 섹션

- 장점: 쉬운 시작, 편리한 terraform.workspace 표현식, 코드 중복 최소화
- 단점: 인적 오류가 발생하기 쉬움, 동일한 백엔드 내에 저장된 상태, 코드베이스가 배포 구성을 명확하게 보여주지 않음

파일 구조: 디렉토리 레이아웃 분리, 모듈 재사용 제공

- 장점: 백엔드 격리(보안 향상, 인적 오류 가능성 감소) / 배포된 상태를 완벽하게 나타내는 코드베이스
- 단점: 프로비저닝 환경에 여러 Terraform 적용 필요 / 코드 중복이 더 많지만, 모듈을 사용하여 최소화

Day 62 - Testing, Tools & Alternatives

테스트

검사 도구

- checkov: 클라우드 인프라 구성을 스캔하여 배포하기 전에 잘못된 구성을 찾는다.
- tfsec: Terraform 코드에 대한 정적 분석 보안 스캐너
- terrascan: IaC를 위한 정적 코드 분석기
- terraform - compliance: IaC에 대한 네거티브 테스트 기능을 지원하는 Terraform에 대한 경량의 보안 및 규정 준수 중심 테스트 프레임워크
- snyk: Terraform 코드에서 잘못된 구성과 보안 문제를 스캔