aws 커스텀 vpc + eks 구성

아래 커스텀 VPC 생성하려면 az 마다 subnet private/public 을 생성하고 각각 설정을 해줘야돼서 힘들다.
eks 기본 설정으로 클러스터를 생성하면 VPC 가 자동생성되니 vpc management console 에서 필요한 부분만 수정하는것이 편하다.

#####

VPC 는 다음과 같은 흐름으로 구성된다.
internetgateway <--> nacl <--> public routing table <--> public subnet
(internetgateway <--> nacl 위줄과 같은 것) <--> private routing table <--> private subnet

[vpc 생성�]
참고로 리전당 VPC 생성은 5개로, VPC 당 서브넷은 200등 각종 개수가 제한되어 있고, 필요시 증가 요청을 해야 한다.
private ip 로 사용할 수 있는 범위는 다음과 같고, 가장 많이 사용할 수 있는 10.0.0.0 대역을 사용�
RFC1918 nameIP address rangeClassful description
24-bit block10.0.0.0 – 10.255.255.255single class A network
20-bit block172.16.0.0 – 172.31.255.25516 contiguous class B networks
16-bit block192.168.0.0 – 192.168.255.255256 contiguous class C networks

생성한 VPC 에서 10.0.0.0/16 으로 65,536 개의 사설 IP 를 사용할 수 있도록 한다.
(cider ip 파악 할때 참고 https://cidr.xyz/)

VPC 생성


[vpc subnet 생성]
하나의 subnet 은 하나의 가용영역(az)에서만 종속된다.
public subnet 생성
a az 에 설정
10.0.0.0/24 로 10.0.0 는 고정 나머지 8bit (256개) IP 구분 가능하도록 한다.

public subnet 은 인터넷과 연결되어야 하기 때문에 '자동 할당 ip' 를 설정해야 한다.

private subnet 생성
b az 에 설정
10.0.1.0/24 로 10.0.1 는 고정 나머지 8bit (256개) IP 구분 가능하도록 한다.



[vpc internet-gateway (igw) 생성]
igw 를 통해서만 인터넷 연결이 가능한다.
igw 생성

igw 생성 후 bill-test vpc 와 연결(igw 는 하나의 VPC 에만 연결할 수 있다.)


[vpc routing table (rt) 생성]
bill-test-public-rt 생성


bill-test-private-rt 생성

bill-test-private-rt -> 서브넷 연결 -> bill-private-subnet1 연결
bill-test-public-rt -> 서브넷 연결 -> bill-public-subnet1 연결(스샷참고)

bill-test-public-rt -> 라우팅 편집 -> bill-test-igw 과 연결 후 라우팅 편집
10.0.0.0/16 은 local 보내고 그외 0.0.0.0/0 (모든) 트랙픽은 인터넷 연결 가능하도록 한다.




[vpc network access control list (nacl) 생성]
인터넷 연결은 위한 bill-test-public-subnet1 만 nacl에 연결한다.

nacl 은 stateless 로 상태를 알 수 없기 때문에 inbound(내부로 들어오는)/outbound(외부로 나가는) 트랙픽에 대해서 모두 설정해줘야 한다.
룰 규칙 번호는 낮은 -> 큰 숫자(최대 32766) 우선순위으로 적용된다.(같은 내용의 규칙이라면 낮은 규칙번호가 적용)
inbound http(80), https(443) 허용하는 새규칙 추가

outbound 는 모든 포트를 허용하는 새규칙 추가


[ekctl 클러스터 생성]
# eksctl 을 사용하면 az3개에 각각 public, private subnet 및 VPC 관련 자동 설정된다.
# fargate(aws 에서 자동 관리해주는 node, daemonset 과 같은 리소스는 지원되지 않는다.) 생성해 사용
eksctl create cluster --name "bill-test" --fargate

# fargate 는fp-default 프로파일로 기본 생성되며
# 포드 선택기 -> 네임스페이스로 설정된 곳에선 fargate 가 사용된다.

# 참고로 nodegroup 도 추가한 경우, fargate 프로파일 네임스페이스에 없는 경우
# ng 로 배포된다. 

# kubectl 연결 설정 추가
aws eks update-kubeconfig --region ap-northeast-2 --name bill-test

# 위에 설정한 VPC bill-test pivate, public 서브넷 ID으로 설정
# cluster.yaml 작성
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: bill-test
  region: ap-northeast-2
vpc:
  id: "vpc-111111" # bill-test vpc id
  subnets:
    public:
      ap-northeast-2a:
          id: "subnet-public11111"
      ap-northeast-2b:
          id: "subnet-public22222"

eksctl create cluster -f cluster.yaml


# 참고로 테스트를 위해 클러스터를 삭제해도 VPC 살아 있다.
eksctl delete cluster --name "bill-test" 

# 리전당 VPC 5개라 다음에 사용하지 않는다면 VPC 도 삭제해준다.
# VPC 는 management console 에석 삭제하면 되는데, 사용중인 곳이 있다면 삭제가 안된다.
# ec2 인스턴스가 autoscaling 그룹으로 지정되어 있어 이것을 먼저 삭제해야 한다.

comments:

댓글 쓰기