Generic Remote/Cloud Cluster Setup
This guide covers the requirements and setup for deploying CIVITAS/CORE on remote Kubernetes clusters (cloud providers, on-premises, etc.).
Overview
Remote deployments assume you have an existing Kubernetes cluster accessible via kubeconfig. The platform will be installed using automated certificates from Let's Encrypt and requires internet-accessible domains.
Prerequisites
Kubernetes Cluster Requirements
Your Kubernetes cluster must meet these requirements:
- Kubernetes Version: 1.21 or higher
- Cluster Access: kubectl access with cluster-admin permissions
- Resources: Minimum 4 CPU cores, 16GB RAM available
- Storage: Dynamic volume provisioning support
- Ingress: kubernetes ingress-nginx Ingress Controller installed and configured
- Internet Access: Cluster nodes can access internet for image pulls
- Load Balancer: LoadBalancer service type support (cloud provider or MetalLB)
Domain and DNS Requirements
- Domain: A (sub)domain pointing to your cluster's external IP
- Wildcard DNS record recommended (e.g.,
*.example.com → <cluster-ip>) - Individual records acceptable (requires manual DNS entry for each service)
- Wildcard DNS record recommended (e.g.,
- SSL Certificates: There are two options
- Use Let's Encrypt which will automatically provision certificates. Note: Domains must be reachable from internet for Let's Encrypt validation
- You can use your own CA as well
Network Requirements
- Ingress Controller: NGINX Ingress Controller with external LoadBalancer
- Firewall:
- HTTP: Ports 80 (HTTP) and 443 (HTTPS) accessible from internet
- MQTT (only when enabled): 8883 (MQTTS) and 9876 (WSS) For more details have a look at: MQTTS
- Email: Port 587 (SMTP) for outbound email if using email features
Control System Requirements
The machine from which you run the installation must have:
Software Requirements
- curl
- git
- sshpass
- openssl
- Python >= 3.8
- helm
- kubectl
Python Dependencies
Install via pip:
pip install cc-cli
Or install individual components:
pip install ansible.core>=2.13 openshift==0.12.1 kubernetes==12.0.1 ansible-lint>=5.0 docker>=5.0 jmespath
Ansible Collections
ansible-galaxy collection install kubernetes.core>=2.2
ansible-galaxy collection install community.grafana
ansible-galaxy collection install community.mongodb==1.3.2
Cluster Configuration
1. Kubeconfig Setup
Ensure your kubeconfig is properly configured:
# Verify cluster access
kubectl cluster-info
# List available contexts
kubectl config get-contexts
# Use appropriate context
kubectl config use-context <your-cluster-context>