Getting Started
Based on the official Getting Started flow (source 7) at commit
f5c408d(nearest tagv1.5.1). Cozystack expects bare-metal or virtual-machine nodes, so a laptop cluster is not enough for a full install.
Prerequisites
- One or more bare-metal machines (or VMs that can nest KubeVirt) to act as nodes.
- Talos Linux to run on those nodes; Cozystack manages the OS layer.
kubectland thetalmbootstrap tool on your workstation.- A planned Pod and Service CIDR and a
root-hostDNS name for the platform.
Install
Cozystack installs in five stages, following the official guide (source 7):
- Install Talos Linux on the nodes.
- Bootstrap Kubernetes with
talm. - Install Cozystack itself.
- Create a tenant.
- Deploy an application into the tenant.
Stage 3 is the Cozystack-specific step. You place a cozystack-config ConfigMap in the cozy-system namespace (bundle name, Pod and Service CIDRs, and root-host) and apply the installer manifest.
kubectl create namespace cozy-system
kubectl apply -f cozystack-installer.yamlThe installer deploys cozystack-operator. Its variant (talos, generic, or hosted) is set in the installer values (packages/core/installer/values.yaml:8). The operator then reconciles the platform package, which brings up the rest of the system components through Flux. The root-host and bundle-name you configured are read into the shared platform values (packages/core/platform/templates/apps.yaml:22).
A first working setup
Once the platform is up, create a tenant and provision a managed database into it. A tenant is itself an apps.cozystack.io kind.
Create a tenant namespace and object.
bashkubectl apply -f - <<'EOF' apiVersion: apps.cozystack.io/v1alpha1 kind: Tenant metadata: name: my-tenant namespace: tenant-root spec: {} EOFProvision a Postgres into the tenant. The
spechere becomes the Helm values of thepackages/apps/postgreschart (pkg/registry/apps/application/rest.go:1605).bashkubectl apply -f - <<'EOF' apiVersion: apps.cozystack.io/v1alpha1 kind: Postgres metadata: name: my-db namespace: tenant-my-tenant spec: replicas: 2 EOF
Verify it works
Cozystack keeps no store of its own, so the underlying HelmRelease is the source of truth. Check both the Application view and the Flux object.
kubectl get postgres -n tenant-my-tenant
kubectl get helmrelease -n tenant-my-tenantThe Postgres object should report ready, and the corresponding HelmRelease (named with the kind's prefix) should reconcile to Ready. If the HelmRelease is stuck, the problem is in the chart install, which Flux's helm-controller logs.
Where to go next
For real deployments, follow the official documentation at cozystack.io for node sizing, storage (LINSTOR and Piraeus), networking (Cilium and Kube-OVN), tenant isolation, and the full managed-service catalog. Do not treat the single-node quickstart as a production topology.