Blueprint Components

Components are the building blocks of Teabar environments. Each component type provisions specific infrastructure.

Available Components

Kubernetes

Managed Kubernetes clusters with configurable node pools.
🦊

GitLab

GitLab CE/EE with CI/CD runners and container registry.
🗄️

Databases

PostgreSQL, MySQL, Redis, and MongoDB instances.

Monitoring

Prometheus, Grafana, and alerting stack.

Kubernetes

Deploy managed Kubernetes clusters:

components:
  - name: cluster
    type: kubernetes
    version: '1.28' # Kubernetes version
    nodes:
      control: 1 # Control plane nodes
      worker: 3 # Worker nodes
    nodeSize: cx21 # Hetzner server type
    features:
      - ingress-nginx # NGINX ingress controller
      - cert-manager # TLS certificate management
      - metrics-server # Resource metrics

Kubernetes Options

OptionTypeDefaultDescription
versionstring"1.28"Kubernetes version
nodes.controlinteger1Control plane node count
nodes.workerinteger2Worker node count
nodeSizestringcx21Server type for nodes
featuresarray[]Add-ons to install

Available Features

  • ingress-nginx - NGINX Ingress Controller
  • cert-manager - Automatic TLS certificates
  • metrics-server - Resource metrics API
  • dashboard - Kubernetes Dashboard
  • prometheus - Prometheus monitoring
  • argocd - ArgoCD GitOps

GitLab

Deploy GitLab with CI/CD:

components:
  - name: gitlab
    type: gitlab
    version: '16.8'
    edition: ce # ce or ee
    resources:
      cpu: 4
      memory: 8Gi
      storage: 50Gi
    features:
      - container-registry
      - pages
    runners:
      count: 2
      size: cx21

GitLab Options

OptionTypeDefaultDescription
versionstring"16.8"GitLab version
editionstringceCommunity (ce) or Enterprise (ee)
resourcesobject-CPU, memory, storage
featuresarray[]GitLab features to enable
runners.countinteger1Number of CI runners

GitLab Runner

Standalone GitLab runners (for existing GitLab):

components:
  - name: runners
    type: gitlab-runner
    count: 3
    gitlab:
      url: https://gitlab.example.com
      token: ${{ secrets.RUNNER_TOKEN }}
    executor: docker
    resources:
      cpu: 2
      memory: 4Gi

PostgreSQL

Managed PostgreSQL database:

components:
  - name: db
    type: postgresql
    version: '15'
    resources:
      cpu: 2
      memory: 4Gi
      storage: 20Gi
    databases:
      - name: app
        user: app_user
      - name: analytics
        user: analytics_user

Redis

In-memory data store:

components:
  - name: cache
    type: redis
    version: '7'
    mode: standalone # standalone or cluster
    resources:
      memory: 1Gi
    persistence: true

Prometheus Stack

Complete monitoring stack:

components:
  - name: monitoring
    type: prometheus-stack
    features:
      - grafana # Grafana dashboards
      - alertmanager # Alert routing
      - node-exporter # Node metrics
    grafana:
      dashboards:
        - kubernetes
        - gitlab

Custom Components

Deploy custom Docker images:

components:
  - name: custom-app
    type: container
    image: myregistry/myapp:latest
    replicas: 2
    ports:
      - 8080
    env:
      DATABASE_URL: ${{ components.db.connection_string }}
    resources:
      cpu: 1
      memory: 512Mi

Component Dependencies

Components can reference each other:

components:
  - name: db
    type: postgresql
    databases:
      - name: gitlab_production

  - name: gitlab
    type: gitlab
    database:
      host: ${{ components.db.host }}
      port: ${{ components.db.port }}
      name: gitlab_production
      user: ${{ components.db.users.gitlab_production.username }}
      password: ${{ components.db.users.gitlab_production.password }}

Resource Sizing

All components support resource limits:

resources:
  cpu: 2 # CPU cores
  memory: 4Gi # Memory (Ki, Mi, Gi)
  storage: 50Gi # Disk storage

Sizing Guidelines

WorkloadCPUMemoryStorage
Small (up to 10 users)24Gi20Gi
Medium (10-50 users)48Gi50Gi
Large (50+ users)816Gi100Gi
ende