클라우드 컴퓨팅 & NoSQL/Kubernetes

    [Istio] Istio Service mesh 튜토리얼 후기

    [Istio] Istio Service mesh 튜토리얼 후기

    들어가며 Istio Service Mesh 는다양한 장점을 가지고 있지만, 그중 필자가 도입하고자 하는 이유는 두 가지다. 첫 번째, 서비스간 상호작용 추적 운영 중인 서비스간 상호 관계를 파악하기 위한 방법은 전술적 설계 과정의 개발 산출물을 토대로 서비스의 연관성을 확인한 후, Datadog의 이벤트 로그들을 확인하며 검증하는 방법뿐이다. Istio Service Mesh의 Sidecar를 기반으로 한 운영 가시화가 매력적이었다. 또한 Sidecar를 이용하여 상호 작용이 불가능한 서비스 결함을 사전 탐지할 수 있는 점도 좋았다. 두 번째, Circuit breaker 도입 운영 중인 서비스에 Circuit breaker를 도입하기 위함이다. 플랫폼이 Polyglot 한 마이크로 서비스 구조로 변경되..

    [Kubernetes] DEVOCEAN - 김정기 전문가(SK Telecom)님의 멘토링

    [Kubernetes] DEVOCEAN - 김정기 전문가(SK Telecom)님의 멘토링

    들어가며 9월, 적잖은 노력 끝에 2개의 MSA 프로젝트를 성공적으로 Kubernetes 환경에 배포하게 되었다. 이제 우리 회사도 탄력적인 클라우드 인프라를 사용할 수 있는 환경이 조성되었다는 뿌듯함과 함께 2가지 미해결 사항이 마음을 무겁게 하고 있다. 첫 번째, CI/CD 환경 구축 프로젝트가 아직 연구단계이기 때문에 도메인 요구사항이 계속 발굴되고, 자잘한 버그들이 많은 상황이다. 그래서 하루 평균 10~20번 정도 빌드와 배포를 반복하고 있다. 프론트엔드의 경우 단일 프로젝트라 한 번의 빌드로 끝나지만, Micro serice들 상호 간에 패치를 진행하면 빌드 횟수는 n배로 늘어나는 상황이다. 사업이 어느 정도 일단락되는 시점에 CI/CD에 대한 탈출구를 찾아야한다. 두 번째, Distribut..

    [Kubernetes]Nginx 이미지를 이용한 간단한 쿠버네티스 프로젝트

    [Kubernetes]Nginx 이미지를 이용한 간단한 쿠버네티스 프로젝트

    들어가며 MSA에 입문한 뒤로 블로그에 글을 올라는 횟수가 대폭 줄었다.. 회사에 제안한 MSA 기반 프로젝트를 진행하면서 학습량이 많이 증가했기 때문이다. (서비스 나누는 법을 알기 위해 이벤트 스토밍을 공부하고.. 서비스를 잘 만들기 위해 DDD와 객체 지향도 들여다보고.. Spring framework와도 이제 아주 조금은 친해진것 같기도 합니다.) 3번째로 진행하는 MSA 기반 프로젝트는 시스템 규모가 좀 있다 보니 마이크로 서비스가 18개 정도 도출되었다. 1, 2번째 진행한 MSA 기반 프로젝트들은 서비스 개수가 6~8개 정도였기 때문에 Kong 기반 API gateway + Docker compose 환경에서 처리가 가능했다. 하지만 진행 중인 프로젝트는 서비스의 개수도 많고, 상황에 따른 ..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #7

    쿠버네티스(Kubernetes) 공식 튜토리얼 #7

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 마지막 단계인 6단계를 실습해 보도록 한다. 2021.04.04 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #6 쿠버네티스(Kubernetes) 공식 튜토리얼 #6 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 5단계를 실습해 보도록 한다. 2021.04.03 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #5 쿠버네티스(Kubernetes) 공식 튜토리 devlos.tistory.com 튜토리얼 모듈 6은 "Performing a Rolling Update"에 관한 것이다. 이번 시나리오의 목표는 deploy된 애플리케이션을 Kubectl set imagne로 ..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #6

    쿠버네티스(Kubernetes) 공식 튜토리얼 #6

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 5단계를 실습해 보도록 한다. 2021.04.03 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #5 쿠버네티스(Kubernetes) 공식 튜토리얼 #5 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 4단계를 실습해 보도록 한다. 2021.04.02 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #4 쿠버네티스(Kubernetes) 공식 튜토리 devlos.tistory.com 튜토리얼 모듈 5는 "Running Multiple Instances of Your App"에 관한 것이다. 쿠버네티스 kubectl scale을 이용하여 Depolyment를 확장하고 로드벨..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #5

    쿠버네티스(Kubernetes) 공식 튜토리얼 #5

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 4단계를 실습해 보도록 한다. 2021.04.02 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #4 쿠버네티스(Kubernetes) 공식 튜토리얼 #4 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 3단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 이 devlos.tistory.com 튜토리얼 모듈 4는 service를 이용하여 어플리케이션을 expose 하는 방법에 대한 것이다. 1. kubectl get pods 실행 $ kubectl get pods 이전 포스트에서 언급했드..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #4

    쿠버네티스(Kubernetes) 공식 튜토리얼 #4

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 3단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 2단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 이 devlos.tistory.com 튜토리얼 모듈 3는 kubectl 을 이용하여 Kubernetes 어플리케이션의 trubleshooting을 하는 방법에 대한 것이다. 1. kubectl get 실행 $ kubectl get pods Kube..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #3

    쿠버네티스(Kubernetes) 공식 튜토리얼 #3

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 2단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 이번 포스팅에서는 지난 포스팅에서 소개했던 쿠버네티스 공식 튜토리얼 2021.03.31 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버 devlos.tistory.com 튜토리얼 모듈 2는 쿠버네티스에 App을 deploy 하는 기능에 대한 것이다. 1. kubectl version 클릭 $ kubectl version 다음으로 kubectl의 버전을 확인하는 명령어를 ..

    쿠버네티스( Kubernetes) 공식 튜토리얼 #2

    쿠버네티스( Kubernetes) 공식 튜토리얼 #2

    이번 포스팅에서는 지난 포스팅에서 소개했던 쿠버네티스 공식 튜토리얼 2021.03.31 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버네티스 공식 도큐먼트를 확인하다가 6가지의 기초 튜토리얼 과정을 소개한다. 대화형 튜토리얼을 사용해서 다음과 같은 내용을 배울 수 있다. 컨테이너화 된 애플리케이션을 클러스터에 배 devlos.tistory.com 중에서 클러스터 생성하기를 실습해 보도록 한다. 1. 실습하기 선택 다음 그림과 같이 대화형 튜토리얼 시작하기 버튼을 누르면 가상의 CLI 환경이 보인다. 첫 번째 모듈은 쿠버네티스 클러스터를 실행하는 과정을 실습할 수 있도록 환경을 제공한다. 터미널 창에 ..

    쿠버네티스( Kubernetes) 공식 튜토리얼 #1

    쿠버네티스( Kubernetes) 공식 튜토리얼 #1

    쿠버네티스 공식 도큐먼트를 확인하다가 6가지의 기초 튜토리얼 과정을 소개한다. 대화형 튜토리얼을 사용해서 다음과 같은 내용을 배울 수 있다. 컨테이너화 된 애플리케이션을 클러스터에 배포하는 법 디플로이먼트 스케일링하기 컨테이너화 된 애플리케이션을 새로운 버전으로 업데이트하기 컨테이너화된 애플리케이션 디버그 하기 환경: Minikube 본 튜토리얼을 활용하면 지금까지 학습한 개념들을 체감하는데 도움이 될 것 같다. 서버를 준비할 필요 없이 브라우저 CLI 환경으로 튜토리얼 진행 가능하다. 다음 글에서 튜토리얼을 진행내용을 정리해 보려고 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 이번 포스팅에..

    쿠버네티스 컴포넌트(component)

    쿠버네티스 컴포넌트(component)

    쿠버네티스의 아키텍처를 이해하기 위해 공식 설명자료에 있는 도식을 여러 문헌을 참고하여 작성해 보았다. 역시 여러 문헌을 참고하다보니 애매모호한 부분이 많이 사라지는 것 같다. 다음은 새로 정리한 쿠버네티스 클러스터 다이어그램이다. 공식 문서에는 더욱 자세한 내용이 있으니 참고하면 좋을 것 같다. 참고자료 [1] kubernetes.io | Kubernetes Component | 링크 Kubernetes Components A Kubernetes cluster consists of the components that represent the control plane and a set of machines called nodes. kubernetes.io [2] 15단계로 배우는 도커와 쿠버네티스 | 타..

    쿠버네티스(Kubernetes)가 해결하는 과제

    쿠버네티스(Kubernetes)가 해결하는 과제

    2021.03.28 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 란? 이전 글에 이어서 쿠버네티스가 해결하는 과제에 대해서 살펴본다. 도커(Docker)와 쿠버네티스를 이용해 해결할 수 있는 9가지 과제 1. 애플리케이션의 빈번한 출시 대응 쿠버네티스의 롤아웃(roll-out)과 롤백(roll-back) 기능은 새로운 기능을 빈번하게 출시하고 버그 수정을 긴급 투입하는 것과 같은 민감한 작업을 안전하게 자동화해 준다. 정식 운영 중인 서비스의 애플리케이션 컨테이너를 무정지로 교체할 수 있다. 2. 무정지 서비스 쿠버네티스의 자기 회복 기능은 무정지 서비스 운영을 도와준다. 응답이 없어진 컨테이너를 재기동하며, 쿠버네티스 클러스터 내에 지정한 수만큼 컨테이너가 돌도록 관리해 준..

    쿠버네티스(Kubernetes) 란?

    쿠버네티스(Kubernetes) 란?

    쿠버네티스(Kubernetes) '컨테이너(Container)화된 애플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈 소스 플랫폼'이다. 공식 설명: 컨테이너화 된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼 - Kubernetes.io 쿠버네티스의 필요성 컨테이너 운영환경이 필요한 이유에 대해서는 조대협 선생님께서 잘 정리해놓으셔서 블로그 글의 내용을 인용하였다. 컨테이너를 하드웨어나 VM에 배포하여 사용하게 될 경우 적은 수라면 수동으로 직접 배포하면 되지만, 하드웨어와 컨테이너의 수가 많아지면 이 컨테이너를 어디에 배포해야 하는지에 대한 결정이 필요하다. 애플리케이션의 특성에 따라서, 같은 물리 서버에 배포가 되어야 하거나 또는 가용성을 위해서 일부러 다..