Skip to main content
Install RubixKube on your cloud Kubernetes cluster to test our Site Reliability Intelligence platform in a cloud environment.
RubixKube is currently in Beta. While you can install it on cloud clusters for testing and evaluation, it is NOT recommended for production environments yet.
  • Safe for: Development, staging, testing environments
  • Not ready for: Production workloads, critical infrastructure
  • Coming soon: Production-ready release with SLA guarantees
Testing RubixKube on a cloud cluster gives you a more realistic experience compared to local KIND clusters, including real cloud resources, load balancers, and persistent storage.

Supported Cloud Platforms

RubixKube works with all major cloud Kubernetes platforms:

AWS EKS

Amazon Elastic Kubernetes Service

Google GKE

Google Kubernetes Engine

Azure AKS

Azure Kubernetes Service
Other Platforms: RubixKube also works with DigitalOcean Kubernetes, Linode LKE, and other managed Kubernetes services.

Prerequisites

Before installing RubixKube on your cloud cluster, ensure you have:

Required Tools

Installation:
# macOS
brew install kubectl

# Windows (Chocolatey)
choco install kubernetes-cli

# Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
Verify:
kubectl version --client
Install the CLI for your cloud provider:AWS CLI (for EKS):
# macOS
brew install awscli

# Windows
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

# Linux
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Google Cloud CLI (for GKE):
# macOS
brew install google-cloud-sdk

# Other platforms: https://cloud.google.com/sdk/docs/install
Azure CLI (for AKS):
# macOS
brew install azure-cli

# Windows
winget install Microsoft.AzureCLI

# Linux
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
You need a RubixKube account to get your installation command with API key.If you don’t have one:
  1. Visit console.rubixkube.ai
  2. Sign up for free
  3. Verify your email
  4. Log in to access your dashboard

Cloud Requirements

  • AWS EKS
  • Google GKE
  • Azure AKS
Minimum Cluster Specs:
  • Kubernetes version: 1.24+
  • Node type: t3.medium or larger (2 vCPU, 4GB RAM minimum)
  • Number of nodes: 1+ (2-3 recommended for testing)
  • IAM permissions for kubectl access
Recommended for Testing:
  • Node type: t3.large (2 vCPU, 8GB RAM)
  • Number of nodes: 2-3
  • Enable CloudWatch integration

Step 1: Create or Connect to Your Cluster

  • AWS EKS
  • Google GKE
  • Azure AKS

Create an EKS Cluster (if you don’t have one)

Option 1: Using eksctl (Recommended for Testing)
# Install eksctl (if not already installed)
brew install eksctl  # macOS
# For other OS: https://eksctl.io/installation/

# Create cluster
eksctl create cluster \
  --name rubixkube-test \
  --region us-west-2 \
  --nodes 2 \
  --node-type t3.medium \
  --version 1.28
This takes 15-20 minutes to complete.Option 2: Using AWS Console
  1. Go to AWS EKS Console
  2. Click “Create cluster”
  3. Name: rubixkube-test
  4. Kubernetes version: 1.24 or higher
  5. Follow the wizard to create node groups
  6. Wait for cluster to be active

Connect to Your EKS Cluster

# Configure kubectl to use your EKS cluster
aws eks update-kubeconfig --region us-west-2 --name rubixkube-test

Verify Connection

kubectl get nodes
Expected output:
NAME                          STATUS   ROLES    AGE   VERSION
ip-192-168-x-x.ec2.internal   Ready    <none>   5m    v1.28.x
ip-192-168-y-y.ec2.internal   Ready    <none>   5m    v1.28.x
Cost Warning: EKS costs ~$0.10/hour for the control plane + EC2 instance costs. Delete the cluster when done testing to avoid charges.

Step 2: Get Your RubixKube Installation Command

Now that your cluster is ready, let’s install RubixKube!

Access Your Dashboard

  1. Log in to console.rubixkube.ai
  2. After login, you’ll see the “Connect Your First Cluster” screen
  3. Copy the installation command - it’s pre-configured with your unique API key
RubixKube dashboard showing kubectl installation command
The command looks like this:
kubectl apply -f "https://api.rubixkube.ai/install/observer.yaml?apiKey=rk_YOUR_UNIQUE_API_KEY"
Important: Each user has a unique API key. Always copy YOUR command from the dashboard - don’t use examples from docs!

Step 3: Install RubixKube Observer

Run the Installation Command

