System Requirements¶
This guide will walk you through the necessary steps to prepare your Kubernetes cluster for a production-ready Orion environment. Proper cluster preparation ensures optimal performance and reliability.
Prerequisites¶
Hardware Requirements¶
The following table outlines the minimum hardware requirements for a standard Orion installation:
Server Role | Count | CPU | RAM | Purpose |
---|---|---|---|---|
Support |
2 | 4 Core | 16GB | Runs core services required by Orion |
Workstation |
1 | 4 Core | 16GB | Handles workstation tasks |
Headless |
1 | 4 Core | 16GB | Processes headless workloads |
Note: These are minimum requirements. For production environments or larger workloads, we recommend scaling up resources accordingly.
Kubernetes Requirements¶
Component | Requirement | Notes |
---|---|---|
Kubernetes Version | 1.27+ | Earlier versions may not be fully supported |
Recommended Distro | K3s | Other distributions should work but may require additional configuration |
Note: While we use K3s internally, Orion is designed to be compatible with most Kubernetes distributions.
Required Services¶
The following services are needed for Orion to function properly:
Service | Required | Cloud Recommended | Purpose |
---|---|---|---|
Ingress Controller | Yes | Yes | We recommend the helm install, not the bare metal |
ArgoCD | Yes | Yes | Handles GitOps deployments |
External DNS | No | Yes | Automates DNS record management |
Cluster Autoscaler | No | Yes | Automatically adjusts cluster size |
Cluster Manager | No | Yes | Provides a UI for cluster management |
Ingress Controller Options¶
Ingress Controller | Tested | Recommended |
---|---|---|
NGINX Ingress Controller | Yes | Yes |
Traefik Ingress Controller | Yes | No |
While both controllers work with Orion, we recommend NGINX for its simplicity and reliable performance with our stack. Orion uses standard Kubernetes objects for maximum compatibility.
Server Role Configuration¶
Juno products deploy components to servers based on assigned roles. These roles are implemented through Kubernetes labels and taints.
Core Roles¶
Role | Label | Purpose |
---|---|---|
Support |
juno-innovations.com/service: true |
Runs infrastructure services (databases, message queues, etc.) |
Workstation |
juno-innovations.com/workstation: true |
Runs interactive workstation environments |
Headless |
juno-innovations.com/headless: true |
Processes background and rendering workloads |
Servers can have multiple roles if needed. For example, in smaller deployments, a server might handle both workstation and headless workloads.
Node Configuration¶
Cloud Provider Configuration¶
For cloud environments (AWS, GCP, Azure), refer to your provider's documentation for implementing node groups with the appropriate labels and taints:
On-Premises Configuration¶
Follow these steps to label and taint your on-premises Kubernetes nodes:
1. Labeling Nodes¶
Apply the appropriate labels to designate node roles:
# Label support nodes
kubectl label nodes <node-name> juno-innovations.com/service=true
# Label workstation nodes
kubectl label nodes <node-name> juno-innovations.com/workstation=true
# Label headless nodes
kubectl label nodes <node-name> juno-innovations.com/headless=true
2. Tainting Nodes¶
Tainting is only needed if you are doing cloud deployments or if you want to isolate workloads between local on-prem nodes..
Apply taints to reserve nodes for specific workloads:
# Taint workstation nodes
kubectl taint nodes <node-name> juno-innovations.com/workstation=true:NoSchedule
# Taint headless nodes
kubectl taint nodes <node-name> juno-innovations.com/headless=true:NoSchedule
Note: Support nodes typically do not need taints as they should be able to run general workloads.
Verifying Your Configuration¶
To verify that your nodes are correctly labeled and tainted:
# List all nodes with their labels
kubectl get nodes --show-labels | grep juno
# Check for taints on a specific node
kubectl describe node <node-name> | grep Taints
Next Steps¶
Once your cluster is properly configured, you can proceed with setting up your hosts.
Troubleshooting¶
If you encounter issues during cluster preparation:
- Ensure all nodes meet the minimum hardware requirements
- Verify that Kubernetes version is 1.27 or newer
- Check that all required services are properly installed
- Confirm node labels and taints are correctly applied
For further assistance, contact Juno Support.