Terraform 실행 환경 구성
·
IaC
Terraform 환경 구성Terraform은 Infrastructure as Code(IaC) 도구이다. 즉 서버, 네트워크, DB 같은 인프라를 코드로 관리한다.그래서 일반 프로그램과 다르게 다음 3가지 과정이 반복되는 특징이 존재한다.코드 작성테스트실행따라서 실행 환경은 보통 개발자의 로컬 환경에서 구성한다. 물론 다음 서비스도 존재한다.Terraform CloudTerraform Enterprise하지만 대부분의 프로젝트에서는 테스트 및 디버깅의 용이성과 코드 관리의 편의성 때문에 로컬 환경에서 먼저 개발한다.Terraform 설치Terraform은 Go 언어로 작성된 오픈소스 프로그램이기에, 실행 방법이 여러 가지 존재한다.1. 미리 빌드된 바이너리 다운로드가장 일반적인 방식이다. 다음 공식 릴..
Kubernetes - 스토리지 볼륨 스냅샷
·
Container & DevOps
스냅샷이 필요한 이유쿠버네티스에서 애플리케이션은 대부분 PVC(PersistentVolumeClaim) 를 통해 스토리지를 사용한다.하지만 단순히 PVC를 사용한다고 해서 자동으로 백업/복구 기능이 제공되는 것은 아니다.운영 환경에서는 다음이 반드시 필요하다.데이터 변경 전 시점 저장장애 발생 시 롤백마이그레이션 대비 백업테스트용 복제 데이터 생성이때 사용하는 것이 볼륨 스냅샷(Volume Snapshot) 이다.CSI란?CSI(Container Storage Interface)는 쿠버네티스와 외부 스토리지 시스템을 연결하는 표준 인터페이스이다.CSI를 사용하면 다음과 같은 장점이 존재한다.쿠버네티스 코어를 수정하지 않아도 된다.스토리지 기능을 플러그인 방식으로 확장할 수 있다.프로비저닝, 확장, 스냅샷..
Kubernetes - Local Host Storage Class의 장점 및 제약 사항
·
OS & Network
Local Host Storage ? OpenEBS hostpath는 말 그대로 쿠버네티스 노드(호스트) 안의 특정 디렉터리/디스크 경로를 PV로 쓰는 방식이다.즉 PV가 NFS나 Ceph 같은 네트워크 스토리지가 아니라, 해당 노드의 로컬 디스크를 바로 사용하게 된다그래서 PV/PVC를 붙인 파드 입장에서는 /DATA 같은 마운트 경로로 보이지만, 실제 데이터는 그 파드가 붙어 있는 노드의 로컬 디스크에 저장된다.Local Host Storage의 장점네트워크 왕복 존재 xNFS/Ceph/EBS 같은 스토리지는 보통 I/O가 네트워크를 탄다.반면 hostpath는 로컬 디스크를 바로 때리니까 네트워크 지연(latency)과 병목이 거의 없다는 방향으로 간다.분산 파일 시스템 오버헤드 xCeph 같은 분..
IaC와 Terraform
·
IaC
IaC?IaC(Infrastructure as Code)는 인프라를 코드로 정의하고 관리하는 방식이다.서버, 네트워크, 스토리지 같은 인프라 자원을 사람이 직접 UI나 콘솔에서 설정하는 것이 아니라, 컴퓨터가 읽을 수 있는 코드 파일로 정의하고 실행한다는 개념이다.핵심 개념은 다음과 같다.인프라는 코드로 표현된다.코드는 인프라의 상태를 설명한다.수동 작업이 아닌 자동 실행으로 인프라를 관리한다.동일한 환경을 반복적으로 재현할 수 있다.즉, IaC는 인프라 운영을 소프트웨어 개발 방식으로 끌어오는 개념이다.Terraform의 특징인프라는 “한 번 만들고 끝”이 아니라 계속 바뀌는 대상이다. 서버 추가, 네트워크 변경, 권한 정책 수정, 모니터링 도구 설정 같은 작업이 반복되는데, 이걸 사람 손으로 매번 하..
Kubernetes - Helm을 이용한 MariaDB StatefulSet 구성
·
Container & DevOps
Helm Chart와 StorageClass, PVCHelm Chart는 쿠버네티스 리소스를 한 번에 설치하기 위한 템플릿 묶음이다.MySQL Chart 안에는 보통 StatefulSet과 PVC 템플릿이 같이 들어있다.이때 values.yaml에 persistence.storageClass만 지정해두면, 설치 과정에서 다음 흐름이 자동으로 일어나Helm이 템플릿에 값을 주입한다StatefulSet이 생성된다StatefulSet의 volumeClaimTemplates가 동작한다PVC가 자동 생성된다PVC가 StorageClass를 보고 PV를 동적 프로비저닝한다PV가 실제 스토리지를 준비한다Pod가 그 PV를 마운트하고 MySQL 데이터 디렉터리를 거기에 쓴다즉, Helm은 직접 PV를 만드는 게 아니라..