Devops/CI, CD

[DEVOPS] 빌드 자동화 환경 구축 일지 I

chronosa 2020. 4. 26. 01:36

목표

1. Terraform을 Jenkins Pipeline을 통해 실행한다.

2. 여러 Account의 AWS 인증정보를 Vault를 통해 안전하게 관리한다.

3. 구축한 환경의 재현이 간단해야 한다. (Docker)

4. 추후 확장이 용이해야 한다.

 

구성요소

1. Docker 

  - Vault, Consul, Jenkins를 기동시키는 역할

  - Docker Compose를 통해 구성

2. Hashicorp Vault & safe

  - Safe를 통해 좀 더 쉽게 사용할 수 있다.

  - Vault KV를 통해 Credential 정보를 저장해두고, safe를 통해 Pipeline 중간에 get 해오는 방식으로 활용

  - Storage Backend : Consul

  - Secret Backend : AWS

3. Hashicorp Consul

  - Vault를 위한 Storage Backend, 그냥 File Backend를 쓸까 고민했는데, 추후 확장성을 고려하여 Consul을 구성하였다.

4. Jenkins (Blue Ocean)

  - Dockerhub에 있는 Jenkins (또는 Jenkins Blue Ocean) Image를 사용하려고 하였으나, Ubuntu가 없고 Debian 또는

    Centos 계열의 OS만 지원하는 것으로 보여 Ubuntu 18.04 를 Base로 하여 이미지를 자체 빌드하였다.

    Jenkins Version도 공식 Image보다 높은 LTS 버전으로 배포하였다.

  - Concourse와 고민하였으나, Jenkins가 자료가 많아서 배우기 쉽기때문에 Jenkins를 선택.

    특히, Blue Ocean이라는 Plugin이 Continuous delivery pipelines을 잘 지원해주는 것으로 보여

    Blue Ocean을 적극 이용하기로 하였다.

    (Jenkinsfile을 GUI에서 작성하도록 지원해주는 Plugin으로 보이는데, 그냥 Jenkins를 쓰는 것보다 UI가 미려하다.)

5. Terraform

  - git(AWS CodeCommit)을 통해 형상관리

  - s3를 backend로 사용하여 state를 보관

 

구축방법

다음 글에서 작성..

 

참조

https://blog.2dal.com/2017/10/28/aws-vpc-with-terraform-modules/

http://egloos.zum.com/mcchae/v/11318672

https://github.com/segmentio/terraform-docs

https://github.com/mcchae/docker_consul_vault

https://www.vaultproject.io/docs/commands/kv/put

https://www.vaultproject.io/docs/commands/secrets/enable

https://www.vaultproject.io/docs/secrets/kv/kv-v2

https://github.com/starkandwayne/safe

https://askubuntu.com/questions/98782/how-to-run-an-alias-in-a-shell-script

https://blog.outsider.ne.kr/1266

https://blog.outsider.ne.kr/1267

https://www.vaultproject.io/docs/concepts/auth

https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line

https://bluese05.tistory.com/77

https://github.com/marco-lancini/docker_vault

https://www.marcolancini.it/2017/blog-vault/

https://blog.outsider.ne.kr/1342

https://brunch.co.kr/@alden/51

 

'Devops > CI, CD' 카테고리의 다른 글

AWS Service를 활용한 AMI CI/CD 환경 구성 (Packer)  (0) 2021.06.30
[용어정리] CI/CD, BDD  (0) 2020.04.28