Skip to content

rticommunity/kubernetes-examples

Repository files navigation

Kubernetes Example Configurations for RTI Connext DDS

CI/CD Pipeline RTI Connext

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

📋 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

git clone https://github.com/rticommunity/kubernetes-examples.git
cd kubernetes-examples

2. Set Up RTI License

# 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

# 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 file for details.

About

Example configurations of use cases with RTI Connext on Kubernetes

Resources

License

Stars

Watchers

Forks

Packages

No packages published