Andriy Oblivantsev e6176999c1
Helm Chart CI & Release / Lint Helm Chart (push) Successful in 10s
Helm Chart CI & Release / Semantic Release (push) Failing after 9s
Add containerisation strategy details and CI image build step
Expand architecture doc section 4.5 with image building process,
container registry management, and deployment pipeline prose.
Add Docker build & push to Gitea OCI registry in CI workflow.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-19 21:19:31 +00:00
2026-02-19 21:04:40 +00:00
2026-02-19 19:53:43 +00:00
2026-02-19 15:57:19 +00:00

🦩 FleetDM Stack

Helm chart deploying FleetDM Server with MySQL and Redis to Kubernetes. Suitable for local development (Kind/Minikube) and adaptable for production.

Prerequisites

Quick Start

# Create local cluster and deploy
make cluster
make install

# Verify deployment
make verify

# Access Fleet UI at https://localhost:8585
make port-forward

Installation

1. Create local cluster

Creates a Kind or Minikube cluster and installs the nginx ingress controller (Kind) or enables ingress addon (Minikube).

# Default: Kind
make cluster

# Or use Minikube
make cluster CLUSTER_TYPE=minikube

2. Install the Helm chart

make install

This will:

  • Update Helm dependencies
  • Create the fleetdm namespace
  • Deploy MySQL, Redis, and FleetDM Server
  • Run fleet prepare db automatically on fresh install (via autoApplySQLMigrations)

3. Access Fleet UI

# Port-forward Fleet to https://localhost:8585
make port-forward

# Or use a custom port
make port-forward FLEET_PORT=9090

Open https://localhost:8585 in your browser (accept the self-signed certificate).
Fleet setup wizard will guide you through initial configuration.

1771534082840

Teardown

# Remove Helm release and namespace
make uninstall

# Remove cluster (Kind or Minikube)
make clean

Verification

make verify

Verification checklist:

Component Check
FleetDM Pods running; make port-forwardhttps://localhost:8585
MySQL fleetdm-stack-mysql service; Fleet connects and runs migrations
Redis fleetdm-stack-redis-master service; Fleet uses it for cache

Manual verification

# Check pods
kubectl get pods -n fleetdm

# Check Fleet migration job (fleet prepare db)
kubectl get jobs -n fleetdm

# Check services
kubectl get svc -n fleetdm

# Fleet logs
kubectl logs -n fleetdm -l app=fleet -f

Configuration

Value Description Default
mysql.auth.password MySQL password fleetdm-local-dev
fleet.replicas Fleet server replicas 1
fleet.hostName Ingress host fleet.localhost

Override via --set or custom values file:

helm upgrade --install fleetdm-stack fleetdm-stack/ \
  -n fleetdm \
  --set mysql.auth.password=SECURE_PASSWORD

TLS certificates

For local development, the chart includes self-signed TLS certificates (generated on first make install). Production deployments should use cert-manager or provide proper certificates via fleet.secretName.

FleetDM agent reachability

Fleet is exposed via port-forward (make port-forward) or ingress:

  • Fleet UIhttps://localhost:8585 (via port-forward)
  • Agent endpoints (/api/v1/osquery/*, /api/fleet/orbit/*) — same URL
  • Ingress with fleet.localhost is also configured as a fallback

For production, configure proper TLS and a stable DNS name for agents.

Enhancements implemented

  1. Basic CI pipeline — Gitea Actions lint on push, release on tag (see .github/workflows/release.yaml)
  2. Exposed Fleet UImake port-forward on port 8585 (+ ingress fleet.localhost)
  3. fleet prepare db — Handled by autoApplySQLMigrations: true in the Fleet Helm chart

Project Structure

tech-task/
├── fleetdm-stack/          # Helm chart (FleetDM + MySQL + Redis)
│   ├── Chart.yaml
│   ├── Chart.lock
│   ├── values.yaml
│   ├── certs/              # TLS certs (generated by make install)
│   └── charts/             # Dependencies (run make deps)
├── Makefile                # cluster, install, uninstall, verify, port-forward, clean
├── README.md
├── .github/workflows/      # Gitea Actions CI for Helm chart lint & release
└── docs/                   # Theoretical part
    ├── architecture-design-company-inc.md
    ├── architecture-hld.md
    └── verification-log.md

Theoretical Part

The architectural design document for "Company Inc." is in docs/:

Description
🦩 FleetDM Stack
Readme 608 KiB
2026-02-20 13:41:08 +00:00
Languages
Makefile 100%