본문 바로가기

Cloud/AWS

Amazon VPC Lattice - Part 1

Today Keys :   lattice, vpc, service, amazon, network, simplifying, application, connect, secure, monitor

이번 포스팅은 서로 다른 VPC 및 AWS 계정에 걸쳐 서비스 간의 네트워크 연결 및 애플리케이션 계층 라우팅을 자동으로 관리해주는 Amazon VPC Lattice에 대한 첫 번째 포스팅입니다.  앞으로 몇 번에 걸쳐서 다루게 될지는 모르겠지만, VPC Lattice를 구성하는 방법에 대해서 차근 차근 포스팅 해보려고 합니다.
첫 번째 포스팅에서는 VPC Lattice의 구성 요소들을 간단히 만들어 보면서, 서비스에 접근까지 테스트 해 보는 예제를 다뤄봅니다.  구성을 위해서 필요한 VPC Lattice에 대한 내용은 별도 포스팅으로 다룰 예정입니다.

먼저 VPC Lattice를 시작하기 위한 'Getting started' 페이지로 가면, 다음과 같이 VPC Lattice에 대한 간단한 서비스 설명과 VPC Lattice를 구성하기 위해 필요한 서비스를 만들 수 있도록 안내가 되어 있습니다.
'Service Network', 'Service', 'Target groups' 을 각각 구성하고, 실제 접속까지 테스트를 진행합니다.
 
 
Service Network 만들기
먼저  Service Network를 구성하겠습니다.
'Create service network'를 클릭해서, 처음 Service Network를 구성하려고 보면 다음과 같이 어떤 것들을 구성해야 하는지 설명이 나와 있습니다. 이번 포스팅에서는 모든 항목을 다 구성하지는 않고 최소 설정만 진행하고 이후 포스팅해서 하나씩 구성 항목을 추가 할 예정입니다.
 
Service network에 대한 이름과 tag를 입력합니다.
저는 zigi-lsn 이라는 이름의 Service network를 구성하겠습니다.
 

 

 
다음은 Service Network에 연결 할 Service를 선택합니다.
Service는 Service Network를 만들 때는 물론, Service Network가 만들어진 이후에도 언제든지 연결하거나, 제거 할 수 있습니다. 아직 Service를 만들지 않았기 때문에 Service Association은 넘어갑니다.
 
 
 
다음은 Service Network에 연결 될 VPC를 선택하게 됩니다.
Service와 마찬가지로 Service Network 초기 구성 및 이후에도 추가/삭제가 가능합니다.
VPC 연결도 여기에서는 우선 하지 않고 넘어가겠습니다.
 
 
 
다음은 Service Network에 접근하는 Client Access에 대한 권한 관리입니다.
권한 관리에 대해서는 이후 포스팅에서 다룰 예정이기 때문에 여기에서는 None으로 Auth type을 선택합니다.
참고로, None으로 설정하게 될 경우에 별도의 접근 제어를 하지 않고 모든 접근을 허용하게 됩니다.
 
 
 
모니터링의 경우도 이후 포스팅에서 다뤄질 예정이기 때문에 별도 설정 없이 넘어갑니다.
 
 
 
모니터링에 대해서는 다음에 다루겠지만, 참고로 Access Logs를 활성화 해서 보면 Log를 어디로 전달할지 고를 수 있는 것을 볼 수 있습니다.
 
 
 
이제 설정된 항목을 확인하고 Service Network를 생성합니다.
사실 Service Network의 이름만 설정하고 나머지는 아직 거의 그대로 두어서, 아직까지는 설정된 내용이 거의 없습니다.
 
 
 
Target group 만들기
다음은 VPC Lattice Service를 만들기 전에, Target group을 먼저 만들어 보겠습니다.
Target group은 기존에 많이 들어본 이름처럼 Load Balancer에 연결되는 Target Group과 유사하다고 보면 됩니다.
 
Step 1. Specify group details
Target group으로 생성이 가능한 Target Type은 instance, IP address, Lambda, Application Load Balancer가 있습니다.
이번 포스팅에서는 Instance 1대에 Web을 하나 올려서 테스트를 진행 할 예정이기 때문에 Instances로 Type을 선택합니다.
 
 
 
Target group name은 zigi-tg1-1-instance로 하고, Protocol은 HTTP 80으로 설정합니다.
참고로, VPC Lattice Target group은 Target Type과 무관하게 HTTP와 HTTPS Protocol만 지원합니다.
 
다음은 VPC와 Protocol Version을 선택합니다
 
 
 
Health checks는 기본 설정으로 두었습니다.
 
 
 
Step 2. Register targets
다음은 VPC Lattice target group에 연결 할 Target을 선택합니다.
미리 만들어 둔, ZIGI-SVR이라는 Instance를 추가합니다.
 
 
 
이제 모든 설정이 끝나면, 'Create target group'을 선택하여 Target group을 생성합니다.
 
 
 
'Create target group'을 선택하여 Target group을 생성을 시작하면, 아래와 같이 현재 생성되는 task status를 확인 할 수 있습니다. 
 
 
 
