Skip to content

Cluster Requirements

This guide outlines the requirements for connecting a Kubernetes cluster to TinySystems.

Kubernetes Version

TinySystems supports Kubernetes versions:

VersionStatus
1.28+Fully supported
1.26-1.27Supported
1.25Limited support
< 1.25Not supported

Check your version:

bash
kubectl version --short

Resource Requirements

Minimum Resources

For development and testing:

ResourceMinimum
CPU2 cores
Memory4 GB
Storage20 GB
Nodes1

For production workloads:

ResourceRecommended
CPU4+ cores
Memory8+ GB
Storage50+ GB
Nodes3+

Per-Module Resources

Each module requires:

ResourceDefaultHeavy workload
CPU Request100m500m
CPU Limit500m2000m
Memory Request128Mi512Mi
Memory Limit512Mi2Gi

Supported Environments

Cloud Providers

ProviderServiceStatus
Google CloudGKEFully supported
AWSEKSFully supported
AzureAKSFully supported
DigitalOceanDOKSSupported
LinodeLKESupported

Local Development

ToolStatusNotes
minikubeSupportedRecommended for local dev
kindSupportedGood for CI/testing
Docker DesktopSupportedEasy setup on Mac/Windows
k3sSupportedLightweight option
Rancher DesktopSupportedAlternative to Docker Desktop

Self-Hosted

DistributionStatus
kubeadmSupported
k3sSupported
RKE/RKE2Supported
OpenShiftSupported (with adjustments)

Network Requirements

Outbound Connectivity

The cluster needs outbound access to:

DestinationPortPurpose
Platform API443Control plane communication
Container Registry443Pull module images
DNS53Name resolution

Ingress (Optional)

For exposing HTTP endpoints:

RequirementPurpose
Ingress ControllerRoute external traffic
LoadBalancer/NodePortExternal access
TLS certificatesHTTPS support

Internal Networking

  • Pod-to-pod communication must work
  • DNS resolution within cluster
  • Service discovery functional

RBAC Requirements

TinySystems needs specific permissions:

Permissions within a single namespace:

yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: tinysystems-role
  namespace: tinysystems
rules:
  # Custom Resources
  - apiGroups: ["operator.tinysystems.io"]
    resources: ["*"]
    verbs: ["*"]

  # Core resources
  - apiGroups: [""]
    resources: ["pods", "services", "configmaps", "secrets"]
    verbs: ["*"]

  # Apps
  - apiGroups: ["apps"]
    resources: ["deployments", "replicasets"]
    verbs: ["*"]

  # Networking
  - apiGroups: ["networking.k8s.io"]
    resources: ["ingresses"]
    verbs: ["*"]

  # Coordination (leader election)
  - apiGroups: ["coordination.k8s.io"]
    resources: ["leases"]
    verbs: ["*"]

Cluster-Scoped (Optional)

For cross-namespace operations:

yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: tinysystems-cluster-role
rules:
  - apiGroups: ["operator.tinysystems.io"]
    resources: ["*"]
    verbs: ["*"]
  # Additional cluster-wide permissions...

Storage Requirements

Persistent Storage (Optional)

Required for:

  • State persistence
  • Log aggregation
  • Custom data stores

StorageClass requirements:

  • Dynamic provisioning preferred
  • ReadWriteOnce sufficient for most cases

Ephemeral Storage

Default modules use ephemeral storage:

  • No PV/PVC required
  • Data doesn't persist across restarts
  • Suitable for stateless operations

Custom Resource Definitions

TinySystems requires these CRDs:

CRDPurpose
TinyModuleModule registration
TinyNodeComponent instances
TinySignalMessage triggers

CRDs are installed automatically when you deploy a module.

Security Requirements

Pod Security

Modules run with:

  • Non-root user (UID 1000)
  • Read-only root filesystem (configurable)
  • No privileged access needed
  • No host networking needed

Network Policies (Optional)

If using network policies, allow:

  • Pod-to-pod within namespace
  • Egress to DNS
  • Egress to platform API

Secrets

For sensitive configuration:

  • Kubernetes Secrets for credentials
  • ConfigMaps for non-sensitive config
  • Optional: External secret managers

Verification Checklist

Before connecting your cluster:

  • [ ] Kubernetes version 1.26+
  • [ ] Sufficient resources (CPU, memory)
  • [ ] kubectl access configured
  • [ ] Namespace created (or permissions to create)
  • [ ] RBAC permissions granted
  • [ ] Outbound network access available
  • [ ] (Optional) Ingress controller installed
  • [ ] (Optional) StorageClass available

Quick Verification Script

bash
#!/bin/bash

echo "Checking Kubernetes connection..."
kubectl cluster-info

echo -e "\nChecking version..."
kubectl version --short

echo -e "\nChecking nodes..."
kubectl get nodes

echo -e "\nChecking resources..."
kubectl top nodes 2>/dev/null || echo "Metrics not available"

echo -e "\nChecking RBAC..."
kubectl auth can-i create pods --namespace tinysystems

echo -e "\nChecking CRDs..."
kubectl get crd | grep tinysystems || echo "TinySystems CRDs not installed (normal for new clusters)"

Next Steps

Build flow-based applications on Kubernetes