본문 바로가기

전체 글95

AWS SSM으로 Private Subnet EC2 접근하기 이번 글에서는 Amazon EC2 Systems Manager (SSM)를 활용하여 프라이빗 서브넷(Private Subnet)에 구축된 EC2 인스턴스에 접근해보도록 하겠다. 1. 왜 AWS SSM을 활용해서 접근해야 하는가? Private Subnet에 구축된 EC2 인스턴스는 퍼블릭 IP주소가 없고 프라이빗 IP주소만 가지고 있다. 그렇기 때문에 외부에서는 해당 EC2 인스턴스로 접근할 수가 없다. 프라이빗 IP주소만 가지고 있는 EC2 인스턴스에 접근하기 위해서는 1)바스티온 서버를 통해 접근하거나 2)AWS SSM 을 통해 접근 해야한다. 바스티온 서버를 통해 접근하는 방법은 프라이빗 서브넷 위의 EC2 인스턴스와 동일한 VPC의 퍼블릭 서브넷에 바스티온 서버를 구축한 후 SSH를 통해서 EC2.. 2020. 9. 28.
Istio란 무엇인가? 이번 글에서는 Istio의 정의, 구조 및 특징에 대해 알아볼 것이다. 이 글의 순서는 다음과 같다. 1. 서비스 메쉬(Service Mesh)란? 2. Istio 정의 3. Istio 구조 4. Istio 구성요소 5. Istio 주요 특징 1. 서비스 메쉬(Service Mesh)란? Istio가 서비스 메쉬(Service Mesh)를 구현할 수 있는 오픈소스이기 때문에, 우선 서비스 메쉬(Service Mesh)가 무엇인지 알아보자. 서비스 메쉬(Service Mesh)란 API 등을 사용하여 마이크로 서비스 간 통신을 안전하고, 빠르고, 신뢰할 수 있게 만들기 위해 설계된 전용 인프라 계층이다. 서비스 메쉬는 보통 Application 서비스에 경량화 프록시(Proxy)를 사이드카(sidecar).. 2020. 8. 31.
AWS EKS에 로그 트레이싱 구축(2)-kubernetes에 Jaeger 설치 지난 글에서 AWS EKS로 구축된 쿠버네티스 클러스터에 EFK 스택을 구성하였다. 이번 글에서는 AWS EKS로 구축된 쿠버네티스 클러스터에 Jaeger를 설치하여 분산 환경 로그 트레이싱을 구축해보도록 하겠다. Jaeger는 EC2 인스턴스에 별도로 구성하는것이 아닌, 쿠버네티스 클러스터 내에 구성할 것이다. 이 글의 실습을 진행하기 전에 다음과 같은 실습환경이 준비되어 있어야 한다. -º AWS EKS 구축(AWS EKS를 활용한 쿠버네티스 클러스터 구축 참고) - AWS EKS에 스프링부트 서비스 배포(AWS EKS에서 CodePipeline을 활용하여 스프링부트 서비스 배포하기 참고) - AWS EKS에 EFK 스택 구성(AWS EKS에 로그 트레이싱 환경 구축하기(1) - EFK 스택 구성하기.. 2020. 8. 23.
AWS EKS에 로그 트레이싱 구축(1)-kubernetes에 EFK 스택 설치 이번 글에서는 AWS EKS로 구축된 쿠버네티스 클러스터에 EFK 스택을 구성하고, Jaeger를 설치하여 분산 환경에서 로그 트레이싱 진행할 수 있도록 구축해 보겠다. 첫번째 장에서는 EFK 스택을 구성할 것이고, 그 다음 장에서는 Jaeger를 설치할 것이다. EFK스택은 EC2 인스턴스에 별도로 구성하는것이 아닌, 쿠버네티스 클러스터 내에 구성할 것이다. 이 글의 실습을 진행하기 전에 다음과 같은 실습 환경이 준비되어 있어야 한다. 1. AWS EKS 구축(AWS EKS를 활용한 쿠버네티스 클러스터 구축 참고) 2. AWS EKS에 스프링부트 서비스 배포(AWS EKS에서 CodePipeline을 활용하여 스프링부트 서비스 배포하기 참고) 이 글의 순서는 다음과 같이 진행된다. 1. 분산환경 로그 .. 2020. 8. 23.
AWS EKS에서 CodePipeline을 활용한 스프링부트 서비스 배포 이번 글에서는 AWS EKS에 CodePipeline(CodeCommit & CodeBuild)을 활용하여 스프링부트 서비스를 배포해보도록 하겠다. 이 글의 순서는 다음과 같다. 1. AWS CodeCommit 생성 2. AWS CodeBuild 생성 3. AWS CodePipeline 생성 4. 스프링부트 서비스 배포 추가로 실습하기 전에 AWS EKS가 이미 구축되어 있어야 한다. AWS EKS는 퍼블릭 서브넷과 프라이빗 서브넷을 각각 2개씩 가진 VPC위에서 동작하며, EC2 인스턴스는 프라이빗 서브넷에서만 구동되게끔 셋팅되어 있어야 한다(AWS EKS를 활용한 쿠버네티스 클러스터 구축 참고) 1. AWS CodeCommit 생성 우선 AWS CodeCommit을 생성해보자. CodeCommit을 .. 2020. 8. 22.
AWS EKS를 활용한 쿠버네티스 클러스터 구축 이번 글에서는 AWS EKS를 활용하여 쿠버네티스 클러스터를 구축해 볼 것이다. 사실 필자는 스터디 팀원들과 상용 오픈을 목표로 자체 프로젝트를 진행중인데, 돈을 많이 쓰지 않으면서 최대한 효율적으로 PaaS 환경을 구축하기 위해, AWS에 Kops를 활용해서 쿠버네티스 클러스터 구축/활용해 본 경험이 있다(마스터노드를 한개만 사용해도 되기 때문에 가격이 더 저렴했다. 물론 프로젝트가 어느정도 안정기에 도달하여 트래픽이 늘게 되면 AWS EKS를 도입할 생각이었다). 하지만 회사에서 진행하는 클라우드 교육 과제의 일환으로 AWS EKS로 쿠버네티스 클러스터를 구축하게 되어 이렇게 글을 남긴다. 이 글은 보는 사람이 최대한 이해하기 쉽도록 eksctl이 아닌 AWS Management Console을 활용.. 2020. 8. 6.
Service does not have any active Endpoint 에러 해결 방법 쿠버네티스 클러스터에 서비스 적용 시 아래와 같은 에러가 발생하는 경우가 종종 있다. controller.go:804] Service "default/cloud-l3-service1" does not have any active Endpoint. 위 에러는 쿠버네티스 클러스터 서비스에서 디플로이먼트를 찾지 못할 때 발생하는 에러이며, 보통 서비스의 selector.app 값이 디플로이먼트의 app값과 불일치 하는 경우에 자주 발생한다. 그렇기 때문에 서비스 적용을 위한 yaml 작성 시 디플로이먼트 yaml과 매칭되게 작성이 필요하다. 필자의 경우는 아래와 같이 서비스 yaml 파일 들여쓰기를 잘못써서 위와 같은 에러가 발생했다. service.yaml(에러 발생) : apiVersion: v1 kind.. 2020. 7. 26.