본문 바로가기
Final Project

Devops Day 73 (6.19) Final Project_Day 7

by Jackykim 2023. 6. 21.

Github Action code 작성 (ECR)


1. Back-end 코드 github에 업로드시 AWS ECR로 자동화하는 작업
1.1 코드 작성전 코드 구성부터 논의.
- 논의 내용 중 하나는 AWS access key 및 aws secret access key 어떻게 설정할 것인가 논의 했습니다. 하나의 access key로 모든 인원이 사용 할 것인지 (aws에서 보안 문제로 비추 합니다) 아니면 각 access key 를 생성하여 각 담당자에게 나눠 사용 방법입니다.
- 다른 논의 내용은 하나의 Yaml 로 두개의 Action을 진행 하는 방법 (어린이 집 관리 시스템 Back end Code 업로드시 그 코드만 작동화)
- 단 이 방식으로 진행 할 경우 주의 할 점들이 몇가지가 있습니다.
1. 하나의 Back-end code push 할 경우 두개 Action이 작동하면 안됩니다.
2. Back-end code Push 할 경우 정확한 장소에 build 및 이미지 push 하는지 (다른 레포지토리에 push 되면 안됩니다)

1.2 Visual Studio Code에서 GitHub Workflows YAML 파일을 작성하여 로컬에서 테스트했습니다.

처음 작업을 시작할 때 성아님 컴퓨터에서 코드 작성 및 테스트를 시도했으나 중간 중간에 오류가 발생했습니다.

1.Package.json에 불필요한 dependencies가 많아 시스템 오류가 발생하여 해당 fastify를 삭제한 후 다시 fastify를 생성하여 문제를 해결했습니다.
2. 도커 빌드 중에 무한 반복 오류가 발생했습니다. 오류 #8: "Build, tag, and push image to AWS ECR" 단계에서 Workflow가 실패하였으며 빌드는 성공했지만 AWS ECR에 Push하는 과정에서 지속적으로 재시도로 실패하였습니다. AWS 계정에 IAM 정책 및 권한을 추가하여도 문제가 계속되었습니다.
3. 코드를 수정하여 리포지토리에 푸시할 때 "no basic auth credentials" 오류가 발생했습니다. 코드와 IAM 정책 및 권한을 모두 추가하였지만 문제가 여전히 발생하여 AWS IAM 사용자가 아닌 메인 계정 컴퓨터에서 설치를 진행하였을 때 정상적으로 빌드와 푸시가 이루어졌습니다.

 

Github action 통해 AWS ECR 테스트 레포지토리에 업로드하는 것은 확인했습니다.

Github Action code 작성 (Terraform)
1. 모든 아키텍처를 Terraform으로 작성할 예정이므로, Terraform 코드가 작동하여 terraform apply를 실행할 수 있도록 Github Actions 작업을 진행했습니다.
- Github Actions를 사용하여 테스트를 위한 S3 생성 (main.tf) 및 Terraform 워크플로우 YAML 파일을 작성하여 테스트 레포지토리에서 진행했습니다. 진행하면서 다양한 이슈들을 경험했습니다. 해당 경험들은 아래에서 확인해주세요.

이슈 1. Terraform Cloud 토큰 발급 및 적용: 처음에 Terraform Cloud에 접근하여 토큰을 발급받아야 할 링크를 찾기 어려웠으며, 만료된 토큰을 사용하여 권한 이슈가 발생했습니다. 새로운 토큰을 발급받아 환경 변수에 추가하여 문제를 해결했습니다.

이슈 2. Terraform 포맷 이슈: run terraform fmt --check 및 terraform fmt -write=true 코드 3 문제가 지속적으로 발생하여 포맷 관련 코드를 삭제하여 문제를 해결했습니다.

이슈 3. Terraform plan -> “No valid credentials” 환경 변수 적용하지 않아 문제 생겼습니다.

이슈 4. Terraform Apply : 이미 사용 중인 S3 버킷 이름이 중복되어 오류가 발생했습니다. S3 버킷 이름을 수정한 후 푸시하면 문제없이 작동합니다.

이슈 5. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now + Planning failed. Terraform encountered an error while generating this plan. 코드에 -out명령어가 없어 문제 생겨 run: terraform plan -out=planfile + run: terraform apply "planfile" 코드에 추가하여 문제 해결했습니다.

 

Terraform Main.tf 파일

 

Terraform workflow

 

Terraform 자동화 결과