
⚠️잠깐!⚠️
설정을 시작하기 전,
ROOT 계정 주가 IAM 계정에게VPC 권한을 부여해주어야 한다!
IAM > 액세스 관리 > 사용자 그룹 or 사용자 페이지에서
권한 > 권한 추가(우측 버튼) > 정책 연결(드롭다운)을 클릭하여
다음과 같이 AmazonVPCFullAccess 권한을 추가해준다.

이제 VPC 생성을 위한 준비가 다 끝났다.
AWS 검색창에서 VPC를 검색하여 VPC 대시보드로 로드된 뒤,
사진과 같은 VPC 생성 버튼을 눌러 준다.

조정할 수 있는 여러 항목들이 있지만, 우선은 다음의 세 항목을 조정 해준다
- 생성할 리소스:
VPC만으로- 이름 태그: (적당히 직관적인 이름으로)
- IPv4 CIDR:
10.0.0/16으로

👇🏻 이후 아래와 같이 별다른 오류 없는 생성 완료 창이 뜨면 성공🙆🏻!


본인이 IAM 사용자인 경우, 위와 같이 규칙 그룹 로드 실패가 뜰 수 있다.
[원인]
👉🏻 Route53 접근 권한이 없기 때문이며
🙅당황하지 말고🙅
[해결법]
👉 해당 AWS 계정의 Root 사용자가 🔑권한을 부여해줌으로서 해결할 수 있다!
⚠️잠깐!⚠️
이건 IAM 계정이 아닌,
ROOT 계정 주가 진행해주어야 하는 부분이다!
먼저, IAM > 액세스 관리 > 사용자 그룹 들어간 뒤 로드되는 페이지에서
권한 > 권한 추가(우측 버튼) > 정책 연결(드롭다운)을 클릭해준다

👇🏻 이후 다음과 같이 AmazonRoute53FullAccess 권한을 검색해 추가해준다

⚠️잠깐!⚠️
이렇게까지 했는데도 에러가 뜬다?!
Rout53ResolverFullAccess권한 까지 추가해줘버리자!

=> 이거 추가해준 이후로는 우리 팀에서 더이상 에러가 발생하지 않았다
VPC > 서브넷 > 서브넷 생성 들어간 뒤,
아까 만든 VPC 선택해준다

1차로 1개의 서브넷을,
2차로 3개의 서브넷을 한 번에 생성할 것이다.
1차
- 서브넷 이름: ecs-public-subnet-1-jb
- 가용 영역: 2a
- IPv4 CIDR 블록: 10.0.1.0/24

2차
같은 창에서 좌측 하단의 `새 서브넷 추가`누르면
동일 페이지 내에서 새로운 서브넷 설정 창이 추가된다
- 서브넷 이름: ecs-private-subnet-1-jb
- 가용 영역: 2a
- IPv4 CIDR 블록: 10.0.2.0/24
- 서브넷 이름: ecs-public-subnet-2-jb
- 가용 영역: 2c
- IPv4 CIDR 블록: 10.0.3.0/24
- 서브넷 이름: ecs-private-subnet-2-jb
- 가용 영역: 2c
- IPv4 CIDR 블록: 10.0.4.0/24

아래와 같이 세 개가 동시에 생성 완료 되면 OK!

VPC 메뉴바에서 NAT 게이트웨이를 클릭해준다.

사진과 같이 직관적으로 이름을 설정 해주고,
일단은 만들어둔 서브넷 목록들 중,
public 서브넷 중 첫번째(1번) 서브넷을 선택해준다.
탄력적 IP의 경우 다른 IAM 계정과 겹치지 않게 설정 해준다.

👇🏻 다음과 같이 오류 없이 생성 완료 창이 뜨면 성공이다🙆!

우측 상단의 인터넷 게이트웨이 생성 버튼 눌러준다

역시 직관적인 이름으로 설정 해준다

위에서 만들어진 인터넷 게이트웨이 창에서
우측 상단 작업 > VPC에 연결 버튼을 눌러준다

사용 가능한 VPC 목록들 중 위에서 생성했던 VPC를 선택해준다

