DevOps
Istio 정복하기 #4 - 트래픽 관리 - 상
Istio 정복하기 #4 - 트래픽 관리 - 상
2025.03.23다양한 트래픽 제어 기법을 제공하여 마이크로서비스 간의 통신을 보다 효율적이고 안정적으로 관리할 수 있다. 이 중에서 4개를 알아볼 예정이고, 상에서는 Routing과 Traffic Shifting을 알아본다. Routing라우팅은 클라이언트 요청을 올바른 서비스나 서비스의 특정 버전으로 보내는 방식이다. 이것은 새롭게 배포한 버전에 클라이언트가 바로 요청을 보내지 않고, 내부에서 테스트한 후에 요청을 보낼 수 있도록 활용할 수 있다. 이전에 사용한 VirtualService와 DestinationRule을 추가하면 된다. 리소스는 다음과 같이 있다고 가정하자. apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata: name: test-gate..
Istio 정복하기 #3 - Istio Ingress Gateway - 하
Istio 정복하기 #3 - Istio Ingress Gateway - 하
2025.03.20이번에는 Plain TCP와 Ingress Gateway 분리 방법에 대해서 알아보겠다. Plane TCPPlain TCP는 Istio의 서비스 메시에서 TCP 트래픽을 관리하고 제어하는 방법을 의미한다. database (like mysql), mq (like rabbitmq) 등을 expose 할 수 있다. 단 plain TCP를 다룰 때는 istio가 프로토콜의 종류를 알 수 없으므로 retries, circuit breaking, context를 이해해야 하는 기능들은 사용할 수 없다. ingressgateway의 tcp를 보면 아래와 같이 보인다. 31400kubectl get svc istio-ingressgateway -n istio-system \-o jsonpath='{.spec.por..
Istio 정복하기 #2 - Istio Ingress Gateway - 상
Istio 정복하기 #2 - Istio Ingress Gateway - 상
2025.03.20개요Istio Ingress Gateway는 Istio에서 외부 요청을 내부 시스템으로 전달하는 역할을 하는 구성 요소다. 일반적으로 Kubernetes에서 사용되는 Ingress 리소스와 유사한 개념이지만, Istio에서는 더 많은 기능과 flexibility를 제공한다. - 클러스터의 관문 역할- outside → inside traffic의 인입 처리 담당- Security 가 중요함.- 인입을 위한 룰 매칭 등을 처리- 인입 후에는 inside 서비스로 라우팅도 담당 약어는 다음과 같다. gw : gatewayvs : virtual serviceVIP : virtual IP 나는 minikube를 사용하기에 tunnel을 이용해서 외부 진입점을 생성해야 한다. 그러면 {EXTERNAL-IP}:{..
Istio 정복하기 #1 - 기본 개념 정리
Istio 정복하기 #1 - 기본 개념 정리
2025.03.20개요마이크로 서비스 아키텍처로 구성된 서비스가 확장되다 보면, 관리하는 서비스가 많아져 서비스 간의 트래픽, 라우팅 관리가 어려워지는 순간이 찾아오게 된다. 이때 Istio라는 오픈 서비스 메쉬를 도입하면, 상호작용하는 마이크로서비스의 네트워크를 관리하고, 이를 통해 보안, 트래픽 관리, 모니터링 등의 기능을 사용할 수 있다. 따라서 Istio는 애플리케이션 코드와는 독립적으로 이러한 기능을 구현할 수 있도록 도와주며, 개발자는 비즈니스 로직에 집중할 수 있게 해준다. 아키텍처는 다음과 같다. Data Plane Data Plane은 마이크로 서비스와 프록시로 결합된 서비스들로 구성된다. 마이크로 서비스에 배포되어 트래픽을 가로채 모든 트래픽을 통제한다. Data Plane의 Envoy 프록시를 통해서..
Terraform 모듈로 반복 리소스 선언 줄이기
Terraform 모듈로 반복 리소스 선언 줄이기
2024.10.09나는 Terraform(이하 테라폼)으로 cloud의 인프라 리소스를 관리하는 업무를 주로 맡고 있다. 테라폼은 모듈 구조를 지원하는데 활용법이 성숙도에 따라서 많이 달라진다고 느꼈다. 기존에 내가 모듈을 사용하는 방법은 여러 환경에서 환경 변수를 다르게 주입해서 리소스를 만들때 리소스 코드를 줄이기 위함이었다. 하지만 업무를 하다보니 틀은 동일하고 특정한 값만 바뀌는 리소스를 여러 개 생성하야 하는 경우가 많았다. 예를 들어서 서버리스로 서비스를 운영하는 경우 AWS 리소스인 Lambda를 주로 생성하게 된다. 그래서 나는 Lambda가 사용하는 리소스가 공통적으로 사용하는 틀을 모듈을 생성하는 방향을 생각했다. Terraform 구조 구조 자체는 간단하다. 1. 전체 리소스를 관리하는 main...
Monitoring(Prometheus) 정복하기 - 4 (recording rule)
Monitoring(Prometheus) 정복하기 - 4 (recording rule)
2024.04.13recording rule 이란 자주 필요한 표현식이나 계산 비용이 큰 표현식을 미리 계산해서, 그 결과를 별도 시계열 셋으로 저장해 둘 수 있는 기능이다. 즉 성능과 재사용성을 높이기 위해서 사용할 수 있다. 예를 들어보자. 원하는 시계열 데이터를 만들기 위해서 5개의 시계열 데이터가 들어가고, 하나의 프롬 쿼리당 1의 리소스가 든다고 가정해 보자. -> 데이터를 요청할 때마다 5의 리소스가 들어가게 된다. 반면에 recording rule을 사용하면, 처음에 5의 리소스가 들어가게 되고, 해당 값을 저장하는 시계열 데이터가 만들어진다. -> 데이터를 요청할 때마다 1의 리소스가 들어가게 된다. 여기서 프롬 쿼리가 복잡하다면 더 많은 차이가 나타나게 된다. 물론 별도의 시계열 데이터로 저장해서, 저장 ..