본문 바로가기
728x90

DevOps49

istio traffic 관리 (1) [VirtualService & DestinationRule] istio의 트래픽 라우팅 룰은 서비스 간 트래픽과 API 흐름을 쉽게 제어할 수 있게 한다. istio는 서킷 브레이커, 타임아웃, retry와 같은 서비스 레벨 수준의 기능 구성을 간단하게 하고, 비율 기반 트래픽 분할을 활용하여 A/B 테스팅, Canary rollout 등을 쉽게 할 수 있다. 또한, 종속 서비스나 네트워크의 오류에 대해 애플리케이션을 보다 강력하게 만드는 데 도움이 되는 out-of-box failure recovery 기능을 제공한다. istio의 트래픽 관리 모델은 서비스와 함께 배포되는 envoy-proxy에 의존한다. 메쉬에서 주고받은 모든 트래픽은 envoy를 거치기 때문에 서비스를 변경하지 않고도 메쉬간 트래픽을 쉽게 전달하고 제어할 수 있다. istio에서 제공하는 .. 2025. 1. 12.
istio 소개 및 설치 istio는 기존 분산 애플리케이션에 투명하게 레이어링되는 오픈소스 서비스 메쉬이다. istio의 강력한 기능은 서비스를 보호하고 연결하고 모니터링하는 균일하고 효율적인 방법을 제공한다. istio를 사용하면 애플리케이션 코드를 거의 변경하지 않아도 아래 기능들을 사용할 수 있다.mTLS, 강력한 ID 기반 인증 및 권한 부여를 통해 클러스터에서 안전한 서비스간 통신을 제공한다.HTTP, gRPC, WebSocket, TCP 트래픽에 대한 로드밸런싱 기능 제공풍부한 라우팅 규칙, retry, failover, fault injection 을 통한 트래픽 세부 제어접근 제어, 속도 제한, rate limits을 지원하는 플러그형 정책을 구성할 수 있다.클러스터를 오가는 모든 트래픽에 대한 자동 메트릭, 로.. 2025. 1. 12.
Kubernetes HPA (파드 오토스케일링) [2] - 동작 제어 이전 장에서는 HorizontalPodAutoscaler에 대한 기본적인 내용에 대해 알아보았다. HorizontalPodAutoscaler에 대해 처음 들어보았다면 아래 글을 먼저 읽어보는 것이 좋다.  2025.01.05 - [DevOps/Kubernetes] - Kubernetes HPA (파드 오토스케일링) [1] - 기초 Kubernetes HPA (파드 오토스케일링) [1] - 기초HPA (Horizontal Pod Autoscaler)는 Deployment나 StatefulSet 등의 워크로드의 레플리카 갯수를 수요에 맞게 자동으로 스케일링하도록 한다. 수평 스케일링은 레플리카를 늘리고 줄이는 것을 의미한다. 통상beer1.tistory.com   autoscaling/v2 버전의 Horiz.. 2025. 1. 5.
Kubernetes HPA (파드 오토스케일링) [1] - 기초 HPA (Horizontal Pod Autoscaler)는 Deployment나 StatefulSet 등의 워크로드의 레플리카 갯수를 수요에 맞게 자동으로 스케일링하도록 한다. 수평 스케일링은 레플리카를 늘리고 줄이는 것을 의미한다. 통상적으로 레플리카를 늘리는 것을 scale-out, 줄이는 것을 scale-in 이라고 부른다. 수직 스케일링이라는 것도 있는데, 이는 레플리카를 조절하는 것이 아닌 CPU 및 메모리 등 서버의 스펙을 늘리거나 줄이는 것을 의미한다. (이는 scale-up / scale-down 으로 불린다.)HPA 동작 방식쿠버네티스에는 HPA를 지원하기 위해 HorizontalPodAutoscaler API와 이에 대응하는 컨트롤러를 제공한다. HorizontalPodAutoscale.. 2025. 1. 5.
Kubernetes Scheduling - Node Affinity Affinity를 사용하여 파드를 스케줄링할 노드를 찾을 때의 제약조건을 정의할 수 있다. Affinity를 사용하면 이전 시간에 언급한 nodeSelector보다 더 풍부한 방식으로 파드를 실행시키는 노드의 조건을 설정할 수 있다. Affinity에는 크게 NodeAffinity와 Pod간 Affinity가 있다. 이번 글에서는 Node Affinity에 대해 알아보자.NodeAffinityNode Affinity는 node label를 기반으로 파드를 스케줄링할 수 있는 노드를 제한할 수 있다. Affinity는 파드의 Spec이기 때문에 Affinity를 사용하면 파드가 노드를 선택하는 개념으로 볼 수 있다. Scheduler에서는 NodeAffinity 플러그인에서 NodeAffinity에 대한 .. 2024. 5. 2.
Kubernetes Scheduling 소개 및 NodeSelector Kubernetes Scheduling쿠버네티스에서 스케줄링은 파드를 실행할 쿠버네티스 클러스터에 있는 적절한 노드를 찾는 과정을 말한다. 기본적으로 쿠버네티스에서 스케줄링은 컨트롤 플레인에 있는 kube-scheduler라는 컴포넌트가 그 기능을 담당한다. 물론 쿠버네티스의 스케줄링 메커니즘을 잘 이해한다면 자신만의 커스텀 스케줄러를 구현하는 것도 가능하다. kube-schedulerkube-scheduler는 쿠버네티스의 컨트롤 플레인의 구성요소로, 쿠버네티스의 기본 스케줄러이다 kube-scheduler는 새로 생성되었지만 아직 노드에 스케줄링되지 않은 파드를 실행하기 위해 최적의 노드를 선택한다. kube-scheduler에서 파드를 스케줄링을 할 때는 기본적으로 총 12단계를 거치게 된다. 그 .. 2024. 5. 1.
Jenkins pipeline 소개 및 Java 애플리케이션 CI/CD pipeline 작성 Jenkins pipeline은 CI / CD 파이프라인을 구현하고 Jenkins에 통합하는 것을 지원하는 플러그인 모음이다. Jenkins Pipeline은 Pipeline 도메인별 언어 (DSL)을 통해 간단한 파이프라인부터 복잡한 파이프라인을 코드로 모델링할 수 있는 확장 가능한 도구들을 제공한다. 즉, Jenkins pipeline에서 제공하는 DSL을 활용하여 애플리케이션 CI/CD 파이프라인을 포함한 여러가지 자동화 파이프라인 기능을 구현할 수 있다. Jenkins Pipeline의 정의 부분은 jenkinsfile 이라고 불리는 텍스트 파일에 작성된다. 이 파일은 Git과 같은 소스코드 레포지토리에서 관리할 수도 있다. Jenkinsfile은 pipeline as code의 기초로써, 파이프.. 2024. 2. 4.
Jenkins 소개 및 Kubernetes에 설치 Jenkins Jenkins는 소프트웨어 빌드, 테스트 및 배포와 관련된 모든 종류의 작업을 자동화 하는 데 사용하는 독립형 오픈소스 자동화 서버이다. 보통은 Jenkins를 CI / CD 도구로 잘 알려져 있으며, 회사와 같이 여러 조직에서 사용하기 좋다. 2023.11.04 - [DevOps/CI.CD] - CI / CD란 무엇일까? CI / CD란 무엇일까? CI / CD 개발자가 애플리케이션을 개발하고나면 애플리케이션을 실제 서버로 배포해야 한다. 보통 배포를 할 때는 애플리케이션을 빌드하고, 작성한 테스트코드를 돌려서 테스트를 진행한 후 모 beer1.tistory.com Jenkins 기능 Jenkins의 기능은 여러가지가 있다. Jenkins Job을 사용하여 스크립트 실행 Jenkins J.. 2023. 11. 7.
CI / CD란 무엇일까? CI / CD 개발자가 애플리케이션을 개발하고나면 애플리케이션을 실제 서버로 배포해야 한다. 보통 배포를 할 때는 애플리케이션을 빌드하고, 작성한 테스트코드를 돌려서 테스트를 진행한 후 모든 테스트가 통과되면 빌드 결과물을 패키징한 후 실제 서버로 배포를 하게 된다. Java 애플리케이션의 경우, 먼저 빌드를 해서 외부 의존성 라이브러리를 설치하고, 코드를 자바 클래스파일로 컴파일한다. 그리고 테스트 과정에는 애플리케이션 유닛 테스트를 마친 후 패키지 단계에서는 .jar 파일이나 .war 파일으로 패키징하거나 컨테이너로 배포하는 경우 컨테이너 이미지를 빌드한다. 그 다음 실제 서버로 배포를 하게 된다. 그런데 이러한 일련의 과정들을 새로운 기능을 추가할 때마다 해야하므로 애플리케이션 배포를 하는 것이 여.. 2023. 11. 4.
728x90