주녁, DevNote
article thumbnail
[다.인.서] Dive into Service Mesh | Service Mesh의 구성 요소와 동작 과정
DevOps 2024. 5. 25. 22:04

개요서비스 기업 채용 공고에서 쉽게 보이는 우대사항들이 있다.대용량 트래픽 처리 경험, 서비스 메시, 무중단 배포 등등실제 서비스를 다루면서 배우면 좋겠지만, 그 경험도 쉽게 얻을 수 있는 경험은 아니다.하지만 나에겐 인터넷과 책이라는 세상의 선배가 있으니 간접 경험을 해보고자 (+ 약점 극복)이 시리즈를 작성하게 되었다.목표Service Mesh는 Interface의 구현체만 있으면 동일한 동작을 수행할 수 있다.따라서 구성 요소는 내부 구현에 따라 다르지만 동작은 동일하다.오늘은 대표적으로 사용되는 Istio를 기준으로 Service Mesh가 어떻게 구성되고 동작하는지 알아보도록 하자.(이 글은 도서 이스티오 첫걸음을 참고하여 작성하였습니다.)여정Service Mesh의 구성요소 Service Me..

article thumbnail
[다.인.서] Dive into Service Mesh | Cloud Native와 Service Mesh
DevOps 2024. 5. 12. 16:35

개요서비스 기업 채용 공고에서 쉽게 보이는 우대사항들이 있다.대용량 트래픽 처리 경험, 서비스 메시, 무중단 배포 등등실제 서비스를 다루면서 배우면 좋겠지만, 그 경험도 쉽게 얻을 수 있는 경험은 아니다.하지만 나에겐 인터넷과 책이라는 세상의 선배가 있으니 간접 경험을 해보고자 (+ 약점 극복)이 시리즈를 작성하게 되었다.목표서비스 메시(Service Mesh)는 분산 시스템에서 서비스 간 통신과 관리를 효과적으로 처리하기 위한 도구이다.서비스 메시가 무엇이고 어떨 때 사용하면 좋은 지 살펴보자.(이 글은 도서 이스티오 첫걸음을 참고하여 작성하였습니다.)여정Application과 Infra가 분리되어야 하는 이유 현대 Application은 Micro Service Architecture가 등장함에 따라..

article thumbnail
[쿠.짤] 쿠버네티스 짤팁 | 컨테이너는 결합할 수 있다(Init, Sidecar, Ambassador)
DevOps 2024. 1. 23. 21:06

개요 “하나의 컨테이너에는 하나의 책임만 가지고 있어야 한다.”  Kubernetes는 컨테이너를 병렬로 Pod Spec에 명시함으로써 서로 역할을 분리하여 동작하도록 할 수 있다.이를 통해 비즈니스 로직 이외의 신경쓸 부분을 다른 컨테이너에 맡길 수 있다.목표컨테이너를 결합할 수 있는 다양한 Kubernete 문법에 대해 학습한다.컨테이너 결합으로 표현할 수 있는 다양한 예제를 학습한다.여정초기화 컨테이너초기화 컨테이너는 Pod의 Application 컨테이너가 실행 전 동작하는 특수한 컨테이너이다.일반적인 컨테이너와 비슷한 동작을 하지만 다음 두 가지 조건을 달성하기 위해 작성된다.초기화 컨테이너는 항상 완료를 목표로 실행된다.각 초기화 컨테이너는 다음 초기화 컨테이너가 시작 전에 성공적으로 완료되어..

article thumbnail
[쿠.짤] 쿠버네티스 짤팁 | Pod 배치는 신중하게! (Schedule Process와 Affinity)
DevOps 2024. 1. 14. 11:10

