Getting Started
Get up and running with Odin on a local Kubernetes cluster. This guide will walk you through installation, configuration, and deploying your first service.
Prerequisites
Section titled “Prerequisites”Hardware Requirements
Section titled “Hardware Requirements”Local Development (Kind Cluster)
Section titled “Local Development (Kind Cluster)”| Resource | Minimum |
|---|---|
| RAM | 8 GB |
| CPU | 4 cores |
| Disk Space | 20 GB free |
| OS | macOS 11+, Linux (Ubuntu 20.04+) |
Software Requirements
Section titled “Software Requirements”The following tools must be installed on your system:
| Tool | Minimum Version | Installation |
|---|---|---|
| kubectl | v1.24+ | Install Guide |
| Helm | v3.8+ | Install Guide |
| Docker | v20.10+ | Install Guide |
| curl | v7.68+ | Pre-installed on most systems |
Kubernetes Version Compatibility
Section titled “Kubernetes Version Compatibility”| Kubernetes Version | Status |
|---|---|
| 1.30 - 1.34 | ✅ Compatible |
| < 1.29 | ⚠️ Not Tested |
Quick Start: One-Command Installation
Section titled “Quick Start: One-Command Installation”Get Odin running on a local Kind cluster in under 15 minutes:
bash <(curl -fsSL https://raw.githubusercontent.com/ds-horizon/odin/master/install.sh)What This Does
Section titled “What This Does”The installation script automatically:
- ✅ Clones the Odin repository
- ✅ Checks and installs prerequisites (kubectl, Helm, Docker, Kind)
- ✅ Creates a local Kind cluster named
odin-cluster - ✅ Sets up local Docker registry
- ✅ Installs KEDA and Percona MySQL Operator
- ✅ Deploys Odin with all components
- ✅ Creates local development accounts
- ✅ Optionally installs Odin CLI
Expected Duration: 7-10 minutes (depending on internet speed and hardware)
Installation Output
Section titled “Installation Output”You’ll see output similar to:
╔═══════════════════════════════════════════════════════════╗║ ║║ Odin Helm Chart Installation ║║ ║╚═══════════════════════════════════════════════════════════╝
[Step 1/14] Checking kubectl installation✓ kubectl is available
[Step 2/14] Checking Helm installation✓ Helm is available
[INFO] Would you like to install Odin on a local Kind cluster? [y/N]: y
[Step 3/14] Setting up Docker for Kind cluster✓ Docker is running
[Step 4/14] Installing Kind✓ Kind installed successfully
[Step 5/14] Setting up Docker registry for Kind✓ Local registry 'kind-registry' started
[Step 6/14] Creating Kubernetes cluster✓ Kind cluster 'odin-cluster' is ready
...
[Step 14/14] Installing Odin CLI✓ Odin CLI installed successfully!
🎉 Odin installation completed successfully!CLI Setup
Section titled “CLI Setup”After installation completes, configure the Odin CLI:
Step 1: Locate the CLI Binary
Section titled “Step 1: Locate the CLI Binary”If you installed the CLI during installation:
# CLI is installed in your home directoryls -la ~/odin
# Move to PATHsudo mv ~/odin /usr/local/bin/odinchmod +x /usr/local/bin/odinStep 2: Verify CLI Installation
Section titled “Step 2: Verify CLI Installation”# Check versionodin versionStep 3: Port-Forward to Deployer
Section titled “Step 3: Port-Forward to Deployer”Open a terminal and forward the deployer service to localhost:
# Forward deployer service to localhostkubectl port-forward svc/odin-deployer -n odin 8080:80Step 4: Configure Odin CLI
Section titled “Step 4: Configure Odin CLI”In a new terminal, configure the CLI to connect to your local Odin backend:
# Configure Odin CLI for local developmentodin configure --org-id 0 --backend-address 127.0.0.1:8080 -I -PFlags explained:
--org-id 0: Use organization ID 0 (default for local development)--backend-address 127.0.0.1:8080: Connect to port-forwarded deployer-I: Skip TLS host verification (insecure mode for local dev)-P: Use plaintext gRPC without TLS
Step 5: Test the Installation
Section titled “Step 5: Test the Installation”# List environments (should be empty initially)odin list envIf you see the output without errors, congratulations! 🎉 Odin is successfully installed and configured.
Next Steps: Deploy Your First Service
Section titled “Next Steps: Deploy Your First Service”Now that Odin is installed and configured, you can deploy your first service:
- Create an Environment: Set up an isolated namespace for your services
- Define Your Service: Create a service definition JSON
- Configure Provisioning: Specify how components should be deployed
- Deploy: Use the CLI to deploy your service
For a complete walkthrough, see:
- Deploy Your First Service - Step-by-step tutorial
- Key Concepts - Understand environments, services, and components
- CLI Reference - Complete command documentation
Common CLI Commands
Section titled “Common CLI Commands”Here are some common commands you’ll use:
# List all environmentsodin list env
# Create an environmentodin create env dev --accounts docker/local
# Describe an environmentodin describe env dev
# Deploy a serviceodin deploy service --env dev --file service.json --provisioning provisioning.json
# Check service statusodin status env dev --service my-service
# Undeploy a serviceodin undeploy service my-service --env dev
# Get helpodin --helpodin deploy --helpTroubleshooting
Section titled “Troubleshooting”Port-Forward Connection Issues
Section titled “Port-Forward Connection Issues”If you can’t connect to the backend:
# Check if port-forward is runningps aux | grep "port-forward"
# Verify deployer pod is runningkubectl get pods -n odin | grep deployer
# Restart port-forwardkubectl port-forward svc/odin-deployer -n odin 8080:80CLI Configuration Issues
Section titled “CLI Configuration Issues”If odin list env fails:
# Check CLI configurationcat ~/.odin/config
# Reconfigure with verbose outputodin configure --org-id 0 --backend-address 127.0.0.1:8080 -I -P --verboseCluster Issues
Section titled “Cluster Issues”Check cluster health:
# Check all pods in odin namespacekubectl get pods -n odin
# Check specific component logskubectl logs -n odin deployment/odin-deployer
# Describe pod for eventskubectl describe pod -n odin <pod-name>Advanced Installation Options
Section titled “Advanced Installation Options”Installing on Existing Kubernetes Cluster
Section titled “Installing on Existing Kubernetes Cluster”To install on an existing cluster instead of Kind:
# Clone the repositorygit clone https://github.com/ds-horizon/odin.gitcd odin
# Install with Helm directlyhelm install odin ./charts/odin --namespace odin --create-namespaceCustom Installation with Values
Section titled “Custom Installation with Values”For production or custom configurations:
# Create custom values filecat > custom-values.yaml <<EOFdeployer: replicaCount: 2 resources: requests: cpu: 500m memory: 1Gi
mysql: mysql: size: 3
redis: architecture: replication replica: replicaCount: 2EOF
# Install with custom values./install.sh --values custom-values.yamlUninstallation
Section titled “Uninstallation”To remove Odin from your cluster:
# Using the uninstall scriptcd odin./uninstall.sh
# Or manually with Helmhelm uninstall odin -n odinkubectl delete namespace odinWhat’s Installed
Section titled “What’s Installed”After successful installation, your cluster will have:
| Component | Purpose |
|---|---|
| odin-deployer | Main deployment orchestration service |
| odin-orchestrator | Job orchestration with KEDA autoscaling |
| odin-account-manager | Cloud provider account management |
| odin-discovery-service | Service discovery and registration |
| MySQL (Percona) | Database for state management |
| Redis | Caching and session storage |
| MinIO | Object storage for artifacts |
| ElasticMQ | Message queue (SQS-compatible) |
| FluentBit | Log aggregation |
Next Steps
Section titled “Next Steps”Additional Resources
Section titled “Additional Resources”- GitHub Repository: https://github.com/ds-horizon/odin
- Issue Tracker: https://github.com/ds-horizon/odin/issues
- Helm Chart: https://github.com/ds-horizon/odin/tree/master/charts/odin
- License: GNU Lesser General Public License