Skip to content

Cluster Management

This guide covers managing your connected Kubernetes clusters in TinySystems.

Cluster Dashboard

Access your clusters from the workspace dashboard:

┌─────────────────────────────────────────────────────────────────────┐
│ Clusters                                                            │
├─────────────────────────────────────────────────────────────────────┤
│ 🟢 production-gke    │ GKE  │ 5 modules │ Healthy     │ [Manage]   │
│ 🟢 staging-eks       │ EKS  │ 3 modules │ Healthy     │ [Manage]   │
│ 🟡 dev-local         │ Kind │ 2 modules │ Warning     │ [Manage]   │
└─────────────────────────────────────────────────────────────────────┘

Cluster Status

Status Indicators

StatusIndicatorMeaning
Healthy🟢 GreenAll systems operational
Warning🟡 YellowMinor issues detected
Error🔴 RedConnection or health issues
Unknown⚪ GrayStatus cannot be determined

Health Checks

TinySystems monitors:

  • API Server Connectivity: Can reach the cluster
  • Namespace Status: tinysystems namespace exists
  • RBAC Permissions: Service account has required access
  • Module Status: Deployed modules are running
  • Resource Usage: CPU/memory utilization

Viewing Cluster Details

Click a cluster to see:

Overview Tab

┌─────────────────────────────────────────────────────────────────────┐
│ Cluster: production-gke                                             │
├─────────────────────────────────────────────────────────────────────┤
│ Status: 🟢 Healthy                                                  │
│ Connected: 2024-01-10                                               │
│ Last Seen: 5 seconds ago                                            │
│                                                                     │
│ Resources                                                           │
│ ├── Nodes: 3                                                        │
│ ├── CPU: 4.2 / 12 cores (35%)                                      │
│ ├── Memory: 8.5 / 24 GB (35%)                                      │
│ └── Pods: 45 / 330 (13%)                                           │
│                                                                     │
│ Modules                                                             │
│ ├── common-module-v1: 2 replicas ✅                                 │
│ ├── http-module-v1: 2 replicas ✅                                   │
│ └── custom-module-v1: 1 replica ✅                                  │
└─────────────────────────────────────────────────────────────────────┘

Modules Tab

View and manage deployed modules:

  • Module name and version
  • Replica count
  • Resource usage
  • Health status
  • Quick actions (scale, restart, remove)

Nodes Tab

See TinyNode resources:

  • Node count
  • Status distribution
  • Recent activity
  • Error logs

Events Tab

Recent cluster events:

  • Module deployments
  • Node creations/deletions
  • Errors and warnings
  • Health check results

Managing Modules

Deploy a Module

  1. Click Deploy Module
  2. Select module from catalog
  3. Configure settings:
    • Replicas
    • Resource limits
    • Environment variables
  4. Click Deploy

Scale Module

  1. Find the module in the Modules tab
  2. Click Scale
  3. Set replica count
  4. Confirm

Or via kubectl:

bash
kubectl scale deployment common-module-v1 \
  --replicas=3 \
  -n tinysystems

Update Module

  1. Find the module
  2. Click Update
  3. Select new version
  4. Review changes
  5. Click Update

Remove Module

  1. Find the module
  2. Click Remove
  3. Confirm deletion

Warning: Removing a module stops all nodes using its components.

Resource Management

Viewing Resource Usage

Monitor cluster resources:

CPU Usage Over Time

│    ████
│   ██████
│  ████████████
│ ██████████████████████
└──────────────────────────▶
  12:00   13:00   14:00

Resource Alerts

Configure alerts for:

  • CPU usage > 80%
  • Memory usage > 80%
  • Pod restart loops
  • Module failures

Scaling Recommendations

TinySystems provides scaling suggestions:

⚠️ Scaling Recommendation

Module: http-module-v1
Current: 2 replicas
Suggested: 4 replicas

Reason: High CPU usage (85%) during peak hours

[Apply] [Dismiss]

Kubeconfig Management

Update Kubeconfig

When credentials change:

  1. Go to Cluster Settings
  2. Click Update Kubeconfig
  3. Upload new kubeconfig
  4. Test connection
  5. Save

Rotate Credentials

Periodic credential rotation:

  1. Generate new token in cluster
  2. Update kubeconfig
  3. Test connection
  4. Remove old credentials

Cluster Settings

General Settings

SettingDescription
NameDisplay name
DescriptionNotes about the cluster
EnvironmentProduction/Staging/Development
TagsOrganization labels

Connection Settings

SettingDescription
NamespaceTarget namespace
TimeoutConnection timeout
Retry PolicyReconnection behavior

Resource Defaults

Default limits for new modules:

yaml
defaults:
  replicas: 2
  resources:
    requests:
      cpu: 100m
      memory: 128Mi
    limits:
      cpu: 500m
      memory: 512Mi

Multi-Cluster Operations

Deploying Across Clusters

Deploy the same flow to multiple clusters:

  1. Create flow in workspace
  2. Select target clusters
  3. Deploy to each

Cluster Groups

Organize clusters into groups:

  • Production clusters
  • Staging clusters
  • Regional clusters

Apply actions to groups:

  • Deploy to all production
  • Update all staging
  • Compare configurations

Failover Configuration

Set up cluster failover:

  1. Define primary cluster
  2. Define failover cluster(s)
  3. Configure health checks
  4. Set failover triggers

Monitoring and Logging

Built-in Metrics

View in cluster dashboard:

  • Request rates
  • Error rates
  • Latency percentiles
  • Resource utilization

External Monitoring

Integrate with:

  • Prometheus/Grafana
  • Datadog
  • New Relic
  • CloudWatch

Log Access

View logs in UI or via kubectl:

bash
# All module logs
kubectl logs -n tinysystems -l app.kubernetes.io/part-of=tinysystems

# Specific module
kubectl logs -n tinysystems deployment/common-module-v1

Maintenance

Draining Nodes

Before cluster maintenance:

  1. Identify affected TinyNodes
  2. Drain traffic (if HTTP endpoints)
  3. Perform maintenance
  4. Verify recovery

Backup Considerations

Backup these resources:

bash
# Export TinyNodes
kubectl get tinynodes -n tinysystems -o yaml > tinynodes-backup.yaml

# Export TinyModules
kubectl get tinymodules -n tinysystems -o yaml > tinymodules-backup.yaml

Disaster Recovery

Recovery steps:

  1. Restore cluster access
  2. Verify namespace exists
  3. Reapply CRDs if needed
  4. Restore TinyNode configurations
  5. Redeploy modules
  6. Test flows

Disconnecting a Cluster

Graceful Disconnect

  1. Undeploy all modules
  2. Remove all TinyNodes
  3. Go to Cluster Settings
  4. Click Disconnect
  5. Confirm

Cleanup Resources

After disconnecting:

bash
# Remove namespace
kubectl delete namespace tinysystems

# Remove cluster-scoped resources
kubectl delete clusterrole tinysystems-controller
kubectl delete clusterrolebinding tinysystems-controller

Next Steps

Build flow-based applications on Kubernetes