개요클러스터에 한 번 배치된 Pod는 Node의 상황에 따라 다시 배치되지 않는다.이 말은 곧 Pod/Node를 선택하는 스케줄링 전략은 신중해야 한다는 뜻이다.목표Pod가 원하는 적절한 Node에 배치될 수 있도록 하는 조건을 이해한다.다양한 Pod 배치 전략을 통해 Schedule Process와 Affinity에 대해 알아본다.여정Scheduling Process Pod가 배치될 Node를 선택하는 데는 아래와 같은 과정을 거친다.스케줄이 가능한 Node 중에서Pod의 필터링 조건을 통과하고우선순위 정렬 시 가장 높은 Node 선택위 조건을 한번 더 차근차근 살펴보자  스케줄이 가능한 Node Node는 기본적으로 할당 가능한 Pod의 수가 정해져 있다.일반적으로 110개(On-premise, GC..

article thumbnail
[쿠.짤] 쿠버네티스 짤팁 | 정상 상태와 수명 주기를 이해하자! (Probe와 SIGKILL)
DevOps 2024. 1. 6. 03:00

개요버그 없는 소프트웨어를 작성하는 것은 불가능하다.따라서, 장애가 발생하면 이를 빠르게 감지하고 해결하는 것이 필연적인 작업이 된다.목표정상 상태를 점검하는 3가지 방법을 이해한다.Pod와 Container가 생성/종료되는 이벤트를 파악하고 이해한다.여정쿠버네티스에서는 어플리케이션의 상태를 점검하는 여러가지 방법을 지원한다.이를 probe라고 부르며, 성공(Success), 실패(Failure), 미확인(Unknown)으로 구분하여 진단한다.대표적으로 3가지 방법을 소개한다.Liveness ProbeLiveness Probe는 컨테이너를 재시작하여 장애를 복구하기 위한 점검 방법이다.exec : 명령 성공 여부로 점검한다Pod 실행 후 첫 30초 간은 /tmp/healthy 파일이 존재하므로 성공 처리..

article thumbnail
[쿠.짤] 쿠버네티스 짤팁 | KinD로 Local Kubernetes 구축하기
DevOps 2024. 1. 3. 22:43

개요DevOps 관련 작업을 할 때면, 운영중인 클러스터에 반영하기 선뜻 겁나는 작업들이 있다.그렇다고 Local 개발 환경에 적용하자니 실제 환경과 비슷하게 Node를 여러개 만들기 어렵기도 하다.이럴 때 사용할 수 있는 좋은 프로젝트가 있어서 같이 학습해보고자 한다.목표KinD(Kubernetes in Docker)의 특징과 사용 이유에 대해 이해한다.Kind를 이용한 On-Premise 클러스터를 구축한다.여정KinD가 무엇인가요?kind – Initial design (k8s.io)"Kubernetes IN Docker"의 약자로, Kubernetes 클러스터를 로컬 환경에서 간편하게 생성하고 관리하기 위한 도구Docker 컨테이너 내에서 Kubernetes 노드를 실행하여 클러스터를 구성왜 Ki..

article thumbnail
[쿠.짤] 쿠버네티스 짤팁 | 자원 요구사항을 정의하자! (QoS, Priority Class, Resource Quota, LimitRange)
DevOps 2023. 12. 22. 00:28

개요쿠버네티스를 사용하면서 마주치는 다양한 상황이 발생한다.이에 따라 적용할 수 있는 여러가지 패턴과 대응할 수 있는 옵션들을 알아본다.목표쿠버네티스 Node의 자원에 따라 발생할 수 있는 다양한 상황을 알아본다.Node가 자원의 압박을 받을 때 사용할 수 있는 리소스와 옵션들을 학습한다.여정Node가 사용하는 컴퓨팅 자원 2가지압축 불가능 자원 : CPU, 네트워크 대역폭 → 많아지면 병목 현상이 발생한다.압축 불가능 자원 : 메모리 → 많아지면 컨테이너가 죽는다QoS(Quality of Service)kubelet이 Node의 안정성을 유지하기 위해 사용 가능한 컴퓨팅 자원을 조절하는 기능Best-Effort(최선)request, limit 자원 요구 사항을 가지고 있지 않은 Pod자원이 부족할 때 ..

article thumbnail
코드로 클러스터 구축하기 - (4) GitOps 적용
DevOps 2023. 8. 12. 16:33

개요 이 시리즈는 코드로 인프라를 구축하는 IaC(Infrastructure as Code)를 이해하기 위해 작성했다. AWS의 EKS 클러스터를 코드로 구축하고 ArgoCD를 이용해 클러스터 내 어플리케이션을 배포한다. 인프라 구성 방법을 개개인의 노하우와 숙련도가 아닌 자산으로 코드로 남길 수 있도록 한다. 목표 Gitops의 개념과 필요성에 대해 알아본다 Gitops를 통해 클러스터 내 환경을 빠르게 구축하는 방법을 알아본다. 여정 이 글에서는 완전히 실행 가능한 코드를 다루고 있지 않습니다! 대신 충분한 힌트는 드리고 있으니 양해 부탁드립니다! 클러스터 생성하면 끝 아닌가요? 아니다! 어플리케이션 자동 배포를 신경쓰지 않는다면 아래와 같은 상황에 직면하게 될 것이다. 클러스터가 1개라면? → 어플..

article thumbnail
코드로 클러스터 구축하기 - (3) 클러스터 생성
DevOps 2023. 8. 10. 21:41

개요 이 시리즈는 코드로 인프라를 구축하는 IaC(Infrastructure as Code)를 이해하기 위해 작성했다. AWS의 EKS 클러스터를 코드로 구축하고 ArgoCD를 이용해 클러스터 내 어플리케이션을 배포한다. 인프라 구성 방법을 개개인의 노하우와 숙련도가 아닌 자산으로 코드로 남길 수 있도록 한다. 목표 EKS를 생성하는 다양한 방법에 대해 알아본다. EKS 클러스터의 필수요소와 권장요소를 알아본다. Terraform으로 EKS 클러스터를 생성해본다. 여 이 글에서는 완전히 실행 가능한 코드를 다루고 있지 않습니다! 대신 충분한 힌트는 드리고 있으니 양해 부탁드립니다! EKS 클러스터 필수 요소 : 인프라 레벨 클라우드에서 클러스터를 생성하는데는 온프레미스 환경보다 다른 설정이 필요하다 다음..

article thumbnail
코드로 클러스터 구축하기 - (2) 네트워크 생성
DevOps 2023. 8. 10. 18:49

개요 이 시리즈는 코드로 인프라를 구축하는 IaC(Infrastructure as Code)를 이해하기 위해 작성했다. AWS의 EKS 클러스터를 코드로 구축하고 ArgoCD를 이용해 클러스터 내 어플리케이션을 배포한다. 인프라 구성 방법을 개개인의 노하우와 숙련도가 아닌 자산으로 코드로 남길 수 있도록 한다. 목표 IaC 도구인 Terraform의 구조와 동작방식을 이해한다. Terraform으로 기본적인 AWS 네트워크를 생성해본다. 여정 인프라를 코드로 작성하는 Terraform 사전 준비물 Terraform 설치(Install | Terraform | HashiCorp Developer) AWS CLI 설치(AWS Command Line Interface (amazon.com)) AWS CLI로 ..