https://github.com/rticommunity/kubernetes-examples
Example configurations of use cases with RTI Connext on Kubernetes
https://github.com/rticommunity/kubernetes-examples
Last synced: 5 months ago
JSON representation
Example configurations of use cases with RTI Connext on Kubernetes
- Host: GitHub
- URL: https://github.com/rticommunity/kubernetes-examples
- Owner: rticommunity
- License: other
- Created: 2020-06-25T17:10:55.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2025-10-01T20:30:08.000Z (9 months ago)
- Last Synced: 2025-10-01T22:13:16.761Z (9 months ago)
- Language: Shell
- Homepage:
- Size: 23.5 MB
- Stars: 10
- Watchers: 7
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kubernetes Example Configurations for RTI Connext DDS
[](https://github.com/rticommunity/kubernetes-examples/actions)
[](https://community.rti.com/documentation/rti-connext-750)
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.
## 🚀 Quick Start
1. **Prerequisites**: Kubernetes cluster, RTI Connext DDS license
2. **Clone repository**: `git clone https://github.com/rticommunity/kubernetes-examples.git`
3. **Run tests**: `./tests/run_integration_tests.sh basic`
4. **Deploy example**: `cd pod_to_pod_unicast_disc && kubectl apply -f .`
### Use Cases
|Name | Description | Kubernetes Features Used | RTI Components Used|
------------- | ------------- | ------------ | ------------ |
|[1. Communications Between Pods Inside a Kubernetes Cluster via Multicast Discovery](pod_to_pod_multicast_disc/) | 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](pod_to_pod_unicast_disc/) | 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](intra_pod_shmem/) | 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](external_to_pod_gw/) | 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](external_to_pod_lb_gw/) | 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 |
## 📋 Prerequisites
- **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
## 🔧 Installation & Setup
### 1. Clone Repository
```bash
git clone https://github.com/rticommunity/kubernetes-examples.git
cd kubernetes-examples
```
### 2. Set Up RTI License
```bash
# 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
```
### 3. Run Integration Tests
```bash
# 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
```
#### Test Category Details:
- **`basic`**: Pod-to-pod unicast discovery with Cloud Discovery Service - reliable across all CNIs
- **`multicast`**: Pod-to-pod multicast discovery - only works if CNI supports multicast traffic
- **`advanced`**:
- 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 service
- **`all`**: Runs all test categories (may fail on CNIs without multicast/LoadBalancer support)
## 🛠️ Troubleshooting
### Common Issues
#### 1. Multicast Not Supported
**Problem**: CNI doesn't support multicast (common in cloud providers)
**Solution**: Use unicast discovery examples with Cloud Discovery Service
#### 2. License Issues
**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
#### 3. Pod Communication Failures
**Problem**: DDS applications cannot discover each other
**Solution**:
- Verify Cloud Discovery Service is running: `kubectl logs deployment/rti-clouddiscoveryservice`
- Validate initial peer configurations
## 📄 License
This project is licensed under RTI License - see the [LICENSE](LICENSE) file for details.