- 이름:
public/private을 구분하여 직관적인 이름으로 설정- VPC: 드롭다운 목록들 중
위에서 만들어둔 VPC선택

아래처럼 완료 창 뜨면 OK!
이제 라우팅을 연결하기 위해 완료된 창에서
라우팅 > 라우팅 편집 을 눌러준다.

default로 설정 되어있는
10.0.0.0/0은 건들지 말고,
좌측 하단의라우팅 추가버튼을 눌러 새로 하나 만들어 준다.
그리고 아래와 같이 설정 해준다.
- 대상1:
0.0.0.0/0으로 설정- 대상2:
인터넷 게이트웨이선택 > 목록에서아까 만든 인터넷 게이트웨이선택


아까와 같은 라우팅 테이블 생성 완료 페이지에서
서브넷 연결 > 서브넷 연결 편집 버튼을 클릭해준다

현재 생성한 라우팅 테이블은
esc-public-route-table-jb
즉, public용이기 때문에, 아까참에 만들어 둔 4 개의 서브넷들 중
public 서브넷 두 개를 선택하여 연결해준다.

👇🏻 아래처럼 public route table에 연결된 서브넷으로 public서브넷 두 개가 있으면 제대로 설정 완료된 것이다.

같은 방식으로
1) private route table 생성 후
2) 이번엔 NAT 게이트웨이 연결하고,

3) private 서브넷 두 개 연결하면 최종 완료이다.

우리는 다음과 같이 두 개의 보안 그룹을 생성할 것이다.
- ecs-sg-
alb-jb- ecs-sg-
instance-jb
보안그룹은 방화벽 역할을 해 준다.
또한, 보안그룹 인바운드 규칙으로 또다른 보안그룹을 설정하면
해당 보안그룹은 포트와 상관 없이 마음대로 접속할 수 있다.
우리는 1번째 보안그룹의 인바운드 설정에 2번째 보안그룹을 종속시킬 것이다!
우선은 첫 번째 보안그룹을 생성하기 위해, 다음과 같이 설정 해준다

일단 HTTP & Anywhere IPv4 조합으로 초기 규칙을 설정 해준다

그리고 똑같은 방식으로 두 번째 보안그룹인 ecs-sg-instance-jb를 생성해준 뒤,
1번 보안그룹의 인바운드 규칙에
사용자 지정 TCP & 2번째 보안그룹(ecs-sg-instance-jb) 조합으로 규칙 추가를 진행해준다.

VPC 메뉴에 들어가서
검색창에 jb(본인이 설정한 이름) 검색 후, public VPC들에 대해
우측 상단 작업 > 서브넷 설정 편집 눌러 들어간다

자동 할당 IP 설정 섹션에서
퍼블릭 IPv4 주소 자동 할당 활성화를 체크해주고 저장후 나온다

EC2 > Load balancers 들어간 뒤 create~ 누른다

로드 밸런서 타입으로는 ALB(Application Load Balancer)를 선택해준다

VPC 설정 해주고,
매핑할 서브넷은 public으로 맞춰 준다

내리다 보면 Listeners and routing 섹션에서
Create target group을 눌러 새로운 타겟 그룹을 생성 해준다.

그 후 다음과 같이 타겟 그룹 이름, 포트, VPC를 설정해주고,
프로토콜 버전은 HTTP1으로 맞춰 준다.

다음과 같이 생성해준다

+) gRPC란?
👉🏻 REST API를 대체할 수 있는 구글의 프로시저 호출 시스템
gRPC는 구글이 최초로 개발한 오픈 소스 원격 프로시저 호출 시스템이다. 전송을 위해 HTTP/2를, 인터페이스 정의 언어로 프로토콜 버퍼를 사용하며 인증, 양방향 스트리밍 및 흐름 제어, 차단 및 비차단 바인딩, 취소 및 타임아웃 등의 기능을 제공한다.
(출처: 위키백과)

다수의 컨테이너를 조정, 운용하는 것
쿠버네티스 ==> 가장 추천이 중 우리는 AWS의 EKS를 사용 해보려고 한다.
MSA를 사용한 서비스는 컨테이너에 오케스트레이션을 사용한다