이 글은 총 4개의 파트로 나뉘며 각 파트별 다루는 내용은 위와 같습니다.
먼저, 앞서 생성한 git 저장소 sample-pipeline
으로 가서 커밋한 해시를 tag로 생성하고 push 하자.
git tag 생성 및 push
git tag dev-0.1
git push origin -u dev-0.1
CodeCommit에 tag 생성 확인
CodePipeline 트리거 확인
CI에 대한 CodeBuild 로그 확인
ECR 확인
Manual Approval 승인
CD에 대한 CodeBuild 로그 확인
EKS 확인
$ kubectl get all -n sample-pipeline
NAME READY STATUS RESTARTS AGE
pod/sample-pipeline-5cf975b666-fcwfh 1/1 Running 5 (8m37s ago) 10m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/sample-pipeline ClusterIP 172.20.141.190 <none> 80/TCP 32m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/sample-pipeline 1/1 1 1 32m
NAME DESIRED CURRENT READY AGE
replicaset.apps/sample-pipeline-5cf975b666 1 1 1 10m
replicaset.apps/sample-pipeline-75644489fc 0 0 0 32m
replicaset.apps/sample-pipeline-795dfd6ccf 0 0 0 24m
replicaset.apps/sample-pipeline-8c4d69cdc 0 0 0 16m
포트포워딩하여 배포한 앱에 접근해보자.
### 포트포워딩
$ kubectl port-forward -n sample-pipeline service/sample-pipeline 8080:80
### api 호출 테스트
$ curl -v localhost:8080
* Trying 127.0.0.1:8080...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/8.1.2
> Accept: */*
>
< HTTP/1.1 200 OK
< date: Tue, 03 Oct 2023 12:18:18 GMT
< server: uvicorn
< content-length: 61
< content-type: application/json
<
* Connection #0 to host localhost left intact
{"message":"CI/CD Pipeline using Terraform & AWS CodeSeries"}%
위와 같이 정상적으로 소스코드로부터 이미지를 빌드하고 EKS에 배포까지 수행함.
이렇게 해서 Terraform과 aws 리소스들을 활용해 CI/CD (delivery)를 구현해봤다.