[Infra] Spring + EB + Github Actions + Docker + ACM을 통한 CI/CD 자동화 및 https 적용 방법 (feat. 내도메인 한국) - 3편 (完)

Hyunjoon Choi·2023년 8월 23일
0

Infra

목록 보기
3/3
post-thumbnail

대망의 HTTPS 및 도메인 연결 작업 부분이다.

내도메인.한국 도메인 발급

도메인 부분은 내도메인.한국을 이용했는데, 빠른 시간 안에 도메인을 발급받을 수 있다.

아래 사진과 같이 원하는 도메인을 검색하면 쉽게 등록할 수 있다.

ACM 설정

이제 발급한 도메인에 https를 적용받기 위해 AWS ACM을 들어가자. 수동으로 배포했을 때는 EC2에 직접 들어가 SSL 인증서를 받을 수 있었지만, EB를 이용해 배포할 때는 ACM을 통해 인증서를 얻어야 한다.

인증서 요청

아래 사진과 같이 여러 서브도메인에 같은 인증서를 발급받도록 할 수 있다.

내도메인.한국에 CNAME 작성

내도메인.한국에 ACM이 생성한 CNAME 이름과 값을 작성해두어야 한다. 도메인을 현재 소유하고 있는 것이 맞는지 검증할 때 쓰인다.

  • 이름을 작성할 때 도메인을 제외해야 함에 주의한다. 내도메인.한국에 이미 정의가 되어 있다.
  • CNAME 값을 작성할 때 맨 마지막의 .을 제거한다.

SSL 인증서 발급 대기

내도메인.한국에 위 CNAME 정보를 작성해두고 조금 기다리면 SSL 인증서가 발급된다.

www.{도메인}, api.{도메인} 등에 대해서도 동일한 인증서를 받을 수 있도록 설정할 수 있을 것 같은데, 단독으로 했을 때 보다 시간이 더 오래 걸리는 것 같아 실습에서는 두 가지 도메인은 제외해보겠습니다.

대상 그룹 (타겟 그룹) 생성

대상 그룹, 로드 밸런서 등에 대한 개념은 이 글을 참고하면 될 것 같습니다.

EC2 > 대상 그룹에 들어가서 대상 그룹을 생성합니다.

  • 대상 유형 선택: 인스턴스
  • 대상 그룹 이름: 이름 설정
  • 프로토콜: HTTP
  • 포트: 80
  • VPC: 기본
  • 프로토콜 버전: HTTP/1
  • 상태 검사 프로토콜: HTTP
  • 상태 검사 경로: /
  • 고급 상태 검사 설정: 기본
  • 태그: X
  • 사용 가능한 인스턴스 포트 80으로 등록 (아래에 보류 중인 것으로 포함)
  • 대상 그룹 생성

로드 밸런서 생성

  • 로드 밸런서 유형: Application Load Balancer
  • 로드 밸런서 이름: 이름 설정
  • 체계: 인터넷 경계
  • IP 주소 유형: IPv4
  • 네트워크 매핑: VPC 전부
  • 보안 그룹: HTTP, HTTPS 포함된걸로, 모든 곳에서 (0.0.0.0/0) !!
  • 리스너
    • 프로토콜: HTTP / 포트: 80 / 기본 작업: 다음으로 전달 & 생성한 대상 그룹
    • 프로토콜: HTTPS / 포트: 443 / 기본 작업: 다음으로 전달 & 생성한 대상 그룹
  • 보안 리스너 설정
    - 보안 정책: 기본
    - 기본 SSL/TLS 인증서: ACM에 의해 발급받은 인증서 선택
  • 추가 서비스 및 로드 밸런서 태그: 기본

내도메인.한국 & 로드 밸런서 연결

로드 밸런서의 프로비저닝 작업이 끝나면 내도메인.한국에 들어가서 로드 밸런서의 도메인을 CNAME으로 연결한다.

최종

드디어 https가 적용된 것을 확인할 수 있다..! http로도 접근 가능한데, http로 접속 시 https로 리다이렉트하는 것은 잘못하면 더 큰 오류 날까봐 일단은 보류해둔다...

http

https

왜 Route53은 쓰지 않았나?

이 부분에서도 막혔던 부분이었다. 아마 추측하기론 사용하기로 한 도메인이 Route53에서 쓸 수 있어야 하는데, 내도메인.한국을 통해 발급된 도메인은 Route53이 제대로 사용할 수 없는 것 같다. 즉, 레코드를 생성하려고 해도 어차피 써먹지를 못하는 것이다.

느낀 점

너무 방대했던 CI/CD 및 https를 어찌어찌 완료하긴 했지만, 제대로 알지 못하고 구현에만 집중한 것 같다. 인프라적인 내용에 대해서도 공부를 멈추지 않아야겠다는 생각이 들었고, CI/CD 및 https 적용은 프로젝트 초반에 하는게 정신에 이롭다는 것을 느꼈다.. 😇


부족하거나 보완할 점이 있다면 댓글 부탁드립니다 😃

profile
개발을 좋아하는 워커홀릭

0개의 댓글