본문 바로가기
728x90
반응형

Service Mesh/Linkerd13

Linkerd 자동 Canary 배포 (with Flagger, Prometheus) Canary 배포는 새로운 버전의 애플리케이션을 일부 사용자에게 먼저 배포하고, 이후에 전체 사용자에게 배포하는 전략이다. 이를 통해 새로운 버전에 대한 안정성과 성능을 검증할 수 있다. Flagger는 Kubernetes에서 Canary 배포를 자동화하는 툴 중 하나이다. 서비스에 대한 트래픽을 모니터링하고, Canary 배포를 위한 새로운 버전의 Pod를 배포한다. 그 후, 일부 사용자의 트래픽을 새로운 버전의 Pod로 전환하고, 이후 일정 시간 동안 이를 모니터링한다. 만약 새로운 버전의 Pod에서 에러나 불안정한 동작이 발생하면, 자동으로 롤백을 수행한다.또한 Prometheus를 사용하여 서비스의 지표(metric)를 수집하고, 이를 기반으로 Canary 배포를 수행한다. 실제 트래픽 분할은 L.. 2023. 4. 29.
Linkerd + Prometheus 통합 구성 Linkerd-viz는 기본적으로 Prometheus와 함께 설치된다. 하지만 이미 기존에 운영 중인 Prometheus가 있다면, 이를 통합하여 Linkerd-viz 대시보드에 표시되는 메트릭 데이터를 수집할 수 있다. 본 글에서는 외부 Prometheus와 Linkerd 대시보드를 통합하는 실습을 다룬다. 전제 조건- [Prometheus + Grafana 설치]- [Linkerd 설치]- [Linkerd 대시보드 구성]- 쿠버네티스 클러스터 실습 절차 1. Likerd 메트릭 수집을 위한 Prometheus 설정 2. Linkerd-viz 설정 3. 문제 해결 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스  실습" data-ke-ty.. 2023. 4. 29.
Linkerd 멀티클러스터 통신 구성 Linkerd MultiCluster는 여러 Kubernetes 클러스터를 하나의 서비스 메시로 연결하여, 클러스터 간 안전하고 신뢰성 높은 통신을 가능하게 한다. 이를 통해 서로 다른 클러스터에 있는 Pod 간의 통신이 가능해지며, 고가용성, 확장성, 격리 등 다양한 이점을 제공한다.  멀티클러스터 통신 흐름은 아래와 같다. 본 글에서는 멀티클러스터 간 통신 및 트래픽 흐름을 실습을 통해 확인해 보려 한다. 실습 절차 1. 공유 Trust anchor를 위한 인증서 업데이트 2. 멀티클러스터 통신을 위한 linkerd gateway 구성 3. 서비스 내보내기 4. 멀티클러스터 통신 5. 구간별 패킷 흐름 검증 " data-ke-type="html">HTML 삽입미리보기할.. 2023. 4. 28.
Linkerd 서킷 브레이킹 (Circuit Breaking) 서킷 브레이킹이란?서킷 브레이킹은 분산 시스템에서 서비스 간의 의존성과 가용성을 보장하기 위한 중요한 패턴 중 하나이다. 일반적으로 분산 시스템에서는 다양한 서비스들이 서로에게 의존하면서 동작한다. 이때, 하나의 서비스의 장애가 전체 시스템에 영향을 미칠 수 있기 때문에 각 서비스의 상태를 모니터링하고, 장애가 발생한 서비스에 대해서는 다른 대체 서비스를 호출하도록 구성하게 된다. 서킷 브레이커는 이러한 대체 서비스 호출을 처리하는 데에 있어, 서비스 간 연결을 관리하는 역할을 담당한다. 서비스 장애 상황 시 호출이 지연 또는 실패할 경우 서킷 브레이커는 장애 서비스를 일정 기간 동안 엔드포인트에서 제거하고 서비스의 상태가 정상으로 회복되기를 기다린다. 이때, 장애 서비스에 대한 호출은 다른 서비스로 라.. 2023. 4. 19.
Linkerd 버전 업그레이드 이번 포스팅에서는 Linkerd 2.12.4 -> 2.13.1로 업그레이드하는 절차를 기록하려 한다. 버전이 올라가면서 Linkerd에서 사용하는 resource의 이름이나 스펙이 바뀌거나 한다면 이에 맞게 Helm values.yaml 파일을 다시 작성해야 할 수도 있고, Linkerd와 EKS 등 버전 호환성 문제를 고려해야 하는 상황이 필요할 수도 있다. 이 모든 내용은 release node를 통해 확인할 수 있기 때문에 먼저 release notes를 꼼꼼히 확인해야 한다. 아래는 공식 홈페이지에서 제공하는 업그레이드 시 주의사항이다. 다행히 2.12 -> 2.13 업그레이드 시 특별한 추가 Step은 없다는 걸 확인할 수 있다. 업그레이드 관련 공식 홈페이지 참조: https://linkerd.. 2023. 4. 19.
Linkerd 트래픽 Retry, Timeout linkerd는 ServiceProfile이라는 CRD를 사용하여 경로별 Retry, Timeout 설정을 할 수 있다.  Retry서비스가 클라이언트의 요청을 받아 처리하는데, 요청이 실패할 경우 다시 보내는 기능이다.가끔 요청이 실패할 경우 다시 보내어 클라이언트 기준 요청 성공률을 높일 수 있다. 하지만 클라이언트가 과도하게 재시도를 수행하면 서비스는 이를 처리하지 못하고 과부하 상태 및 잠재적인 장애 증상을 일으킬 수 있음에 주의해야 한다. Timeout서비스의 요청 처리 시간이 일정 시간 이상 걸릴 경우 해당 요청을 종료하는 기능이다. 클라이언트와 서버와의 통신이 끊어져 있거나 지연되고 있는 상황에서 클라이언트가 무한정 기다리는 것을 방지할 수 있다. 하지만 처리 중인 요청을 종료하여 문제를 일.. 2023. 4. 19.
Linkerd 권한 부여 정책 Linkerd는 권한 부여 정책을 사용하여 mesh pod에 트래픽을 제어할 수 있다. Linkerd에서는 두 가지 메커니즘을 사용한다.Kubernetes annotation을 이용하여 네임스페이스 및 워크로드 레벨에서 설정할 수 있는 기본 정책.- 특정 네임스페이스에서 허용되지 않은 트래픽을 차단하거나, 특정 워크로드에서만 제한된 트래픽을 허용하는 등의 제어를 할 수 있다.Linkerd의 Custom Resource Definition(CRD)를 통해 특정 포트, 경로, 워크로드 등에 대해 세분화된 정책 지정.- 특정 경로에서만 특정 유저에게 트래픽을 허용하거나, 특정 포트로 전송되는 트래픽의 유형을 제한하는 등의 제어를 할 수 있다. Default Policypod에 Linkerd-proxy 사이드카.. 2023. 4. 5.
728x90
반응형