Pulumi Reference
Pulumi 인프라 코드(IaC) 레퍼런스
Pulumi Reference 소개
Pulumi 레퍼런스는 Pulumi 인프라 코드(IaC)를 위한 검색 가능한 치트 시트입니다. pulumi new를 통한 프로젝트 생성부터 pulumi up, preview, destroy를 통한 배포까지 전체 워크플로를 다루며, 다중 환경 분리를 위한 스택 관리, S3/EC2 등 AWS 리소스 생성, 재사용 가능한 인프라 모듈을 위한 ComponentResource, 비동기 값 처리를 위한 Output/apply 패턴, 암호화된 설정을 통한 시크릿 관리를 포함합니다.
DevOps 엔지니어, 클라우드 아키텍트, SRE 팀, 플랫폼 엔지니어를 위해 설계되었으며, Pulumi 리소스의 실제 TypeScript 코드 예제, 크로스 스택 데이터 공유를 위한 Stack Reference, 커스텀 리소스 라이프사이클 관리를 위한 Dynamic Provider, 멀티 리전 배포를 위한 프로바이더 설정을 다룹니다.
모든 항목에 복사 가능한 CLI 명령어 또는 TypeScript 코드 스니펫과 실용적인 사용 패턴이 포함되어 있습니다. AWS, Azure, GCP, Kubernetes 인프라를 Pulumi로 관리하든, 일상적인 IaC 작업에 필요한 명령어와 코드 패턴을 제공합니다.
주요 기능
- Pulumi CLI 완전 참조 — pulumi new, preview, up, destroy와 모든 필수 플래그 및 옵션
- dev/staging/production 환경 분리를 위한 스택 관리 명령어 및 상태 내보내기/가져오기
- AWS 리소스 생성 예제 — S3 버킷, EC2 인스턴스와 태그, VPC, 보안 그룹 설정
- ComponentResource 패턴 — 부모-자식 관계를 활용한 재사용 가능한 인프라 모듈 구축
- Output<T>와 apply() 패턴 — 비동기 리소스 값 처리 및 문자열 보간 방법
- 시크릿 관리 — pulumi config set --secret, pulumi.secret(), KMS/Vault 프로바이더 연동
- Stack Reference — 네트워크, 컴퓨트, 애플리케이션 스택 간 출력값 공유
- 프로바이더 설정 — 멀티 리전 배포를 위한 커스텀 AWS/Azure/GCP 프로바이더 인스턴스
자주 묻는 질문
Pulumi란 무엇이고 Terraform과 어떻게 다른가요?
Pulumi는 도메인 특화 언어 대신 TypeScript, Python, Go, C# 같은 범용 프로그래밍 언어로 클라우드 리소스를 정의하는 인프라 코드 플랫폼입니다. Terraform의 HCL과 달리 반복문, 조건문, 함수, 클래스가 포함된 실제 코드를 사용하므로 재사용 가능한 추상화를 만들고 기존 개발 워크플로와 통합하기 쉽습니다.
이 레퍼런스는 어떤 Pulumi 명령어를 다루나요?
핵심 CLI 명령어를 다룹니다: 프로젝트 스캐폴딩용 pulumi new, 변경 사항 미리보기용 pulumi preview, 배포용 pulumi up, 리소스 삭제용 pulumi destroy, 그리고 pulumi stack init/select/output/export/import 등 스택 관리 명령어를 포함합니다.
Pulumi는 시크릿과 민감한 설정을 어떻게 처리하나요?
Pulumi는 pulumi config set --secret으로 시크릿을 암호화하여 스택 설정 파일에 저장합니다. 코드에서 config.requireSecret()은 로그나 상태 출력에 표시되지 않는 Output<string>을 반환합니다. AWS KMS, Azure Key Vault, GCP KMS, HashiCorp Vault 등 플러그인 가능한 시크릿 프로바이더를 지원합니다.
Pulumi의 ComponentResource란 무엇인가요?
ComponentResource는 여러 관련 리소스를 하나의 재사용 가능한 컴포넌트로 그룹화하는 클래스입니다. 예를 들어 VpcComponent는 VPC, 서브넷, 라우트 테이블, 보안 그룹을 하나의 단위로 생성합니다. 자식 리소스는 parent 옵션으로 연결되어 Pulumi 상태에서 논리적 트리를 형성합니다.
Pulumi의 Output과 apply()는 어떻게 작동하나요?
Output<T>는 배포 후에만 알 수 있는 값(IP 주소, ARN 등)을 나타냅니다. apply() 메서드는 Promise.then()과 유사하게 Output 값을 변환합니다. pulumi.all()로 여러 Output을 결합하고, pulumi.interpolate로 문자열 템플릿을 구성합니다. Output은 리소스 의존성을 자동으로 추적하고 올바른 순서로 해결합니다.
Pulumi에서 다중 환경은 어떻게 관리하나요?
Pulumi는 스택으로 환경을 분리합니다. pulumi stack init dev/staging/production으로 스택을 생성하고, 각 스택은 고유한 설정 파일(Pulumi.dev.yaml)을 가집니다. Stack Reference를 통해 한 스택이 다른 스택의 출력을 읽을 수 있어, 공유 네트워크 스택을 여러 애플리케이션 스택에서 참조하는 패턴이 가능합니다.
Pulumi에서 사용할 수 있는 리소스 옵션은 무엇인가요?
주요 옵션으로 protect(실수 삭제 방지), dependsOn(명시적 의존성 순서), parent(ComponentResource 아래 논리적 그룹화), provider(멀티 리전용 커스텀 프로바이더), ignoreChanges(특정 속성 드리프트 감지 건너뛰기) 등이 있습니다. 이 옵션들은 리소스 생성자의 세 번째 인수로 전달됩니다.
이 Pulumi 레퍼런스는 무료인가요?
네, 이 Pulumi 레퍼런스는 사용 제한, 계정 등록, 소프트웨어 설치 없이 완전히 무료입니다. 모든 콘텐츠는 브라우저에서 클라이언트 사이드로 렌더링됩니다. Pulumi 인프라 코드를 사용하는 DevOps 엔지니어를 위한 실용적인 일상 도우미입니다.