티스토리 뷰
반응형
사이드카 컨테이너
멀티컨테이너 디자인 패턴 중 하나로, 주 컨테이너의 기능을 보완하거나 확장하기 위해 사용되는 보조 컨테이너입니다. 사이드카 패턴은 주로 주 컨테이너의 일부 기능을 분리하거나 추가 기능을 제공하는 데 초점을 맞춥니다.
사이드카 컨테이너의 주요 특징 및 사용 사례
- 보조 기능 제공: 사이드카 컨테이너는 주 컨테이너가 직접 관련하지 않는 부차적인 기능을 제공합니다. 예를 들어, 로그 수집, 설정 파일 동적 갱신, 로컬 캐시 관리 등이 있습니다.
- 모듈화 및 재사용성: 사이드카 컨테이너를 사용하면 특정 기능을 모듈화하여 여러 다른 애플리케이션과 공유할 수 있습니다. 이로 인해 중복된 코드나 기능을 줄일 수 있습니다.
- 분리된 관심사: 주 컨테이너는 핵심 비즈니스 로직에 집중할 수 있으며, 사이드카는 그 외의 부차적인 작업을 처리합니다. 이로 인해 각 컨테이너의 책임이 명확해지고, 관리 및 확장이 용이해집니다.
- 동일한 네트워크 네임스페이스 공유: 파드 내의 모든 컨테이너는 동일한 네트워크 네임스페이스를 공유하기 때문에 서로 localhost를 통해 통신할 수 있습니다.
사이드카 패턴의 일반적인 사용 사례
- 로그 수집: 주 컨테이너가 생성하는 로그를 사이드카 컨테이너가 수집하여 중앙 로그 스토리지나 로그 관리 플랫폼으로 전송합니다.
- 동적 리로드: 사이드카 컨테이너가 설정 파일의 변화를 감지하고 주 컨테이너에 적용하는 경우. 예를 들면, Nginx의 설정을 동적으로 변경하고 리로드하는 작업입니다.
- 보안: 사이드카 컨테이너를 사용해 주 컨테이너와의 통신을 암호화하거나, 특정 네트워크 정책을 적용하는 등의 보안 관련 작업을 수행합니다.
- 프록시 및 네트워크 관련 작업: 예를 들면, 서비스 메쉬 솔루션인 Istio에서는 Envoy 프록시를 사이드카 컨테이너로 사용하여 트래픽 관리, 트래픽 라우팅, 로드 밸런싱 등의 네트워크 관련 작업을 수행합니다.
사이드카 패턴은 컨테이너화된 애플리케이션의 확장성, 재사용성, 유지 관리성을 향상시키는 강력한 도구입니다. 그러나 필요에 따라 올바르게 사용되어야 효과를 최대화할 수 있습니다.
예시
apiVersion: v1
kind: Pod
metadata:
name: nginx-fluentd-sidecar
labels:
purpose: demonstrate-sidecar
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: log-volume
mountPath: /var/log/nginx
- name: fluentd-sidecar
image: fluentd:latest
volumeMounts:
- name: log-volume
mountPath: /var/log/nginx
volumes:
- name: log-volume
emptyDir: {}
- nginx-container는 Nginx 웹 서버를 실행하는 주 컨테이너입니다.
- fluentd-sidecar는 Fluentd를 실행하는 사이드카 컨테이너입니다. Fluentd는 로그 수집 및 중앙 로그 저장소로의 전송을 담당합니다.
- 두 컨테이너 모두 log-volume이라는 볼륨을 공유하고 있습니다. Nginx 컨테이너에서 생성되는 로그는 이 볼륨에 저장되며, Fluentd 컨테이너는 이 볼륨에서 로그를 읽어 중앙 로그 저장소로 전송합니다.
반응형
'cka' 카테고리의 다른 글
kubernetes [CKA] - Deployment(기본 개념) (0) | 2023.08.29 |
---|---|
kubernetes [CKA] - sidecar-container 연습 문제 (0) | 2023.08.21 |
kubernetes [CKA] - multi container pod 연습 문제 (0) | 2023.08.21 |
kubernetes [CKA] - Multi Containers(기본 개념) (0) | 2023.08.21 |
kubernetes [CKA] - static Pod 연습 문제 (0) | 2023.06.21 |