Paste your command from the dashboard into your terminal:
kubectl apply -f "https://api.rubixkube.ai/install/observer.yaml?apiKey=rk_YOUR_API_KEY"
What gets installed:
namespace/rubixkube-system created
serviceaccount/rubixkube-observer created
clusterrole.rbac.authorization.k8s.io/rubixkube-observer created
clusterrolebinding.rbac.authorization.k8s.io/rubixkube-observer created
deployment.apps/rubixkube-observer created
configmap/rubixkube-config created
secret/rubixkube-credentials created
The RubixKube observer agent:
  • Monitors your cluster resources (pods, deployments, services, nodes)
  • Collects metrics and events (NOT your application data)
  • Detects anomalies and potential issues
  • Communicates with RubixKube AI agents for analysis
  • Reports cluster health to your dashboard
Privacy: The observer only collects metadata and metrics - never your application logs or sensitive data.

Step 4: Verify Installation

Let’s confirm RubixKube is running correctly in your cluster.

Check Namespace Created

kubectl get namespaces | grep rubixkube-system
Expected output:
rubixkube-system   Active   30s

Check Pod Status

kubectl get pods -n rubixkube-system
Initial output (pods starting):
NAME                                  READY   STATUS              RESTARTS   AGE
rubixkube-observer-7d4b9c8f6d-abc12   0/1     ContainerCreating   0          15s
Wait 1-2 minutes, then check again:
kubectl get pods -n rubixkube-system
** Success - Pod Running:**
NAME                                  READY   STATUS    RESTARTS   AGE
rubixkube-observer-7d4b9c8f6d-abc12   1/1     Running   0          2m
Look for these indicators:
ColumnExpected ValueMeaning
READY1/1Container is ready
STATUSRunningPod is active
RESTARTS0 or low numberStable, no crashes
AGEIncreasingPod staying alive
If you see 1/1 Running, you’re good!
Problem: Pod can’t download the RubixKube image.Common causes:
  • Cluster lacks internet access
  • Container registry authentication issue
  • Network policies blocking outbound traffic
Solutions:
  1. Check pod details:
kubectl describe pod -n rubixkube-system -l app=rubixkube-observer
  1. Verify internet connectivity:
kubectl run test-curl --image=curlimages/curl -i --rm -- curl -I https://api.rubixkube.ai
  1. Check events:
kubectl get events -n rubixkube-system --sort-by='.lastTimestamp'
If issue persists after 5 minutes, contact [email protected]
Problem: Pod starts but immediately crashes.Most common cause: Invalid or missing API keySolution:
  1. Check logs to see error:
kubectl logs -n rubixkube-system deployment/rubixkube-observer
  1. Look for authentication errors:
  • “Invalid API key”
  • “Unauthorized”
  • “Failed to connect to RubixKube API”
  1. Reinstall with correct API key:
# Delete existing installation
kubectl delete namespace rubixkube-system

# Wait 30 seconds
sleep 30

# Get fresh command from console.rubixkube.ai and run it
Problem: Pod stuck in “Pending” state.Common causes:
  • Not enough cluster resources
  • No nodes available
  • Storage provisioning issues
Solutions:
  1. Check node resources:
kubectl top nodes
kubectl describe nodes
  1. Check pod events:
kubectl describe pod -n rubixkube-system -l app=rubixkube-observer
  1. Scale your node pool if resources are exhausted

Check Observer Logs

View what RubixKube is doing:
kubectl logs -n rubixkube-system deployment/rubixkube-observer --tail=50
Healthy logs should show:
[INFO] RubixKube Observer v0.x.x starting...
[INFO] Connecting to RubixKube API at https://api.rubixkube.ai
[INFO] Authentication successful
[INFO] Cluster registered: rubixkube-test
[INFO] Starting infrastructure monitoring...
[INFO] Watching all namespaces
[INFO] Agent mesh initialized
[INFO] Connected to RubixKube platform
[INFO] Heartbeat: cluster healthy
Good Sign: Regular [INFO] messages about monitoring, watching, and heartbeats mean everything is working correctly.

Verify in RubixKube Dashboard

  1. Go to console.rubixkube.ai
  2. Navigate to Dashboard ** or ** Clusters page
  3. Your cluster should appear with:
    • Green status indicator (Connected)
    • Metrics starting to populate
    • Observer Status: “Active”
Sync Delay: It may take 1-2 minutes for your cluster to appear and sync initial data to the dashboard.

Step 5: Deploy Test Workloads (Optional)

Want to see RubixKube in action? Deploy some test applications!

Deploy Sample Apps

# Create a test namespace
kubectl create namespace rubixkube-system