모든 생성 task가 완료되면, 다음과 같이 생성된 target group을 확인 할 수 있습니다.
아직은 target group이 service에 연결되지 않았기 때문에 하단의 Registerd targets 정보를 확인해 보면, Target group이 아직 사용되고 있지 않다는 메시지를 확인 할 수 있습니다.
 
 
 
Service 만들기
이제 VPC Lattice의 Service를 만들어 보겠습니다.
 
 
 
Step 1. Create a VPC Lattice service
VPC Lattice service를 만들기를 시작하면, 제일 상단에 Service를 구성하기 위한 순서를 먼저 알려줍니다. 그리고 Step에 따라서 VPC Lattice service를 만들게 됩니다.
 
 
다른 AWS 서비스와 마찬가지로, VPC Lattice service도 Service name을 먼저 설정합니다.
zigi-ls라는 이름으로 Service name을 설정합니다.
 
 
 
다음은 Custom domain에 대한 설정입니다.
 
VPC Lattice service를 만들면 자동으로 임의의 VPC Lattice service에 대한 도메인이 함께 만들어 지는 데, 이 도메인 대신에 Custom domain 설정을 하고자 할 때 사용하는 설정입니다.
 
이번 포스팅에서는 별도의 설정 없이 기본 도메인을 사용 할 것이기 때문에 넘어갑니다.
 
 
 
다음은 Service access인데, Service를 호출하는 Client에 대한 접근을 제어하고자 할 때 Service 별로 Access를 제어 할 수 있습니다.  Service Network의 Network Access와 함께 이후 포스팅에서 다룰 예정이며, 이번 포스팅에서는 'None'으로 설정하고 넘어갑니다. None은 모든 접근을 허용 하는 것입니다.
 
Monitoring도 이후 포스팅에서 다룰 예정이기 때문에 별도의 설정 없이 넘어갑니다.
 
 
 
Step 2- Define routing
 
다음은 Service에 연결 할 Listener를 구성해 보겠습니다.
'Add listener'를 클릭해서 'Listener'를 추가합니다.
 
 
 
Listener 이름을 zigi-web1로 하고, Protocol과 Port는 HTTP, 80으로 설정합니다.
Default action으로는 방금 전에 만들었던 zigi-tg1-1-instance로 forward되도록 설정합니다.
 

 

 
Listener로 연결하는 기본 설정 이외에, 추가 rules을 설정 할 수도 있습니다.
다만, 현재는 AWS Console에서는 Listener rule과 관련해서 정확한 경로 조건(exact match path condition)만 지원하고, 기타 추가 rules 설정은 AWS CLI를 사용해야 합니다.
 
 
현재는 다음과 같이 path에 대한 Condition을 추가해서 구성 할 수 있습니다.
 
 
 
Step 3 - Create network associations
 
이제 VPC Lattice service를 VPC Lattice Service network에 연결합니다.
제일 처음에 만들었던 zigi-lsn이라는 VPC Lattice Service network에 연결합니다.
 
 
 
Step 4 - Review and create
 
앞서 설정한 VPC Lattice service에 대한 값을 확인하고, Service를 생성합니다.
 
 
 
 
잠시 후, 다음과 같이 생성된 VPC Lattice service를 확인 할 수 있습니다.
중간쯤에 보면, VPC Lattice service에 대한 Domain name을 확인 할 수 있습니다.
이 Domain name으로 Service에 접근하게 됩니다.
 
 

 

 

VPC Lattice Service로 접근하기
이제 VPC의 Instance에서 VPC Lattice service에 접근해 보겠습니다.
하지만, 다음과 같이 정상적으로 되지 않고 Timeout이 뜬 것을 볼 수 있습니다.
 
 
 
이제까지 설정한 것을 간단히 살펴보면
ZIGI-SVR이라는 웹 서버를 만들어서, Target Group에 연결을 하고
해당 Target Group으로 연결하는 Listener가 포함 된 Service를 구성한 뒤,
해당 Service를 VPC Lattice Service Network에 연결을 했습니다.
 
하지만, 접근하고자 하는 Client Instance가 VPC Lattice Service Network에 연결되지 않았기 때문입니다.
 
 
VPC Lattice Service Network에 VPC 연결하기
이제 Client Instance가 VPC Lattice Service에 접근 하기 위해서, VPC Lattcie Service Network에 연결을 해 보겠습니다.
처음에 만든 zigi-lsn이라는 VPC Lattice Service Network으로 들어갑니다.
하단에 보면, VPC associations이라는 메뉴가 있습니다.
이 메뉴가 VPC Lattice Service Network와 VPC를 연결하는 메뉴입니다.
 
 

 
'Create VPC associations' 메뉴를 클릭해서, Client Instance가 있는 VPC를 VPC Lattice Service Network에 연결하고, Security group도 함께 설정해 줍니다. 이 Security Group은 VPC Lattice Service Network로 들어오는 VPC의 Inbound 트래픽에 적용이 됩니다.
 
 
 
VPC가 VPC Lattice Service Network에 아래와 같이 정상적으로 연결 된 것을 볼 수 있습니다.
 
 

 
이제 다시 Client Instance에서 VPC Lattice Service로 접근을 시도하면,
다음과 같이 정상적으로 연결이 된 것을 볼 수 있습니다.