Kubernetes에 Calls 배포

Mattermost v11.11번역일: 2026-09-02원본 보기

이 가이드는 Kubernetes 환경에 Mattermost Calls를 배포하는 데 필요한 상세 정보를 제공합니다.

개요

Mattermost Calls는 확장성과 배포 제어를 높이기 위해 Kubernetes와 연동되도록 설계되었습니다. RTCD(실시간 통신 데몬) 서비스를 사용하는 방식이 유일하게 지원되는 배포 모델입니다.

아키텍처

Kubernetes 클러스터에 배포된 Calls

이 다이어그램은 독립 실행형 RTCD 서비스를 Kubernetes 클러스터에 배포하는 방법을 보여 줍니다. 이 아키텍처에서는 다음과 같이 동작합니다.

  1. Calls 트래픽은 전용 RTCD 파드가 처리합니다
  2. 확장은 Kubernetes 배포 설정을 통해 관리합니다
  3. 통화 녹화와 전사는 calls-offloader 서비스가 처리합니다(Calls Offloader 설정과 구성 참고)

Kubernetes 클러스터에 Mattermost가 아직 배포되어 있지 않은 상태에서 이 배포 방식을 사용하려면 Kubernetes 오퍼레이터 가이드를 참고하세요.

Helm 차트 배포

Kubernetes 환경에서 Calls 관련 구성 요소를 배포하는 권장 방법은 공식 제공되는 Helm 차트를 사용하는 것입니다.

RTCD Helm 차트

RTCD Helm 차트는 통화 미디어 처리에 필요한 RTCD 서비스를 배포합니다.

helm repo add mattermost https://helm.mattermost.com
helm repo update

helm install mattermost-rtcd mattermost/mattermost-rtcd \
  --set service.annotations."service\\.beta\\.kubernetes\\.io/aws-load-balancer-backend-protocol"=udp

전체 설정 옵션은 RTCD Helm 차트 문서를 참고하세요.

Calls-Offloader Helm 차트

통화 녹화와 전사 기능이 필요하다면 calls-offloader 서비스를 배포합니다.

helm install mattermost-calls-offloader mattermost/mattermost-calls-offloader \
  --set ingress.enabled=true \
  --set ingress.host=calls-offloader.example.com

전체 설정 옵션은 Calls-Offloader Helm 차트 문서를 참고하세요.

Kubernetes 전용 설정

네트워크 설정

Kubernetes 배포에서는 다음 연결 경로가 확보되어야 합니다.

  1. 클라이언트에서 RTCD로의 연결: 클라이언트에서 RTCD 파드로 향하는 포트 8443의 UDP 및 TCP 트래픽이 올바르게 라우팅되어야 합니다(미디어 전송용이며, TCP는 폴백으로 동작합니다).
  2. Mattermost에서 RTCD API로의 연결: Mattermost와 RTCD 사이에 API 포트(TCP 8045)를 통한 명확한 연결 경로가 있어야 합니다.
  3. 네트워크 정책: 네트워크 정책이 Mattermost와 RTCD 서비스 간에 필요한 통신을 허용해야 합니다.

리소스 요구 사항

RTCD 파드의 리소스 요구 사항은 예상 통화량, 참가자 수, 화면 공유 사용 여부에 따라 크게 달라집니다.

일반적인 기본값에 의존하기보다는 성능 기준치를 검토해 배포 환경에 맞는 CPU, 메모리, 네트워크의 요청량과 한도를 결정하시기를 강력히 권장합니다.

확장 시 고려 사항

RTCD 파드의 수평 확장은 가능하지만 다음 사항을 유의해야 합니다.

  1. 각 통화는 하나의 RTCD 파드에서 전부 호스팅됩니다
  2. 서버가 RTCD 서버를 검색할 수 있도록 모든 RTCD 파드에 대한 DNS A 레코드를 설정해야 합니다.
  3. 상태 점검을 통해 정상 상태인 파드만 DNS에 보고되도록 해야 합니다
  4. 통화는 시작부터 종료까지 배정된 파드에 그대로 머무릅니다

제한 사항

WebRTC 서비스를 호스팅하는 일 자체가 본질적으로 복잡하기 때문에, Kubernetes 환경에 Calls를 배포할 때는 몇 가지 제한이 적용됩니다.

핵심 요구 사항 하나는 각 rtcd 프로세스가 전용 Kubernetes 노드에 있어야 한다는 것입니다. 이는 수평 확장을 허용하면서도 데이터를 올바르게 전달하기 위해 필요합니다. 데이터는 일반적으로 rtcd 프로세스가 실행 중인 파드로 직접 향해야 하며, 이 트래픽을 표준 인그레스를 통해 라우팅하는 것은 RTCD 배포에서 권장하지 않습니다.

일반적인 권장 사항은 rtcd 인스턴스(Kubernetes 노드)마다 외부 IP 주소를 하나씩 노출하는 것입니다. 이렇게 하면 애플리케이션이 STUN을 통해 자신의 외부 주소를 감지해 클라이언트에 알릴 수 있으므로, 최소한의 설정만으로 연결이 이루어지고 확장도 더 간단해집니다.

모니터링과 지표

지표 수집과 모니터링에 관한 자세한 내용은 Calls 지표와 모니터링 가이드를 참고하세요.

문제 해결

Kubernetes 환경에 특화된 문제 해결 방법은 다음과 같습니다.

  1. 파드 로그 확인: kubectl logs -f deployment/mattermost-rtcd
  2. 서비스 연결 확인: kubectl port-forward service/mattermost-rtcd 8045:8045
  3. UDP 및 TCP 트래픽이 로드 밸런서를 통해 올바르게 라우팅되는지 확인
  4. 네트워크 정책이 필요한 통신 경로를 허용하는지 확인

로깅에 관한 자세한 안내는 Calls 로깅 가이드를 참고하세요.

그 밖의 Calls 문서