플젝 구현내용 정리

사이드카 패턴을 적용한 Service Mesh (Envoy Proxy) 적용기

짱구네 2024. 9. 3. 23:45
728x90
반응형

적용 배경:
SI 프로젝트를 수행 중, 마이크로서비스 아키텍처를 활용한 Envoy Proxy 적용하기.

각 서비스는 독립적으로 배포되고, 서로 통신해야 및 서비스 간의 통신을 효율적으로 관리하고, 보안 및 모니터링을 강화하기 위해서 보통은 Service Mesh AWS에서는 App Mesh를 적용한다.

 

사이드카 패턴 도입:
서비스 메시를 구현하기 위해 사이드카 패턴을 사용했다. 각 마이크로서비스 인스턴스 옆에 Datadog Agent 컨테이너를 배치하여, 이 에이전트가 서비스 간의 통신 로그를 수집하고 Datadog 서버로 전송하도록 구현하였다.

 

로그 수집 및 중앙 관리:

  1. Datadog Agent 설정: 각 Datadog Agent 컨테이너는 서비스 간의 모든 트래픽을 가로채고, 이를 로깅하도록 설정.
    에이전트는 요청 및 응답의 메타데이터와 페이로드를 로그로 남겼다.
  2. 로그 포워딩: Datadog Agent 컨테이너는 수집된 로그를 Datadog 서버로 포워딩수행. 이를 위해 Datadog의 로그 수집 기능을 사용.
  3. 중앙 로그 관리: Datadog 서버는 수집된 로그를 인덱싱 하고, 검색 및 시각화할 수 있도록 했다.
    Datadog 대시보드를 사용하여 로그를 시각화하고, 서비스 간의 통신 상태를 모니터링하도록 했다.

구현 예시:

# Datadog Agent 설정 예시 (datadog-agent.yaml)
apiVersion: v1
kind: ConfigMap
metadata:
  name: datadog-agent
  namespace: default
data:
  datadog.yaml: |-
    api_key: <YOUR_DATADOG_API_KEY>
    logs_enabled: true
    logs_config:
      container_collect_all: true
# Datadog Agent 사이드카 컨테이너 설정 예시 (deployment.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-service
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-service
  template:
    metadata:
      labels:
        app: my-service
    spec:
      containers:
      - name: my-service
        image: my-service-image
        ports:
        - containerPort: 8080
      - name: datadog-agent
        image: datadog/agent:latest
        env:
        - name: DD_API_KEY
          valueFrom:
            secretKeyRef:
              name: datadog-secret
              key: api-key
        volumeMounts:
        - name: datadog-config
          mountPath: /etc/datadog-agent
      volumes:
      - name: datadog-config
        configMap:
          name: datadog-agent

결과:
이러한 설정을 통해 각 서비스의 통신 로그를 중앙에서 효율적으로 수집하고 관리할 수 있었다.

이를 통해 서비스 간의 통신 문제를 신속하게 파악하고 해결할 수 있었으며, 보안 및 성능 모니터링도 강화되었다.

+-------------------+       +-------------------+       +-------------------+
|                   |       |                   |       |                   |
|  Service A Pod    |       |  Service B Pod    |       |  Service C Pod    |
|                   |       |                   |       |                   |
|  +-------------+  |       |  +-------------+  |       |  +-------------+  |
|  |             |  |       |  |             |  |       |  |             |  |
|  |  Service A  |  |       |  |  Service B  |  |       |  |  Service C  |  |
|  |             |  |       |  |             |  |       |  |             |  |
|  +-------------+  |       |  +-------------+  |       |  +-------------+  |
|                   |       |                   |       |                   |
|  +-------------+  |       |  +-------------+  |       |  +-------------+  |
|  |             |  |       |  |             |  |       |  |             |  |
|  | Datadog     |  |       |  | Datadog     |  |       |  | Datadog     |  |
|  | Agent       |  |       |  | Agent       |  |       |  | Agent       |  |
|  |             |  |       |  |             |  |       |  |             |  |
|  +-------------+  |       |  +-------------+  |       |  +-------------+  |
|                   |       |                   |       |                   |
+-------------------+       +-------------------+       +-------------------+
        |                           |                           |
        +---------------------------+---------------------------+
                                    |
                                    v
                           +-------------------+
                           |                   |
                           |   Datadog Server  |
                           |                   |
                           +-------------------+

 

- 끝 -

728x90
반응형