Skip to content

Overview

These guides assume a basic understanding of Kubernetes resources such as Pods, Deployments and Services. Use them to get familiar with our production clusters:

  1. Set up cluster access: install the tools, store your kubeconfig and switch contexts.
  2. Work with a cluster: browse with k9s, find the manifests and make controlled changes with kubectl.

To connect to private services such as PostgreSQL or Grafana, see private services via Tailscale.

Clusters and repositories

Context Repository What it contains
trackpac trackpac-ltd/k8s Trackpac applications, ChirpStack, gateway management, monitoring and shared infrastructure. Includes practical oncall/ training sessions.
connectiot connect-iot-bv/k3s-hetzner Shared services such as Authentik, Harbor, Chatwoot and Zammad, plus monitoring and storage.
bovisen-us trackpac-ltd/bovisen-chirpcloud ChirpCloud infrastructure: ChirpStack, PostgreSQL, NATS, monitoring and storage. Includes MQTT integration and operations docs.

These are separate clusters. A namespace named monitoring in one cluster is independent of monitoring in another. The downloadable kubeconfig uses the context names above; permissions come from your Authentik groups.

Repository layout

The general layout is:

cluster/                         # Cluster configuration and node maintenance
ansible/                         # Host provisioning and configuration
deployments/
  <namespace>/
    <application>/
      README.md                  # Deployment instructions, where available
      values.yaml                # Helm configuration, where used
      *.yaml                     # Kubernetes resources

For example, the platform configuration in trackpac lives in deployments/trackpac/trackpac-platform/, and Authentik configuration in connectiot lives in deployments/connectiot/authentik/.

Some namespaces keep the main application's Helm configuration directly in the namespace folder. For example, in bovisen-us, deployments/chirpstack/ contains the ChirpCloud chart configuration deployed into the chirpstack namespace; deployments/chirpstack/billing-sync/ contains an additional workload in that same namespace.

Check the manifest's metadata.namespace or the Helm instructions to confirm the namespace. A values.yaml is input to Helm; it is not a resource to apply with kubectl.