# Deploy nginx
kubectl create deployment nginx --image=nginx:latest -n rubixkube-system
kubectl expose deployment nginx --port=80 --type=LoadBalancer -n rubixkube-system

# Deploy redis
kubectl create deployment redis --image=redis:latest -n rubixkube-system

# Deploy a broken pod (to test RubixKube detection)
kubectl create deployment broken-app --image=invalid-image:latest -n rubixkube-system

Watch RubixKube Detect Issues

  1. Go to console.rubixkube.ai
  2. Navigate to Infrastructure ** or ** Insights
  3. You’ll see:
    • nginx and redis running healthy
    • broken-app showing ImagePullBackOff error
    • RubixKube AI analyzing the broken pod
Try the Chat! Go to the Chat page and ask: “What pods are failing?” or “Why is broken-app not working?”

Cloud-Specific Configurations

AWS EKS: IAM Permissions

For full RubixKube functionality on EKS:
# Create IAM OIDC provider (if not already created)
eksctl utils associate-iam-oidc-provider --cluster rubixkube-test --approve

Google GKE: Workload Identity

For enhanced security on GKE:
# Enable Workload Identity (if not already enabled)
gcloud container clusters update rubixkube-test \
  --workload-pool=PROJECT_ID.svc.id.goog \
  --zone us-central1-a

Azure AKS: Managed Identity

AKS uses managed identities by default. No additional configuration needed for RubixKube observer.

Managing Your Installation

View All RubixKube Resources

kubectl get all -n rubixkube-system

Update RubixKube Observer

When a new version is available:
# Simply rerun the installation command
kubectl apply -f "https://api.rubixkube.ai/install/observer.yaml?apiKey=rk_YOUR_API_KEY"
RubixKube will automatically update to the latest version.

Restart RubixKube Observer

If you need to restart the observer:
kubectl rollout restart deployment/rubixkube-observer -n rubixkube-system

View Observer Configuration

kubectl get configmap -n rubixkube-system rubixkube-config -o yaml

Check Resource Usage

kubectl top pod -n rubixkube-system
Expected resource usage:
  • CPU: 50-200m (0.05-0.2 cores)
  • Memory: 128Mi-512Mi

Uninstalling RubixKube

Remove RubixKube from Your Cluster

If you want to uninstall RubixKube:
# Delete the entire RubixKube namespace
kubectl delete namespace rubixkube-system
This removes:
  • Observer deployment
  • Service accounts
  • RBAC roles and bindings
  • Configuration and secrets
Data Retention: Historical data in RubixKube cloud platform is retained for 30 days even after uninstalling the agent.

Delete Your Test Cluster

When you’re done testing:
  • AWS EKS
  • Google GKE
  • Azure AKS
# Using eksctl
eksctl delete cluster --name rubixkube-test --region us-west-2
Or use the AWS Console to delete.

Common Issues & Solutions

Error: The connection to the server localhost:8080 was refusedCause: kubectl is not configured to connect to your clusterSolution:
  • Run the “update kubeconfig” command for your cloud provider (see Step 1)
  • Verify with: kubectl config current-context
Error: Error from server (Forbidden): pods is forbiddenCause: Your user doesn’t have proper RBAC permissionsSolution:For EKS:
# Ensure you're using cluster creator credentials
aws sts get-caller-identity
For GKE:
# Grant yourself cluster-admin
kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole=cluster-admin \
  --user=$(gcloud config get-value core/account)
For AKS:
# Get admin credentials
az aks get-credentials --resource-group rubixkube-rg --name rubixkube-test --admin
Problem: RESTARTS column shows increasing numbersDiagnosis:
# Check logs for errors
kubectl logs -n rubixkube-system deployment/rubixkube-observer --previous

# Check events
kubectl get events -n rubixkube-system --sort-by='.lastTimestamp'
Common causes:
  • Network connectivity issues
  • API key expired or invalid
  • Memory limits too low
Solution: Contact [email protected] with the logs
Problem: Cluster successfully installed but not showing in RubixKube consoleChecklist:
  1. Wait 2-3 minutes - Initial sync takes time
  2. Check pod is Running:
kubectl get pods -n rubixkube-system
  1. Check observer logs for connection:
kubectl logs -n rubixkube-system deployment/rubixkube-observer | grep -i "connect"
  1. Verify API key is correct:
kubectl get secret -n rubixkube-system rubixkube-credentials -o yaml
  1. Check outbound connectivity:
kubectl run test-curl --image=curlimages/curl -i --rm -- \
  curl -v https://api.rubixkube.ai/health
