This repository provides example configurations for deploying RTI Connext DDS applications and services on Kubernetes clusters. Each example demonstrates specific networking patterns and deployment strategies for real-time distributed systems.
- Prerequisites: Kubernetes cluster, RTI Connext DDS license
- Clone repository:
git clone https://github.com/rticommunity/kubernetes-examples.git
- Run tests:
./tests/run_integration_tests.sh basic
- Deploy example:
cd pod_to_pod_unicast_disc && kubectl apply -f .
Name | Description | Kubernetes Features Used | RTI Components Used |
---|---|---|---|
1. Communications Between Pods Inside a Kubernetes Cluster via Multicast Discovery | Enable communications inside a Kubernetes cluster using RTI DDS Ping. | Deployment | RTI DDS Ping |
2. Communications Between Pods Inside a Kubernetes Cluster via Unicast Discovery | Enable discovery with RTI Cloud Discovery Service (CDS). | Deployment, ClusterIP Service, ConfigMap (for a single CDS); StatefulSet, Headless Service, ConfigMap (for redundant CDSes) | RTI DDS Ping, RTI CDS |
3. Intra Pod Communications Using Shared Memory | Establish communications using RTI DDS Ping over shared memory between containers in a pod. | Deployment, ClusterIP Service, ConfigMap | RTI DDS Ping, RTI CDS |
4. Communications Between External Applications and Pods Within a Kubernetes Cluster Using a Gateway | Expose DDS applications using RTI Routing Service (RS) over Real-time WAN (RWT) transport outside the Kubernetes cluster. | NodePort Service, StatefulSet, Deployment, ConfigMap | RTI DDS Ping, RTI CDS, RTI RS, RTI RWT Transport |
5. Communications Between External Applications And Pods Within a Kubernetes Cluster Using a Network Load-Balanced Gateway | Load balance RTI Routing Service traffic over Real-time WAN transport. | LoadBalancer Service, Deployment, ConfigMap | RTI DDS Ping, RTI CDS, RTI RS, RTI RWT Transport |
- Kubernetes Cluster: Version 1.27+ (tested with EKS)
- RTI Connext DDS License: Required for evaluation/production use
- kubectl: Latest version configured for your cluster
- Docker Images: Access to RTI Docker Hub repositories
git clone https://github.com/rticommunity/kubernetes-examples.git
cd kubernetes-examples
# Place your RTI license file in the repository root
cp /path/to/your/rti_license.dat .
# Create license ConfigMap (required for most examples)
kubectl create configmap rti-license --from-file=rti_license.dat
# Test basic scenarios (unicast discovery - works on most CNIs)
./tests/run_integration_tests.sh basic
./tests/run_integration_tests.sh multicast
# Test advanced scenarios (complex networking and specialized transports)
./tests/run_integration_tests.sh advanced
# Test LoadBalancer scenarios (requires cloud provider LoadBalancer support)
./tests/run_integration_tests.sh loadbalancer
# Test all scenarios (comprehensive test suite)
./tests/run_integration_tests.sh all
basic
: Pod-to-pod unicast discovery with Cloud Discovery Service - reliable across all CNIsmulticast
: Pod-to-pod multicast discovery - only works if CNI supports multicast trafficadvanced
:- Intra-pod shared memory communication between containers
- External-to-pod gateway using RTI Routing Service with NodePort
loadbalancer
: External-to-pod gateway using RTI Routing Service with LoadBalancer serviceall
: Runs all test categories (may fail on CNIs without multicast/LoadBalancer support)
Problem: CNI doesn't support multicast (common in cloud providers)
Solution: Use unicast discovery examples with Cloud Discovery Service
Problem: RTI services fail with license errors
Solution:
- Ensure
rti_license.dat
is valid and not expired - Verify ConfigMap creation:
kubectl get configmap rti-license -o yaml
- Check volume mounts in pod specifications
Problem: DDS applications cannot discover each other
Solution:
- Verify Cloud Discovery Service is running:
kubectl logs deployment/rti-clouddiscoveryservice
- Validate initial peer configurations
This project is licensed under RTI License - see the LICENSE file for details.