이전에 AWS Meet-up 에 참가하게 되었을 때 그곳에서 처음 Infracost 에 대해서 알게 되었다.
Infracost 는 테라폼으로 배포되는 리소스의 비용을 대략적으로 파악할 수 있도록 해주는 오픈소스 도구이다.
굉장히 유용하게 사용할 수 있을 것이라 생각했는데, 실제로 이미 많은 곳에서 이 Infracost 를 활용하고 있었다.
그래서 이번 기회에 Infracost 에 대해서 테스트를 해보고 기록을 남겨보고자 한다.
Infracost를 통해 다음과 같은 테스트를 진행해보고자 한다.
1) Local 환경에서 직접 Infracost 를 실행해보기 !
2) Terraform 협업 툴인 Atlantis 와 융합하여 Infracost 를 PR 에 적용하기 !
3) AWS Code Series 에 Infracost 적용해보기 !
그럼 로컬 환경에서 Infracost 를 실행하기 전 Infracost 에 대해서 알아보도록 하자
1. Infracost 란??
Infracost 는 Terraform 에 대한 클라우드 인프라 비용 추정치를 보여주는 오픈소스 도구
Infracost 홈페이지
Infracost
Team lead visibility across changes When using Infracost in CI/CD, team leads, managers & FinOps can see pull requests that increase or decrease costs the most, by how much, and by whom. This helps you better understand when & where cost changes were intro
www.infracost.io
Terraform 으로 클라우드를 운영하거나 구축할 때 쉽게 간과할 수 있는 부분이 바로 비용 최적화이다.
Infracost 를 사용하면 Terraform 리소스를 배포하기 전에 로컬 컴퓨터 혹은 PR 에서 클라우드 리소스에 대한 비용을 파악할 수 있다.
오픈소스 도구이니 테라폼으로 운영을 하고 있는 조직에서는 비용 최적화를 위해 도입을 적극 고려하는 것이 좋을 듯 싶다.
Infracost는 로컬에서 직접 명령어를 쳐서 실행시킬 수 있지만,
Infracost 가 현재 많이 쓰이고 있는 이유 중 하나는 다양한 CI 파이프라인에 접목시킬 수 있다는 점이 아닐까 싶다.
Infracost 가 지원해주는 대표적인 CI 파이프라인
- GitHub
- GitLab
- Atlantis
- AWS Code Series
- Azure Pipeline
- Jenkins 등
이외에도 더 많은 CI 파이프라인과 접목시킬 수 있으니 필요하다면 한 번 찾아보자
Add to CI/CD | Infracost
Use one of our many integrations so DevOps, SRE and engineers see a cost estimate in pull requests before making changes. This provides your team with a safety net as people can understand cloud costs upfront, and discuss them as part of your workflow.
www.infracost.io
1.1. Infracost 작동 방식
Infracost Workflow 를 간단하게 알아보자
- Infracost 는 하루에 한 번 Cloud Provider 의 Billing API 를 호출하여 최신 리소스 비용을 가져온다.
해당 작업은 비용이 들지 않음
- 업데이트된 리소스 비용을 보관하고 있다가,
사용자가 Infracost 를 호출하는 순간 Terraform 코드를 스캔하고 배포될 리소스의 비용을 측정한다.
실제로 Infracost 를 실행시켜 확인해보자 !!
2. Local PC 에서 Infracost 실행
2.1. Infracost 설치
Infracost 는 homebrew 를 지원하기 때문에 설치는 매우 간단하다.
혹시 로컬 환경이 Mac 이 아니라면 아래의 공식 문서에서 설치방법을 찾아 진행해보자
리눅스 서버를 실행시켜 테스트하는 것도 좋은 방법일 것이다.
Get started | Infracost
Get started with Infracost in your Terraform workflow, integrate it into your CI pipeline and view cost estimates for your AWS/Azure/Google infrastructure.
www.infracost.io
2.2. Infracost 로그인
앞서 설명했던 하루마다 업데이트되는 리소스 비용을 사용할 수 있는 Infracost API 를 사용하려면 Infracost 아이디가 필요하다.
아래 홈페이지를 통해 Infracost ID 를 생성하고 로그인하자.
Infracost
dashboard.infracost.io
Infracost 홈페이지에 로그인을 했다면 아래와 같은 대시보드를 볼 수 있을 것이다.
Infracost Cloud 를 사용하라는 알림창인데 가볍게 무시하고 중앙 상단 쪽 'Org Settings' 를 클릭하자
참고로 Infracost Cloud 를 사용하면,
- PR에서 리소스 변화
- Project / Repo 별 비용 분석
- 유저별 비용 분석
등이 가능한데 아래 그림처럼 UI가 이쁘게 나오긴 한다.
하지만, 이번 게시글에서 다룰 내용은 아닐뿐더러 Free Trial 기간이 있는 걸 보면 유료 서비스인 듯 싶다.
그리고 해당 기능 중 몇가지는 다른 CI 파이프라인과 융합하면 구현할 수 있는 기능이기도 하니, 그냥 넘어가자
2.3. Infracost API 인증
'Org Settings' 버튼을 눌러 들어왔다면 'Copy' 를 눌러 API Key 를 복사하자.
유저 마다 별개의 API Key 를 가지고 있다.
앞에서 봤던 Infracost Cloud 가 API Key 를 가지고 유저별 비용 분석을 하는 듯 싶다.
자동 인증이 안되었을 경우에 해당 API Key 값이 필요하다.
- 이후 로컬에서 아래의 명령어를 사용하여 인증을 진행하자
아래와 같은 화면이 떴다면 인증에 성공한 것이다.
인증 실패 시, 수동 인증 방법
Infracost 는 아래의 경로에 credential YAML 파일을 생성하여 인증을 진행한다.
수동 인증을 위해 해당 경로에 credentials.yml 을 생성하고 다음과 같은 내용을 넣어주자
인증까지 성공했다면 Infracost 를 사용할 모든 준비가 완료되었다 !!
3. Infracost 실행
3.1. Terraform 파일 준비
Infracost 를 실행할 테라폼 파일을 준비하자
본인이 가지고 있는 테라폼 파일을 사용하거나, 없다면 아래 main.tf 파일을 생성하자
3.2. Infracost 실행
테라폼 파일까지 모든 준비가 되었다면,
테라폼 파일이 있는 위치에서 아래의 명령어를 입력하여 Infracost 를 실행해보자
- Infracost 를 실행하면 아래 그림처럼 비용을 분석해준다 !
3.3. Infracost 를 실행하는 다양한 방법
1) 특정 경로에 있는 테라폼 코드를 스캔하여 비용 분석
2) 기존 코드와 변경 코드의 비용 비교
아래처럼 어떤 리소스가 어떻게 변경되었는 지 확인 가능
이번에는 Infracost 의 작동 방식을 이해하기 위해 로컬 환경에서 Infracost 를 실행하는 법을 알아보았다.
이제 본격적으로 팀단위의 협업 환경에서 Infracost 를 적용시키는 법을 알아보자 !
다음 게시글에서는 Terraform PR 협업 툴인 Atlantis 와 Infracost 를 함께 사용하는 법에 대해서 포스팅해보겠다.
글에서 틀린 정보나 기술적인 피드백은 언제나 환영하고 있습니다! :)