본문 바로가기
728x90

DevOps43

ArgoCD App of Apps 패턴 App of Apps은 ArgoCD에서 제안하는 ArgoCD Application 관리 방식이다. 여러개의 클러스터를 가지고 있으며 클러스터에 많은 Application을 설치하려는 운영자를 대상으로 소개하는 패턴이다. 개념ArgoCD Application은 Git에 있는 매니페스트를 주기적으로 확인하여 변경사항이 발생한다면 지정된 쿠버네티스 클러스터에 반영한다.Git에 저장된 매니페스트는 쿠버네티스 리소스를 나타내는 yaml 파일이며, 여기에는 Deployment, Service, CronJob 등 클러스터에 지원하는 쿠버네티스 API는 모두 될 수 있다. 마찬가지로 ArgoCD Application도 커스텀 리소스이기 때문에 쿠버네티스 API 중에 하나이다. 이 특성을 잘 이해한다면 ArgoCD Ap.. 2025. 1. 26.
쿠버네티스에서의 고가용성 (High Availability) High Availability고가용성(High Availability) 은 시스템 내의 어떤 구성 요소에 장애가 발생하더라도 실패나 다운타임 없이 시스템을 지속적으로 운영할 수 있는 능력을 의미한다. 보통 고가용성을 99%, 99.9% 와 같은 비율로 표현하는데 99.999%의 매우 높은 가용성을 의미하는 fine-nines availability 라는 가용성 표준이 있으며, 이 가용성을 유지하려면 1년에 약 5분 15초 이하의 다운타임을 유지해야 한다. 고가용성 시스템을 잘 구축하려면 시스템을 잘 설계해야 하며 철저한 테스트를 거쳐야 한다. 시스템의 구성 요소가 서비스 중단 발생 시에도 시스템이 지정된 가용성 표준을 유지할 수 있도록 설계해야 한다. 고가용성은 어떻게 작동하나?시스템을 항상 100%로.. 2025. 1. 26.
istio traffic 관리 (2) [Gateway] istio에서 mesh에 대한 인바운드/아웃바운드 트래픽을 관리하기 위해 Gateway를 사용하며, 어떤 트래픽이 mesh에 들어오거나 나갈지를 지정할 수 있다. Gateway의 구성은 애플케이션과 함께 실행되는 사이드카의 envoy proxy가 아닌 mesh의 엣지에서 실행되는 독립적인 envoy proxy에 적용된다. 쿠버네티스의 ingress API와 같이 시스템으로 들어오는 트래픽을 관리하는 메커니즘과 다르게, istio gateway를 사용하면 강력하고 유연한 트래픽 라우팅 기능을 사용할 수 있다. istio의 Gateway를 사용하면 노출시킬 포트, TLS 설정 등과 같은 L4~L6 로드밸런싱 속성을 구성할 수 있기 때문이다. 그리고 L7 트래픽 라우팅 룰은 Gateway에 직접 추가하지 않고.. 2025. 1. 13.
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.
728x90