본문 바로가기
반응형

service mesh7

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 트래픽 Retry, Timeout linkerd는 ServiceProfile이라는 CRD를 사용하여 경로별 Retry, Timeout 설정을 할 수 있다.  Retry서비스가 클라이언트의 요청을 받아 처리하는데, 요청이 실패할 경우 다시 보내는 기능이다.가끔 요청이 실패할 경우 다시 보내어 클라이언트 기준 요청 성공률을 높일 수 있다. 하지만 클라이언트가 과도하게 재시도를 수행하면 서비스는 이를 처리하지 못하고 과부하 상태 및 잠재적인 장애 증상을 일으킬 수 있음에 주의해야 한다. Timeout서비스의 요청 처리 시간이 일정 시간 이상 걸릴 경우 해당 요청을 종료하는 기능이다. 클라이언트와 서버와의 통신이 끊어져 있거나 지연되고 있는 상황에서 클라이언트가 무한정 기다리는 것을 방지할 수 있다. 하지만 처리 중인 요청을 종료하여 문제를 일.. 2023. 4. 19.
Linkerd mTLS 통신 검증 기본적으로 Linkerd는 "linkerd.io/inject: enabled"에 의해 사이드카 proxy가 주입되면 주입된 pod 간의 모든 TCP 트래픽은 자동으로 mTLS 통신을 하게 된다.mTLS란?- TLS는 클라이언트와 서버 간의 통신을 한 방향으로 인증하여 통신을 보호하지만  mTLS는 클라이언트와 서버 간의 통신을 양 방향으로 상호 인증하여 통신을 보호한다. 즉, mTLS는 클라이언트와 서버 간의 통신을 양방향으로 암호화하여 더욱 안전한 통신을 제공한다. mTLS는 통신하는 각 컴포넌트마다 인증서와 비밀 키가 필요하며, Linkerd는 자동으로 인증서 및 비밀 키를 관리하고 이를 기반으로 서로 간의 인증과 암호화를 수행합니다. 이를 통해, 컨테이너 간의 안전한 통신을 보장하고 보안 상의 문제.. 2023. 4. 5.
Linkerd 사이드카 주입 proxy-injector는 Kubernetes의 Admission Controller 중 하나로, Kubernetes API Server가 Pod 생성 요청을 받으면, 이 요청을 가로채서 Pod 생성 시 자동으로 Linkerd 프록시 컨테이너를 함께 생성하고, 이를 통해 모든 네트워크 트래픽을 프록시를 거쳐서 보낼 수 있도록 설정한다. 이렇게 생성된 Pod는 Linkerd 프록시 컨테이너가 사이드카 패턴으로 추가되어, 네트워크 트래픽을 중개하는 역할을 수행하게 된다. 이번 포스팅에서는 Linkerd-proxy 사이드카 컨테이너를 주입하여 pod끼리 통신하는 실습을 다룬다. 실습 Linkerd proxy 사이드카가 주입되기 위해서는 Pod annotations에 "linkerd.io/inject: ena.. 2023. 4. 5.
Linkerd 대시보드 ID, Password 변경 Linkerd 대시보드에 접근하려면 ID, Password 정보가 담긴 Secret을 생성하고, Ingress의 auth-secret을 이용하여 Ingress-nginx-controller를 통해 접근해야 한다. 이번 글에서는 기존의 ID, Password를 변경하기 위해 htpasswd 명령도구를 사용하여 ID, Password 저장 파일을 만들고 이를 이용하여 새로운 Secret을 생성하는 실습을 다룬다. htpasswd란? - 웹 서버의 인증 시스템에서 사용되는 유저 ID, Password 를 관리하는 도구이다. 먼저 htpasswd 명령을 사용하기 위해 패키지를 설치해야 한다. 패키지 설치 CentOS $ yum install httpd-tools Ubuntu $ apt install apache.. 2023. 4. 5.
Linkerd 대시보드 구성 Linkerd는 추가 설정을 통해 대시보드 화면을 Web UI로 볼 수 있다.대시보드를 구축하면 서비스 메시를 더욱 효율적으로 관리하고 모니터링할 수 있게 된다. 이를 통해 서비스의 성능 개선 및 문제 해결에 도움이 될 수 있다. 이번 실습에서는 kubernetes ingress-nginx-controller와 linkerd-viz Helm 차트를 사용한다.실습 전 [ Linkerd 설치 ] 작업을 먼저 진행해야 한다. Linkerd 설치Linkerd 설치는 linkerd cli와 Helm을 이용하는 방법이 있다. production 환경에서 Helm차트를 이용하여 설치하는 것을 권장한다. ​ 해당 글에서는 Linkerd에서 사용하는 인증서를 자동으로 발급하고 관리하wlsdn3004.tistory.com.. 2023. 4. 4.
728x90
반응형