Stacks 개요
Stacks 개요
인프라가 커질수록 테라폼 구성을 관리하는 것이 점점 복잡해져요. Stacks는 HCP Terraform의 강력한 구성 레이어로, 인프라 모듈을 관리하고 그 인프라를 반복적으로 배포하는 일을 단순화해줘요.
출처: 문서
본문
직접 해보기: HCP Terraform으로 Stack 배포하기 튜토리얼로 Stacks를 빠르게 시작해 보세요.
Stacks는 테라폼의 전통적인 루트 모듈 구조를 여러분의 테라폼 모듈 위에 구축된 새로운 컴포넌트 기반 아키텍처로 대체해요. Stacks를 사용하면 인프라 생명주기를 대규모로 프로비저닝하고 조정할 수 있어서, IaC(Infrastructure as Code)를 확장한 체계적이고 재사용 가능한 접근 방식을 제공해요.
배경 (Background)
Stacks는 인프라를 구성하는 대안적인 방식이며, HCP Terraform 워크스페이스와 근본적으로 달라요. Stacks는 같은 프로젝트 안에서 워크스페이스와 나란히 존재할 수 있어요. Stacks와 워크스페이스의 차이점과 사용 사례에 대해 더 알아보세요.
테라폼 Stacks는 테라폼 구성을 컴포넌트로 나누고, 그 컴포넌트를 여러 환경에 걸쳐 배포·관리할 수 있게 해줘요. 각 배포의 생명주기를 개별적으로 관리하고, 배포 전체에 구성 변경을 롤아웃하며, Stack을 HCP Terraform의 단일 단위로 관리할 수 있어요. Stack을 작성할 때는 인프라 생명주기의 전체 동작을 버전 관리되는 구성 파일 안에 코드화해요.
Stack의 각 배포(deployment)는 함께 동작하는 컴포넌트 그룹을 나타내요. 예를 들어 개발과 프로덕션 환경이 그렇죠. 각 Stack의 구성은 모든 배포에서 동일하며, 각 배포를 입력 변수로 사용자 지정할 수 있어요. 그런 다음 HCP Terraform을 사용해 각 배포에 변경 사항을 롤아웃하고 환경 전반의 변경 사항을 추적할 수 있어요.
Stacks 베타에 참여했다면 GA 릴리스와 호환되도록 구성을 갱신해야 해요. 자세한 내용은 일반 공급(GA)을 위한 업데이트를 참고하세요.
워크플로우 (Workflow)
Stack 만들기는 tfcomponent.hcl로 끝나는 컴포넌트 구성 파일을 만들고 component 블록들로 채우는 것으로 시작해요. 각 component 블록은 소스로 테라폼 모듈을 포함하며, inputs 인자로 각 component를 구성할 수 있어요. Stack의 모든 컴포넌트는 생명주기를 공유하며, HCP Terraform으로 함께 반복 배포해요.
Stack의 components를 구성한 뒤에는 별도의 배포 구성 파일을 만들어 인프라를 어떻게 반복할지 정의해요. Stack의 각 배포는 함께 동작하는 인프라 그룹을 나타내요. 개발 환경, 클라우드 프로바이더 계정, 리전, 또는 인프라가 요구하는 무엇이든 deployment 블록으로 정의할 수 있어요.
Stack의 인프라를 배포할 준비가 되면 HCP Terraform에서 Stack을 만들어 배포할 수 있어요. 특정 조건을 충족하는 배포 실행을 자동으로 승인하도록 배포 그룹 오케스트레이션 규칙을 정의하면 배포 실행을 더 잘 관리할 수 있어요.
기본 워크플로우 (Primary workflow)
Stacks로 인프라를 관리하는 전체 프로세스는 다음 단계로 이뤄져요.
Stack 설계 (Design a Stack)
현재 인프라 생명주기와 각 요소가 서로 어떻게 상호작용하는지 생각해 보세요. 그런 다음 인프라를 컴포넌트로 어떻게 나눌지 결정하고, Stack이 기술하는 인프라를 어떻게 배포할지 생각해 보세요. 자세한 내용은 Stack 설계를 참고하세요.
컴포넌트 구성 작성 (Write a component configuration)
Stack을 <NAME>.tfcomponent.hcl 파일에서 구성하고 정의해요. Stack을 정의하려면 각각 개별 테라폼 모듈을 나타내는 component 블록들을 추가하고 구성해요. 자세한 내용은 구성 정의를 참고하세요.
Stacks는 전통적인 테라폼 구성과는 다른 워크플로우로 프로바이더를 선언해요. 자세한 내용은 프로바이더 선언을 참고하세요. Stacks는 프로바이더와 인증하는 방식도 고유해요. 자세한 내용은 Stack 인증을 참고하세요.
배포 정의 (Define deployments)
컴포넌트 구성 파일이 완성되면 다음 단계는 Stack을 어떻게 배포할지 정의하는 것이에요. HCP Terraform이 Stack의 인프라를 어떻게 배포해야 하는지 정의하는 <NAME>.tfdeploy.hcl 파일을 만들어요.
Stacks에서 배포는 인프라를 여러 환경, 리전, 계정, 또는 인프라가 요구하는 대로 복제할 수 있게 해줘요. 각 배포는 격리된 state 파일을 가져서, 한 배포의 변경이 다른 배포에 영향을 주지 않음을 보장해요.
자세한 내용은 배포 구성 정의를 참고하세요.
배포 그룹 (Deployment groups)
배포를 배포 그룹에 수동으로 할당하거나, 정의한 어떤 배포든 HCP Terraform이 자동으로 새 배포 그룹을 만들 수 있어요. 배포 그룹을 사용하면 그룹 내 배포에 규칙을 적용할 수 있어요. 자세한 내용은 배포 실행 조건 설정을 참고하세요.
배포 (Deploy)
Stack을 완전히 구성한 뒤에는 HCP Terraform을 사용해 Stack의 인프라를 배포해요. 자세한 내용은 Stack 만들기를 참고하세요.
가이드 (Guidance)
Stacks는 일관성과 재사용성이 중요한 복잡한 다중 환경 인프라를 관리할 때 유용해요. Stacks가 특히 잘 맞는 상황에 대한 아이디어는 Stack 사용 사례를 참고하세요.
제약과 한계 (Constraints and limitations)
Stacks에는 다음 제약이 있어요.
- 각 Stack은 현재 최대 500개의 배포를 지원하며, 큰 환경에서는 확장성을 제한할 수 있어요.
- Stack 배포 그룹은 현재 그룹당 하나의 배포만 지원해요.
- 각 Stack은 최대 100개의 컴포넌트를 지원해요.
- 각 Stack은 최대 10,000개의 리소스를 지원해요.
- Stacks는 최대 20개의 상위(업스트림) Stacks에 연결할 수 있어요. Stack 간 데이터 전달에 대해 더 알아보세요.
- Stacks는 최대 25개의 하위(다운스트림) Stacks에 값을 노출할 수 있어요. Stack 간 데이터 전달에 대해 더 알아보세요.
- Stacks는 레거시 HCP Terraform 팀 플랜 사용자에게는 제공되지 않아요. 현재 HCP Terraform 플랜으로 마이그레이션에 대해 더 알아보세요.
더 알아보기 (Learn more)
- Stack 사용 사례 — 어떤 상황에 잘 맞는지.
- Stack 설계 — Stack 설계 가이드.
- 컴포넌트 구성 정의 — 컴포넌트 구성 작성법.