Problem: Cluster has strict network policiesSolution: Allow egress to RubixKube API:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-rubixkube-egress
  namespace: rubixkube-system
spec:
  podSelector:
    matchLabels:
      app: rubixkube-observer
  policyTypes:
  - Egress
  egress:
  - to:
    - namespaceSelector: {}
    ports:
    - protocol: TCP
      port: 443
  - to:
    - podSelector: {}
Apply with:
kubectl apply -f network-policy.yaml

Beta Testing Best Practices

Since RubixKube is in Beta, follow these practices:

Use Test Environments Only

  • Install on dev/staging clusters
  • Never on production (yet)
  • Create isolated test namespaces
  • Use non-critical workloads

Monitor Resource Usage

  • Check observer CPU/memory usage
  • Set resource limits if needed
  • Watch for cluster impact
  • Report any performance issues

Provide Feedback

  • Report bugs to [email protected]
  • Suggest features you need
  • Share your use cases
  • Help us improve!

Stay Updated

  • Watch for release updates
  • Subscribe to changelog
  • Test new features
  • Upgrade regularly
Your Feedback Matters! As a beta tester, your input directly shapes RubixKube’s development. We appreciate every bug report and suggestion.

Resource Limits & Cost Optimization

To control RubixKube observer resource usage:
# Download the observer manifest
curl -o observer.yaml "https://api.rubixkube.ai/install/observer.yaml?apiKey=rk_YOUR_API_KEY"

# Edit the deployment section to add resource limits
# Then apply:
kubectl apply -f observer.yaml
Example limits:
resources:
  requests:
    cpu: 100m
    memory: 256Mi
  limits:
    cpu: 500m
    memory: 512Mi

Cost Management Tips

  • Use Spot Instances for node groups (not for control plane)
  • Set up Cluster Autoscaler to scale down when idle
  • Use Fargate for serverless nodes (optional)
  • Enable Cost Explorer to track spending
  • Delete cluster when not in use: eksctl delete cluster
  • Enable Autopilot mode for cost-efficient scaling
  • Use Preemptible VMs for testing (cheaper)
  • Set node auto-provisioning for dynamic sizing
  • Enable GKE usage metering to track costs
  • Delete cluster when not testing: gcloud container clusters delete
  • Use Spot VMs for node pools (70-90% cheaper)
  • Enable cluster autoscaler for automatic scaling
  • Set start/stop schedules for dev clusters
  • Use Azure Cost Management to monitor spending
  • Delete cluster when done: az aks delete

Next Steps


Cluster Comparison

FeatureLocal KINDCloud Cluster
CostFree$50-100+/month
Setup Time5-10 min10-20 min
Realistic TestingLimitedHigh
Internet RequiredOnly for syncAlways
Load BalancersSimulatedReal cloud LBs
Persistent StorageLimitedFull PVC support
Multi-nodeSimulatedReal distributed nodes
Auto-scalingNoYes
Production-like40%95%
Recommendation: Start with KIND for learning, then test on cloud clusters before eventual production deployment.

Security Considerations

RubixKube observer collects:Metadata: Pod names, namespaces, labels Metrics: CPU, memory, network usage Events: Kubernetes events and state changes Status: Health checks and readinessNEVER collects: Application logs, secrets, environment variables, or business dataAll data is encrypted in transit (TLS) and at rest.
RubixKube observer requires read-only cluster access:
  • View pods, deployments, services (read-only)
  • Read events and metrics (read-only)
  • No write/delete permissions on your resources
View exact permissions:
kubectl get clusterrole rubixkube-observer -o yaml
Your API key is stored as a Kubernetes secret:
kubectl get secret -n rubixkube-system rubixkube-credentials -o yaml
Best practices:
  • Never commit API keys to git
  • Rotate keys every 90 days (from dashboard)
  • Revoke keys immediately if compromised
  • Use different keys for different environments

Need Help?

Support

Email: [email protected]
For installation issues

Bug Reports

Email: [email protected]
Found a bug? Let us know!

Documentation

Community

Join our Slack for real-time help
Beta Reminder: You’re using beta software. Things may break. Please report any issues to help us improve!

What’s Next?

After successfully installing RubixKube on your cloud cluster:
  1. Explore Features - Navigate through Dashboard, Insights, and Infrastructure views
  2. Run Tutorials - Follow our hands-on guides to see RubixKube in action
  3. Provide Feedback - Tell us what works and what doesn’t
  4. Plan for Production - Start thinking about your production deployment strategy

Start with First Steps Tutorial

Learn the RubixKube interface and run your first queries