본문 바로가기

전체 글95

쿠버네티스 Ingress 개념 및 적용방법 이번 글에서는 Ingress의 정의 및 On-Premise환경(클라우드가 아닌 자체 서버를 사용한 경우)에서 Ingress를 어떻게 사용하는지에 대해 알아볼 것이다. 1. Ingress란 무엇인가? 1-1. Ingress 정의 쿠버네티스 Ingress란 HTTP(S) 기반의 L7 로드밸런싱 기능을 제공하는 컴포넌트이다. Ingress는 외부에서 쿠버네티스 내부로 들어오는 네트워크 요청을 어떻게 처리할지 결정하며, 쉽게 말해 외부에서 쿠버네티스에서 실행중인 Deployment와 Service에 접근하기 위한 관문과 같은 역할을 담당한다. 쿠버네티스 서비스는 기본적으로 L4 레이어로 TCP 단에서 Pod를 로드밸런싱한다. 그런데 MSA(마이크로 서비스 아키텍쳐)의 경우 쿠버네티스 서비스 하나가 MSA 서비스.. 2020. 1. 20.
Actuator & Prometheus를 활용한 Spring Boot 애플리케이션 모니터링 이번 글에서는 Actuator와 Prometheus를 활용하여 쿠버네티스 클러스터 내에서 실행 중인 스프링부트 애플리케이션 모니터링을 하는 방법에 대해 알아볼 것이다. Prometheus Server도 쿠버네티스 클러스터 내에서 구동중이라는 전제로 진행하도록 하겠다. 1. 알아보기 전에 우선 알아보기 전에 Actuator와 Prometheus의 정의에 대해서 알아보자. 1-1. Actuator란? actuator란 쉽게 말해 스프링부트 애플리케이션에서 제공하는 여러가지 정보를 모니터링 하기 쉽게 해주는 기능이며, 컨텍스트 빈, 환경설정, 자동설정, JVM 상태 등의 정보를 확인할 수 있다. 또한 필요한 정보를 가공할 수도 있으며, 내가 만든 어떤 값을 actuator를 통해 제공할 수도 있다. 2-1. .. 2020. 1. 19.
AWS 구성요소 정리 이번 글에서는 AWS(Amazon Web Service)의 구성요소에 대해 정리를 하고자 한다. 1. EC2(Elastic Compute Cloud) AWS 클라우드에서 확장식 컴퓨팅을 제공한다. EC2를 사용하면 하드웨어에 선 투자할 필요가 없어 빠른 애플리케이션 배포가 가능하다. 또한 원하는 만큼 가상서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능하다. 요구사항이나 갑작스런 인기 증대 등 변동사항에 따라 신속하게 규모 확장/축소가 가능하여 서버 트래픽 예측 필요성이 줄어든다. Amazon EC2는 다음의 기능을 제공한다. Instance(인스턴스) : 가상 컴퓨팅 환경 AMI(Amazon Machine Image) : 서버에 필요한 운영체제와 여러 소프트웨어들이 구성된 상태로 제공되는 .. 2020. 1. 17.
쿠버네티스 시작하기(12) - Prometheus와 Grafana 연동으로 모니터링 대쉬보드 구축하기 지난 장에서는 Prometheus & Node-Exporter & AlertManager를 활용한 모니터링 시스템을 구축하였다. 하지만 Prometheus로는 지표(Metric)정보를 확인하기는 많이 불편했다. 따라서 이번 장에서는 지표정보를 좀 더 쉽게 볼 수 있게 Prometheus(프로메테우스)와 Grafana(그라파나)를 연동시켜 모니터링 대쉬보드를 구축할 것이다. 1. Grafana란 무엇인가? 그라파나(Grafana)란 지표(metric)정보를 분석/시각화하는 Open source 툴이다. 주로 인프라 정보 및 App 분석 데이터를 시각화하기 위한 대쉬보드로 주로 사용된다. 그라파나는 Graphite, Prometheus, Elasticsearch, InfluxDB와 같은 시계열데이터베이스를 .. 2020. 1. 17.
쿠버네티스 시작하기(11) - Prometheus & Node-Exporter & AlertManager 연동 이전 장에서는 CI/CD를 구축하고 SonarQube & Jacoco로 코드정적분석 & 소스커버리지 관리 기능까지 적용해 보았다. 이번 장에서는 쿠버네티스 클러스터에 Prometheus(프로메테우스) & NodeExporter & AlertManager를 연동시켜 쿠버네티스 클러스터 및 서버환경를 모니터링할 수 있는 프로세스를 구축해보도록 하겠다. 1. 프로세스 구성도 이번 프로젝트에서 진행한 Prometheus & Node-Exporter & AlertManager를 활용한 모니터링 프로세스 구성도는 다음과 같다. 그림에 대해 간략하게 설명하자면, 우선 각 서버 및 각 쿠버네티스 노드에 Node-Exporter가 구동되고 있으며, Node-Exporter와 kube-state-metrics를 통해 Pr.. 2020. 1. 15.
CI/CD 란 무엇인가? DevOps 관련 공부를 하다보면 CI/CD에 대한 말이 자주 나온다. 하여 CI/CD에 대해 정리를 간단하게 해보고자 한다. 1. CI/CD란? CI/CD란 Continuous Integration(지속적인 통합), Continuous Delivery(지속적인 서비스제공), Continuous Deployment(지속적인 배포)의 약자로, 애플리케이션 개발 단계를 자동화하여 애플리케이션 개발을 보다 짧은 주기로 고객에게 제공하는 방법이며, 새로운 코드 통합으로 인해 개발 및 운영팀에서 발생하는 문제(일명 통합지옥(Integration hell))를 해결하는 솔루션이다. CI/CD는 애플리케이션 통합, 테스트, 제공, 배포에 이르는 라이프사이클 전체에 걸쳐서 지속적인 자동화와 모니터링을 제공하며, 이러한.. 2020. 1. 13.
쿠버네티스 시작하기(10) - SonarQube & Jacoco 연동하기 지금까지 쿠버네티스 클러스터에 간단한 CI/CD 파이프라인을 만들어보았다. 이제 기본적인 파이프라인은 생성해보았으니 파이프라인을 좀 더 업그레이드 해보도록 하자. 우리가 구축한 CI/CD 파이프라인에 추가적으로 필요한 기능은 바로 테스트 자동화다. 이번 장에서는 테스트 자동화를 위해 CI/CD 파이프라인에 SonarQube와 Jacoco를 적용할 것이다. 1. 테스트 자동화란? 보통 JAVA로 개발된 소스를 테스트할 때는 JUnit을 활용해 테스트 코드를 작성하고 해당 코드를 실행해서 개발한 소스가 원하는대로 정상 동작하는지를 테스트한다. 테스트 자동화란 이 테스트 코드를 자동으로 실행시키는 것으로, 보통 CI/CD 파이프라인 내 STEP에 추가시켜 파이프라인 실행 중에 배포 환경에서 개발한 소스가 정상.. 2020. 1. 13.