Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
5936b34
Used Claude code to refactor
May 2, 2025
982164a
Refactored Kubernetes content to a separate page.
May 8, 2025
25c7c0a
Listing TODOs. Some minor tweaks.
Jun 3, 2025
4a9b03d
Added Calls Offloader logs
Jun 3, 2025
2e75095
Added bottom navigation to get to all sections
Jun 6, 2025
e1456b6
Add toctree for sidebar navigation
Jun 6, 2025
0fff7b7
Removed Claude's extrapolation to COTURN config
Jun 6, 2025
3321c25
Clean up from review and validation
Jun 6, 2025
7fe4b70
Expanded API connectivity testing instructions
Jun 6, 2025
13c5724
Removed reference to job service secret
Jun 6, 2025
22057ab
Added plugin restart guidance when configuring offloader
Jun 6, 2025
1d682d5
Tweaked footer links
Jun 6, 2025
1caaf3e
Tweaks and validation of metrics
Jun 6, 2025
42dfc72
Fleshed out prometheus target setup docs
Jun 6, 2025
06f3e2f
Removed Claude halucinated detail
Jun 6, 2025
7e63612
Docs refinements from further testing and experience
Jun 11, 2025
15f73b1
Transitioned all Calls docs to Markdown
Jun 11, 2025
3ca52ce
Cleaned up old rst files, fixed bad RTCD health check endpoint
Jun 11, 2025
0b62a41
Updating RTCD Debug log config, fixed broken links
Jun 11, 2025
a4ce710
New debug steps, CORS MM config
Jun 11, 2025
6dfd85e
Deleted incorrectly added TODO file
Jun 11, 2025
0235ab0
Adapting the nav structure
Jun 11, 2025
732e0f7
Fixed nav structure, moved Ent badge, applied build fixes
cwarnermm Jun 11, 2025
5112c11
Fixing navigation breaks
Jun 11, 2025
c9ff6d2
Add air-gap Docker registry setup for Calls offloader
Jun 14, 2025
9d55df9
Replace script references with direct Docker commands in air-gap setup
Jun 14, 2025
ad56133
Updates after testing the process to move images into Air-Gap w Day2 …
Jun 22, 2025
5c26d62
Edits from reviews and rebase conflict resolution
Jun 24, 2025
aa3202d
Minor tweaks and adjustments from review
Jun 24, 2025
4048a34
Expanding direction for installing RTCD binary
Jun 27, 2025
90d72d9
Minor edits to config example and section header
Jul 9, 2025
0f32682
Edits from @streamer45 review
Jul 10, 2025
a3c879d
Update source/configure/calls-troubleshooting.md
sadohert Jul 11, 2025
6093b67
Update source/configure/calls-troubleshooting.md
sadohert Jul 11, 2025
ff5b61d
format update
Jul 11, 2025
8d92056
Update source/configure/calls-offloader-setup.md
sadohert Jul 11, 2025
88b0d4c
Update source/configure/calls-metrics-monitoring.md
sadohert Jul 11, 2025
8463001
Update calls-deployment.md FAQ items to use headings
sadohert Mar 5, 2026
72329ec
Update calls-kubernetes.md based on PR feedback
sadohert Mar 5, 2026
73e455a
Update calls-rtcd-setup.md based on PR feedback
sadohert Mar 5, 2026
f05c6ad
Update calls-metrics-monitoring.md based on PR feedback
sadohert Mar 6, 2026
b5f9407
Update calls-offloader-setup.md based on PR feedback
sadohert Mar 6, 2026
0e49c0d
Update calls-troubleshooting.md based on PR feedback
sadohert Mar 6, 2026
876619a
Update calls-deployment.md based on PR feedback
sadohert Mar 6, 2026
440ac40
Update calls-kubernetes.md based on PR feedback
sadohert Mar 6, 2026
0e53931
Merge remote-tracking branch 'origin/master' into stu-calls-claude-05-07
sadohert Mar 6, 2026
d0b8451
Update calls-troubleshooting.md log filter
sadohert Mar 6, 2026
0cd2cb4
Add screenshot to troubleshooting docs under Browser Console Logs
sadohert Mar 10, 2026
8cb0a2f
Add references to community calls installation scripts
sadohert Mar 10, 2026
420fc09
Update network requirements link in install-docker.rst
sadohert Mar 10, 2026
2af78b8
Restore reworked version of calls-troubleshooting.md
sadohert Mar 10, 2026
5802740
Restart RTCD after the UDP port test
sadohert Mar 10, 2026
70bb534
Merge branch 'master' into stu-calls-claude-05-07
sadohert Mar 10, 2026
939e77f
Simplify docker daemon config instructions
sadohert Mar 10, 2026
6d49b4d
Address remaining PR reviews
sadohert Mar 10, 2026
7c566e6
Address CodeRabbit PR reviews (list numbering, typos, image names, an…
sadohert Mar 10, 2026
8ea86f2
Merge branch 'master' into stu-calls-claude-05-07
sadohert Mar 11, 2026
ec20cbe
Update Horizontal Scaling section to clarify Mattermost CPU-based loa…
sadohert Mar 11, 2026
ae36560
Add mattermost/ prefix to image references
sadohert Mar 11, 2026
5632854
Address PR feedback: content corrections across Calls docs
sadohert Mar 16, 2026
b52328c
Bump air-gapped section headers down one level
sadohert Mar 16, 2026
ad52a65
Fix stray numbered list item in calls-kubernetes Other Calls Document…
sadohert Mar 16, 2026
fa3b1df
Merge branch 'master' into stu-calls-claude-05-07
sadohert Mar 17, 2026
f6ccb6b
Remove air-gap-docker-registry-setup.sh script
sadohert Mar 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,13 @@ source/developer/localization.md
*.crt
.aider*

**/.claude/settings.local.json

# Sphinx build artifacts
*.doctree
_build/
build/

# Cursor instructions
*.cursor
eng.md
eng.md
2 changes: 1 addition & 1 deletion source/_generated/agents/docs/admin_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,7 @@ The MCP server provides the following tools to AI agents and external clients:

### Deployment

![MCP Server Configuration](img/system-console-mcp.png)
![MCP Server Configuration](/agents/docs/img/system-console-mcp.png)

#### For AI Agents

Expand Down
689 changes: 107 additions & 582 deletions source/administration-guide/configure/calls-deployment.md

Large diffs are not rendered by default.

111 changes: 111 additions & 0 deletions source/administration-guide/configure/calls-kubernetes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# Calls Deployment on Kubernetes

```{include} ../../_static/badges/all-commercial.md
```

This guide provides detailed information for deploying Mattermost Calls on Kubernetes environments.

## Overview

Mattermost Calls has been designed to integrate well with Kubernetes to offer improved scalability and control over the deployment. For Kubernetes deployments, the RTCD service is strongly recommended and is the only officially supported approach.

## Architecture

![Calls deployed in a Kubernetes cluster](../../images/calls-deployment-kubernetes.png)

This diagram shows how the RTCD standalone service can be deployed in a Kubernetes cluster. In this architecture:

1. Calls traffic is handled by dedicated RTCD pods
2. Scaling is managed through Kubernetes deployment configurations
3. Call recording and transcription is handled by the calls-offloader service (see [Calls Offloader Setup and Configuration](calls-offloader-setup.md))

If Mattermost isn't already deployed in your Kubernetes cluster and you want to use this deployment type, visit the [Kubernetes operator guide](/install/mattermost-kubernetes-operator.md).

## Helm Chart Deployment

The recommended way to deploy Calls-related components in a Kubernetes environment is to use the officially provided Helm charts:

### RTCD Helm Chart

The RTCD Helm chart deploys the RTCD service needed for call media handling:

```bash
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
```

For complete configuration options, see the [RTCD Helm chart documentation](https://github.com/mattermost/mattermost-helm/tree/master/charts/mattermost-rtcd).

### Calls-Offloader Helm Chart

If you need call recording and transcription capabilities, deploy the calls-offloader service:

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

For complete configuration options, see the [Calls-Offloader Helm chart documentation](https://github.com/mattermost/mattermost-helm/tree/master/charts/mattermost-calls-offloader).

## Kubernetes-Specific Configuration

### Network Configuration

For Kubernetes deployments, you need to ensure specific connectivity paths:

1. **Client to RTCD connectivity**: UDP and TCP traffic on port 8443 is properly routed from clients to RTCD pods (for media, with TCP acting as a fallback).
2. **Mattermost to RTCD API connectivity**: There needs to be a clear connectivity path between Mattermost and RTCD on the API port (TCP 8045)
3. **Network policies**: Network policies must allow the required communications between Mattermost and RTCD services

### Resource Requirements

Resource requirements for RTCD pods depend heavily on the expected call volume, participant count, and whether screen sharing is used.

We strongly recommend reviewing the [Performance Baselines](calls-metrics-monitoring.md#performance-baselines) to determine the appropriate CPU, memory, and network requests and limits for your specific deployment needs rather than relying on generic defaults.

### Scaling Considerations

Horizontal scaling of RTCD pods is possible, but remember:

1. Each call is hosted entirely on a single RTCD pod
2. DNS A records should be set up for all RTCD pods so server can discover RTCD servers.
3. Health checks should ensure that only healthy pods are reported via DNS
4. Calls remain on their assigned pod for their entire duration

### Limitations

Due to the inherent complexities of hosting a WebRTC service, some limitations apply when deploying Calls in a Kubernetes environment.

One key requirement is that each `rtcd` process must live in a dedicated Kubernetes node. This is necessary to forward the data correctly while allowing for horizontal scaling. Data should generally direct directly to the pod running the `rtcd` process, as routing this traffic through a standard ingress is not recommended for RTCD deployments.

The general recommendation is to expose one external IP address per `rtcd` instance (Kubernetes node). This makes it simpler to scale as the application is able to detect its own external address (through STUN) and advertise it to clients to achieve connectivity with minimal configuration.



## Monitoring and Metrics

For detailed information on metrics collection and monitoring, see the [Calls Metrics and Monitoring](calls-metrics-monitoring.md) guide.

## Troubleshooting

For Kubernetes-specific troubleshooting:

1. Check pod logs: `kubectl logs -f deployment/mattermost-rtcd`
2. Verify service connectivity: `kubectl port-forward service/mattermost-rtcd 8045:8045`
3. Ensure UDP and TCP traffic is properly routed through your load balancer
4. Verify network policies allow required communication paths

For detailed troubleshooting steps, see the [Calls Troubleshooting](calls-troubleshooting.md) guide.

## Other Calls Documentation

- [Calls Overview](calls-deployment.md): Overview of deployment options and architecture
- [RTCD Setup and Configuration](calls-rtcd-setup.md): Comprehensive guide for setting up the dedicated RTCD service
- [Calls Offloader Setup and Configuration](calls-offloader-setup.md): Setup guide for call recording and transcription
- [Calls Metrics and Monitoring](calls-metrics-monitoring.md): Guide to monitoring Calls performance using metrics and observability
- [Calls Troubleshooting](calls-troubleshooting.md): Detailed troubleshooting steps and debugging techniques
- If you encounter issues, see [Calls Troubleshooting](calls-troubleshooting.md)
Loading