기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
PrivateLink AWS와 Network Load Balancer를 사용하여 Amazon ECS에서 비공개로 컨테이너 애플리케이션에 액세스할 수 있습니다.
작성자: Kirankumar Chandrashekar(AWS)
환경: 프로덕션 | 기술: 컨테이너 및 마이크로서비스, 네트워킹, 보안, ID, 규정 준수, 웹 및 모바일 앱 | 워크로드: 기타 모든 워크로드 |
AWS 서비스: Amazon EC2, Amazon EC2 Auto Scaling, Amazon EC2 컨테이너 레지스트리, Amazon EFS, Amazon RDS, Amazon VPC, Amazon ECS, Elastic Load Balancing(ELB), AWS Lambda |
요약
이 패턴은 Network Load Balancer 뒤의 Amazon Elastic Container Service (Amazon ECS) 에서 도커 컨테이너 애플리케이션을 비공개로 호스팅하고 AWS를 사용하여 애플리케이션에 액세스하는 방법을 설명합니다. PrivateLink 그런 다음 프라이빗 네트워크를 사용하여 Amazon Web Services(AWS) 클라우드의 서비스에 안전하게 액세스할 수 있습니다. Amazon Relational Database Service(RDS)는 고가용성(HA)을 통해 Amazon ECS에서 실행되는 애플리케이션용 관계형 데이터베이스를 호스팅합니다. Amazon Elastic File System(Amazon EFS)은 애플리케이션에 영구적인 스토리지가 필요한 경우 사용됩니다.
프런트 엔드에 Network Load Balancer가 있는 Docker 애플리케이션을 실행하는 Amazon ECS 서비스를 가상 사설 클라우드 (VPC) 엔드포인트와 연결하여 AWS를 통해 액세스할 수 있습니다. PrivateLink 그리고 나서 이 VPC 엔드포인트 서비스의 VPC 엔드포인트를 사용하여 다른 VPC와 공유할 수 있습니다.
Amazon EC2 Auto Scaling 그룹 대신 AWS Fargate도 사용할 수 있습니다. 자세한 내용은 AWS Fargate, PrivateLink AWS 및 Network Load Balancer를 사용하여 Amazon ECS에서 비공개로 컨테이너 애플리케이션에 액세스하기를 참조하십시오.
사전 조건 및 제한 사항
사전 조건
활성 상태의 AWS 계정
AWS Command Line Interface(AWS CLI) 버전 2, Linux, macOS, 또는 Windows에 설치 및 구성됨
Docker
, Linux, macOS, 또는 Windows에 설치 및 구성됨 Docker에서 실행되는 애플리케이션
아키텍처
![PrivateLink AWS를 사용하여 Network Load Balancer 뒤에 있는 Amazon ECS의 컨테이너 앱에 액세스합니다.](images/pattern-img/a316bf46-24db-4514-957d-abc60f8f6962/images/573951ed-74bb-4023-9d9c-43e77e4f8eda.png)
기술 스택
아마존 CloudWatch
Amazon Elastic Compute Cloud(Amazon EC2)
Amazon EC2 Auto Scaling
Amazon Elastic Container Registry (Amazon ECR)
Amazon ECS
Amazon RDS
Amazon Simple Storage Service(S3)
Lambda
AWS PrivateLink
AWS Secrets Manager
Application Load Balancer
Network Load Balancer
VPC
자동화 및 규모 조정
CloudFormationAWS를 사용하여 코드형 인프라를 사용하여 이 패턴을 생성할 수 있습니다.
도구
Amazon EC2 – Amazon Elastic Compute Cloud(Amazon EC2)는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다.
Amazon EC2 Auto Scaling – Amazon EC2 Auto Scaling을 사용하면 애플리케이션의 로드를 처리할 수 있는 정확한 수의 Amazon EC2 인스턴스를 유지할 수 있습니다.
Amazon ECS – Amazon Elastic Container Service(Amazon ECS)는 클러스터에서 컨테이너를 손쉽게 실행, 중지 및 관리할 수 있게 하는 컨테이너 관리 서비스로서 확장성과 속도가 뛰어납니다.
Amazon ECR – Amazon Elastic Container Registry(Amazon ECR)는 안전하고 확장 가능하고 신뢰할 수 있는 AWS 관리형 컨테이너 이미지 레지스트리 서비스입니다.
Amazon EFS – Amazon Elastic File System(Amazon EFS)은 AWS 클라우드 서비스 및 온프레미스 리소스와 함께 사용할 수 있는 간단하고 확장 가능하며 완전 관리형 탄력적인 NFS 파일 시스템을 제공합니다.
AWS Lambda - Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다.
Amazon RDS - Amazon Relational Database Service(RDS)는 AWS 클라우드의 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있게 하는 웹 서비스입니다.
Amazon S3 – Amazon Simple Storage Service(S3)는 인터넷에 대한 스토리지입니다. 이 서비스는 개발자가 더 쉽게 웹 규모 컴퓨팅 작업을 수행할 수 있도록 설계되었습니다.
AWS Secrets Manager – Secrets Manager는 코드의 암호를 포함해 하드 코딩된 보안 인증 정보를 Secrets Manager에서 프로그래밍 방식으로 보안 암호를 검색하도록 하는 API 직접 호출로 바꿀 수 있습니다.
Amazon VPC – Amazon Virtual Private Cloud(VPC)를 이용하면 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다.
Elastic Load Balancing – Elastic Load Balancing은 여러 가용 영역에 있는 Amazon EC2 인스턴스, 컨테이너, IP 주소와 같은 여러 대상에 걸쳐 수신되는 애플리케이션 또는 네트워크 트래픽을 분산합니다.
Docker
- Docker를 사용하면 개발자가 모든 애플리케이션을 가볍고 휴대가 간편하며 자급자족할 수 있는 컨테이너로 포장, 배송 및 실행할 수 있습니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
VPC를 생성합니다. |
| 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Network Load Balancer를 생성합니다. |
| 클라우드 관리자 |
Application Load Balancer을 생성합니다. |
| 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Amazon EFS 파일 시스템을 생성합니다. |
| 클라우드 관리자 |
서브넷의 대상을 마운트합니다. |
| 클라우드 관리자 |
서브넷이 대상으로 마운트되었는지 확인합니다. |
| 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
S3 버킷을 생성합니다. | 필요한 경우 Amazon S3 콘솔을 열고 S3 버킷을 생성하여 애플리케이션의 고정 자산을 저장합니다. | 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Secrets Manager의 보안 암호를 암호화하기 위해 AWS KMS 키를 생성합니다. | AWS Key Management Service(AWS KMS) 콘솔을 열고 KMS 키를 생성합니다. | 클라우드 관리자 |
Amazon RDS 암호를 보관하기 위한 Secrets Manager 보안 암호를 생성합니다. |
| 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
DB 서브넷 그룹을 생성합니다. |
| 클라우드 관리자 |
Amazon RDS 인스턴스를 생성합니다. | 프라이빗 서브넷 내에서 Amazon RDS 인스턴스를 생성하고 구성합니다. 고가용성(HA)을 위해 다중 AZ가 켜져 있는지 확인하세요. | 클라우드 관리자 |
Amazon RDS 인스턴스로 데이터를 로드합니다. | 애플리케이션에 필요한 관계형 데이터를 Amazon RDS 인스턴스로 로드합니다. 이 프로세스는 애플리케이션의 요구 사항과 데이터베이스 체계의 정의 및 설계 방식에 따라 달라집니다. | 클라우드 관리자, DBA |
작업 | 설명 | 필요한 기술 |
---|---|---|
ECS 클러스터를 생성합니다. |
| 클라우드 관리자 |
도커 이미지를 생성합니다. | 관련 리소스 섹션의 지침에 따라 도커 이미지를 생성합니다. | 클라우드 관리자 |
Amazon ECR 리포지토리를 생성합니다. |
| 클라우드 관리자, DevOps 엔지니어 |
Docker 클라이언트를 Amazon ECR 리포지토리를 인증합니다. | Amazon ECR 리포지토리의 Docker 클라이언트를 인증하려면 AWS CLI에서 | 클라우드 관리자 |
Amazon ECR 리포지토리에 도커 이미지를 푸시합니다. |
| 클라우드 관리자 |
Amazon ECS 작업 정의를 생성합니다. | Amazon ECS에서 Docker 컨테이너를 실행하려면 작업 정의가 필요합니다.
작업 정의를 설정하는 데 도움이 필요하면 관련 리소스 섹션의 ‘작업 정의 생성’을 참조하세요. 중요: Amazon ECR에 푸시한 도커 이미지를 제공해야 합니다. | 클라우드 관리자 |
Amazon ECS 서비스를 생성합니다. | 이전에 생성한 ECS 클러스터를 사용하여 Amazon ECS 서비스를 생성합니다. Amazon EC2를 시작 유형으로 선택하고, 이전 단계에서 생성한 작업 정의와 Application Load Balancer의 대상 그룹을 선택해야 합니다. | 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
시작 구성을 생성합니다. | Amazon EC2 콘솔을 열고 시작 구성을 생성합니다. 사용자 데이터에 EC2 인스턴스가 원하는 ECS 클러스터에 조인하도록 허용하는 코드가 있는지 확인하세요. 필요한 코드의 예는 관련 리소스 섹션을 참조하세요. | 클라우드 관리자 |
Amazon EC2 Auto Scaling 그룹을 생성합니다. | Amazon EC2 콘솔로 돌아가서 Auto Scaling에서 오토 스케일링을 선택합니다. Amazon EC2 Auto Scaling 그룹을 설정합니다. 프라이빗 서브넷을 선택하고 이전에 생성한 구성을 시작했는지 확인하세요. | 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
AWS PrivateLink 엔드포인트를 설정합니다. |
자세한 내용은 관련 리소스 섹션을 참조하세요. | 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
VPC 엔드포인트를 생성합니다. | 이전에 생성한 AWS 엔드포인트에 대한 VPC PrivateLink 엔드포인트를 생성합니다. VPC 엔드포인트 FQDN (정규화된 도메인 이름) 은 AWS 엔드포인트 FQDN을 가리킵니다. PrivateLink 그러면 DNS 엔드포인트가 액세스할 수 있는 VPC 엔드포인트 서비스에 대한 탄력적 네트워크 인터페이스가 생성됩니다. | 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Lambda 함수를 생성합니다. | AWS Lambda 콘솔에서 Lambda 함수를 생성하여 Application Load Balancer IP 주소를 Network Load Balancer의 대상으로 업데이트하세요. 이에 대한 자세한 내용은 관련 리소스 섹션의 ‘Application Load Balancer에 고정 IP 주소 사용’ 블로그 게시물을 참조하세요. | 앱 개발자 |
관련 리소스
로드 밸런서 생성:
Amazon EFS 파일 시스템 생성:
S3 버킷 생성:
Secrets Manager 보안 암호 생성:
Amazon RDS 인스턴스 생성:
Amazon ECS 구성 요소 생성:
Amazon EC2 Auto Scaling 그룹을 생성:
AWS 설정 PrivateLink:
VPC 엔드포인트 생성:
Lambda 함수 생성:
기타 리소스: