CircleCI를 사용한 Terraform CI/CD 스테이징 파이프라인

안녕,

CD가 연속 배포를 나타내는 Terraform CI/CD 스테이징 파이프라인을 사용하면 Terraform을 사용하여 인프라를 안전하고 지속적으로 개발할 수 있습니다. 일반적으로 메인 브랜치의 커밋은 파이프라인을 시작하고 원하는 변경 사항은 먼저 DEV 단계에서 실행됩니다. 수동 승인을 통해 변경 사항을 QA 단계로 롤아웃한 다음 파이프라인을 통해 PROD 단계로 롤아웃할 수 있습니다.

여기에서 AWS를 클라우드 공급자로 사용하는 그러한 Terraform CI/CD 준비 파이프라인이 어떤 모습일 수 있는지 제시하고 싶습니다.

CI/CD 스테이징 파이프라인이 필요한 이유는 무엇입니까?



고객과 함께 Hasura, RDS, ECS 및 기타 여러 AWS 서비스를 사용하여 복잡한 AWS 설정을 계획하고 개발합니다. 무엇보다도 이 설정은 Salesforce의 기존 프로덕션 환경과도 상호 작용해야 합니다. 따라서 DEV 및 QA 환경에서 새로운 기능을 테스트하는 것이 가장 중요합니다.

이러한 환경 DEV 및 QA는 가능한 한 PROD 환경과 유사하게 작동해야 합니다. 또한 가능한 한 적은 수동 단계로 PROD 환경에서 변경 사항을 신속하게 실행할 수 있어야 합니다. 정확히 이러한 요구 사항에 대해 CI/CD 스테이징 파이프라인이 적합합니다.

다중 계정 설정



CI/CD 준비 파이프라인을 생성하려면 DEV, QA 또는 PROD와 같은 각 단계에 별도의 AWS 계정을 사용하는 것이 가장 좋습니다. 따라서 파이프라인 설정은 Terraform으로 이러한 계정을 부트스트랩하거나 초기화한 다음 변경 사항을 롤아웃할 수 있어야 합니다.

다중 계정 설정의 경우 기사Terraform AWS Multi-Account Setup를 모델로 사용했으며 여기서 accounts/dev/backend.confaccounts/dev/terraform.tfvars과 같은 구성 파일을 사용하여 각 단계를 구성했습니다. 이제 매우 멋진 점은 이것이 모든 스테이징 환경에 대해 동일한main.tf을 사용할 수 있다는 것입니다.

너무 자주 고객이 Terraform을 사용하여 각 스테이징 환경에 대해 별도의 TF 파일을 만들고 리소스를 앞뒤로 복사하는 것을 봅니다. 이를 중지해야 하며 여기에 설명된 접근 방식이 도움이 될 수 있습니다!

CircleCI 스테이징 파이프라인



CircleCI는 DevOps 기능을 위한 지속적 통합 및 지속적 제공 플랫폼입니다. Travis 또는 GitHub Actions와 같은 다른 DevOps 플랫폼과 마찬가지로 파이프라인 yaml 정의는 config.yml이라는 .circleci 폴더에 생성됩니다. 내가 매우 좋아하는 점은 CircleCI가 수동 승인을 지원하고 다음과 쉽게 통합할 수 있다는 것입니다.

workflows:
  version: 2
  plan_approve_apply:
    jobs:
      - dev-plan-apply
      - dev-hold-apply:
          type: approval
          requires:
            - dev-plan-apply
     ...


이렇게 하면 계획된 인프라 변경을 먼저 검토한 다음 구현할 수 있습니다. 전체 코드here를 볼 수 있습니다.

시야



다음으로 TypeScript로 인프라를 정의할 수 있도록 CDKTF을 소개하겠습니다. AWS CDK의 경우와 유사하게 Terraform을 사용하여 개발 속도를 높일 것으로 기대합니다. 유형 지원을 통해 누락된 Terraform 속성을 조기에 식별할 수 있습니다. 또한 속성에 대한 문서는 매우 편리하며 Terraform 문서를 거의 볼 필요가 없습니다.

그 후 Aurora, ECS, VPC 등과 같은 AWS 리소스가 Terraform과 통합되는 방식을 보게 되어 매우 기쁩니다. 이 모든 것이 AWS에서 멋진 것을 구축할 수 있는 도구 세트를 확장합니다.

결론



CI/CD 스테이징 파이프라인은 AWS에서 안정적인 인프라를 구축하기 위한 중요한 도구입니다. 이 기사에서는 AWS에서 Terraform을 사용하여 수행하는 방법을 설명했습니다. 저는 아직 Terraform 초보자이기 때문에 작은 실수를 저질렀을 수 있습니다. 개선을 위한 제안이 있거나 저와 함께 간단하고 멋진 프로젝트에 대해 논의하고 싶다면 언제든지 저에게 편지를 보내주세요 :)!

영어로 번역하는 데 도움을 주고 많은 시간을 절약해 준 DeepL translater (free version)에게 감사합니다 :).

저는 오픈 소스 프로젝트 작업을 좋아합니다. 이미 https://github.com/mmuller88에서 사용할 수 있는 많은 것들이 있습니다. 내 작업과 내 블로그 게시물이 마음에 들면 다음에서 나를 지원하는 것을 고려하십시오.



또는



그리고 내 사이트를 방문하는 것을 잊지 마세요



좋은 웹페이지 즐겨찾기