목록Public Cloud (8)

AWS Load Balancer Controller?AWS Load Balancer Controller는 Kubernetes 클러스터를 위한 AWS Elastic Load Balancer를 관리하는 add-on이다. 따라서 별도로 AWS Load Balancer Controller를 추가 설치하여 로드 밸런서를 관리하는 것이다.그림과 같이 클러스터 내부에 다수의 Pod가 존재하고 연결을 위해 AWS ELB를 구성했다고 가정해보자. 이 상황에서 AWS Load Balancer Controller는 Control Plane과 상호 작용하여 대상 Pod의 정보를 확인하고 이벤트를 모니터링 하는 것으로 클러스터 내부의 Pod 정보를 취득할 수 있다. 그리고 AWS ELB로 해당 Pod 정보를 프로비저닝하여 타겟..

Amazon VPC CNI 소개Amazon EKS는 Amazon VPC CNI 플러그인을 통해 클러스터 네트워킹 환경을 구성한다. CNI는 Container Network Interface의 약자로 컨테이너 간 네트워킹을 제어하는 표준이라는 의미를 가진다. 참고로 Kubernetes의 경우 kubenet이라는 자체 CNI가 존재하지만 기능적 측면에서 제약이 많아 외부 플러그인을 주로 사용한다. Amazon VPC CNI는 AWS VPC와 자연스럽게 연계되어 네트워킹 환경을 구성할 수 있다. 이로 인해 다양한 VPC 서비스와 통합이 가능하다. Pod와 Node의 IP를 동일한 대역으로 할당할 수 있으며 이로 인해 통신에 대한 오버헤드가 거의 발생하지 않는다.Assign IP Address on Pod노드에..

Elastic Block StoreEC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공한다. 각 Amazon EBS 볼륨은 EC2와 동일한 가용 영역 내에 자동으로 복제되어 구성요소 장애로부터 부호해주고, 고가용성 및 내구성을 제공한다. Amazon EBS 볼륨은 워크로드 실행에 필요한 지연 시간이 짧고 일관된 성능을 제공한다. Amazon EBS를 사용하면 몇 분 내에 사용량을 많게 또는 적게 확장할 수 있으며, 프로비저닝한 부분에 대해서만 저렴한 비용을 지불한다. 일종의 가상 하드디스크로 EC2와 EBS는 네트워크로 연결되어 있기 때문에 EC2 인스턴스가 종료되어도 계속 유지가 가능하다. EC2 스케일업 시에도 EBS를 종료하지 않고 EC2만 스케일업할 수 있다. 루트 볼륨으로 사용시에는 EC..

이번 포스팅에서는 AWS Chatbot을 활용하여 Slack을 통해 EC2 인스턴스의 상태를 중지/실행으로 변경해고자 한다.AWS ChatbotAWS Chatbot은 Microsoft Teams 및 Slack 채널을 통해 AWS 리소스를 쉽게 모니터링하고 상호 작용하도록 지원하는 대화형 에이전트다. AWS Chatbot을 활용하면 알림을 수신하고 명령을 통해 진단 정보를 반환하고, AWS Lambda 함수를 호출하고 AWS Support 케이스를 생성하여 팀이 더 빠르게 협업하고 이벤트에 대응할 수 있다. AWS Chatbot은 별도의 요금이 존재하지 않는다. 대신 AWS Chatbot 없이 사용하는 것과 동일한 방식으로 사용하는 기본 서비스(예: Amazon Simple Notification Serv..

Elastic Network Interface탄련적 네트워크 인터페이스는 VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소다. EC2의 IP주소와 Mac 주소를 보유하고 있다. EC2는 반드시 하나 이상의 ENI가 연결되어 있으며, EC2 최초 생성시 Primary ENI가 생성되어 연결된다. 사용자의 필요에 따라 한 개의 EC2에 여러 개의 ENI를 연결시킬 수 있다. 추가된 ENI의 경우 EC2와 동일한 가용영역이라면 다른 서브넷에도 설정이 가능하다. 하나의 ENI에 Private IP와 하나의 Public IP로 구성되어 있는데, Public IP의 경우 사용자의 선택에 따라 설정하지 않을 수도 있다. 또한 필요에 따라서 한 개 이상의 Private IP를 부여할 수 있다. 실질적..

ELB?다수의 서비스에 트래픽을 분산시켜주는 서비스이며, 직접 트래픽을 발생시켜 인스턴스가 살아있는지 체크한다. 여러 가용영역에 분산이 가능하기 때문에 애플리케이션 가용성을 향상시키고 HTTP, HTTPS, TCP, SSL, gRPC 등 다양한 프로토콜을 지원한다. 또한, AWS의 CloudWatch 기능을 이용하여 로그와 메트릭을 모니터링할 수 있으며, Auto Scaling 기능과 결합하여 트래픽이 증가할 때 자동으로 인스턴스를 추가하거나 제거하면서 애플리케이션 가용성을 유지한다. 지속적으로 IP가 변경되기 때문에 도메인 기반으로 사용하는 것이 편리하다. 대표적으로 4가지 종류가 존재한다. Application Load Balancer (ALB)Network Load Balancer (NLB)Clas..

사용자가 Github에 변경사항을 저장하기 위해 Push 를 하면 Jenkins가 변경을 감지한다. 변경사항을 감지한 Jenkins는 Github의 프로젝트 내용을 clone하여 Jenkins 가 위치한 EC2 내부로 복사한 뒤 ./gradlew clean bootJar 을 실행하여 app.jar 파일을 생성한다. 이후 Jenkins의 Publish Over SSH 를 통해 생성된 jar 파일을 app을 배포하고자 하는 EC2로 이동시키고, 쉘 스크립트 혹은 java -jar app.jar 명령어로 실행시키면 된다. 진행 과정 Github의 Webhook 설정 및 Token, Credential 설정은 이미 완료한 상태로 가정하고 과정을 진행한다. Publish Over SSH는 Jenkins를 실..
Jenkins를 t2.micro EC2 환경에서 실행시킬 경우 단순 컨테이너 실행만으로 350MB에 달하는 메모리 공간을 점유한다. 만약 이 상황에서 Jenkins를 통해 Build를 진행하게 된다면... 무려 610~650 사이의 메모리 공간을 점유하는 것을 확인할 수 있다. AWS 에서 제공하는 t2.micro 단위의 작은 EC2 가 사용자에게 기본적으로 제공하는 메모리 용량은 1GB 스토리지 용량은 30GB로 넉넉하게 제공하지만 1GB의 협소한 메모리 공간으로는 Jenkins로 Build 를 실행시키기에는 턱없이 부족하다. Jenkins 이외에도 메모리를 많이 차지하는 다른 프로그램들을 실행시킬 때에 자주 EC2 인스턴스가 죽는 모습에 당황하는 경우가 많고, 원인을 정확히 진단하지 못할 경우 애..