아직 모르는게 많지만, 아는범위내에서 정리해보고자 한다.
먼저 CI/CD란... DevOps에서는 매우 중요한 작업중에 하나인데 그 의미를 간단하게 살펴보자면
CI (Continuous Integration)
직역하자면, "지속적인 통합"이라는 뜻. 하나의 프로젝트에서는 여러명의 개발자가 붙게되는데, 작업을 하면서 빌드/테스트/병합까지 수동으로 하려면 매우 번거로운 작업이된다. 따라서 이렇게 번거로운 작업을 "자동화"를 해주는것이 CI이다.
(*이러한 자동화 작업중에, 원천 소스코드의 충돌등을 방어 또한 할수있다)
CD (Continuous Delivery & Continuous Deployment)
다음으로 CD라는건, 위에서 CI테스트를 다 통과를하면, 실제로 서비스까지 프로덕트를 배포해주는것까지를 자동화해주는걸 의미한다.
아래와같이 gitlab에서 CI/CD 기능을 활용할수있는데
- build는 CI 가 되는것이고
- deploy는 CD가 되는것이다
gitlab에서는 CI/CD를 사용하기 위해서는 CI/CD쪽의 Editor를 통해서 만들수가있다
프로젝트를 처음만들때 terraform관련 프로젝트를 설정하면 자동으로 CI/CD관련 파일이 생성된다고는 하는데 정확한건 해봐야할것같다...
사실 이번 포스팅은 이미 terraform을 위한 gitlab CI/CD는 만들어진 상태를 가정하고 쓰는 글이긴하다
추가로 AWS Terraform을 사용할때, ACCESS_KEY, SECRET_KEY를 평문으로 기입하기 싫다면, gitlab 레포안에 Setting - CI/CD로 들어가서 Variable안에 정보값을 넣어주면된다
local에서 gitlab에 commit을 통하여 CI/CD를 테스트하는것을 꺼려한다면 아래와같은 명령어로 간단하게 실행해볼수있다. gitlab CI/CD에는 기록이 남지않는다.
또한, 해당 명령어를 실행하기 위해선 최초로 CI/CD를 한번 실행해줘야한다. 그리고 아래이미지와 같은 메뉴(Infrastructure-Terraform)안에 들어가게되면 states가 존재해야한다.
명령어중 내가 기입해야하는 정보를 정리하자면
- PROJECT_NUMBER
- gitlab 프로젝트 레포를 열면 밑에 "Project ID"가 나오는데 이값을 넣어주면된다
- YOUR_STATE
- 위에서 설명한 Infrastructure-Terraform안에있는 State이름을 넣어주면된다. 정확한지 모르겠지만 아마 branch명을 따라가는것같다
- PASSWORD
- gitlab 레포안에서 Setting - Access Tokens에서 생성할수있다
terraform init \
-backend-config="address=https://gitlab.com/api/v4/projects/<PROJECT_NUMBER>/terraform/state/<YOUR_STATE>” \
-backend-config="lock_address=https://gitlab.com/api/v4/projects/<PROJECT_NUMBER>/terraform/state/<YOUR_STATE>/lock" \
-backend-config="unlock_address=https://gitlab.com/api/v4/projects/<PROJECT_NUMBER>/terraform/state/<YOUR_STATE>/lock" \
-backend-config="username=jaeyung1001” \
-backend-config="password=<PASSWORD>" \
-backend-config="lock_method=POST" \
-backend-config="unlock_method=DELETE" \
-backend-config="retry_wait_min=5"
'Data > Data Engineering' 카테고리의 다른 글
[k8s] "vingress.elbv2.k8s.aws" ... context deadline exceeded 오류 해결 (1) | 2022.05.23 |
---|---|
[Terraform] EKS iam terraform 배포시 "The configmap "aws-auth" does not exist" 에러 해결 방법 (0) | 2022.05.13 |
[Terraform] terraform 이전버전 설치 (+맥북 M1 이슈해결 Tarball download failed) (0) | 2022.04.26 |
[AWS] EMR (Elastics Map Reduce)란? (WIP) (0) | 2022.04.25 |
[AWS] EKS(Elastic Kubernetes Service)란? (WIP) (0) | 2022.04.25 |