Repository Overview
Directory Structure Explained
cluster/
Thecluster/ directory contains the Flux bootstrap configuration and cluster-level resources. This is the entry point that Flux monitors.
- flux-system/
- kimawesome/
Purpose: Flux system components and sync configuration
gotk-components.yaml- All Flux CRDs and controllers (v2.7.5)gotk-sync.yaml- GitRepository and Kustomization resources that define what Flux watcheskustomization.yaml- Kustomize configuration to tie everything together
These files are generated by
flux bootstrap and should not be manually edited unless you know what you’re doing.overlays/
Theoverlays/ directory is organized into two main layers: base and environment-specific (kimawesome).
overlays/base/
Contains reusable, environment-agnostic configurations. These are the building blocks that can be used across multiple environments.Infrastructure Components
Infrastructure Components
cert-manager/ - TLS certificate managementmetallb/ - Bare-metal load balancersealed-secrets/ - Encrypted secrets managementmetrics-server/ - Cluster metrics collectionkgateway/ - Kubernetes Gateway API implementation
Observability Stack
Observability Stack
grafana/ - Monitoring and visualization stack
grafana-operator/- Grafana Operator for managing Grafana instancesgrafana-alloy/- Grafana Alloy for telemetry collectiongrafana-loki/- Log aggregation system
Applications
Applications
bind9/ - DNS server deploymentn8n/ - Workflow automationyopass/ - Secure secret sharingknowledge-hub/ - Internal knowledge basetools/ - Utility applications
http-echo/- HTTP echo service for testingmysql/- Database deploymentsno/- Additional tooling
overlays/kimawesome/
Contains environment-specific configurations and patches that extend the base configurations. This layer is organized by function:loadbalancer/
MetalLB configuration with IP address pools specific to the kimawesome environment
infrastructure/
Core infrastructure services with environment-specific settingsSubdirectories include:
apigateway/- Gateway configurationcert-manager/- Certificate issuersgatewayapi/- Gateway API resourcesobservability/- Monitoring stacksealed-secrets/- Secret encryption keysvpn/- VPN configuration
applications/
Application workloads deployed to the clusterOrganized into:
dns-server/- DNS server with configtooling/- n8n, yopass, and other toolsversion-management/- Version control applicationssteering-k8s/- Cluster management tools
site/
Website and documentation deploymentsContains:
articles/- Article contentknowledge-hub/- Knowledge base application
How Overlays Reference Base
Environment-specific overlays inherit from base configurations using Kustomize’sresources field:
- References the base configuration at
overlays/base/cert-manager/ - Sets the namespace for all resources
- Can add patches, ConfigMaps, or additional resources
Base defines the blueprint
The base configuration in
overlays/base/cert-manager/ contains generic Helm repository and release definitionsEnvironment adds specifics
The kimawesome overlay at
overlays/kimawesome/infrastructure/cert-manager/ sets the namespace and can add environment-specific patchesFlux Kustomization Resources
The repository uses Flux’sKustomization custom resources to define what Flux should reconcile:
Each Flux Kustomization resource is defined in a *.flux.yaml file:
Root Level Files
cilium-values.yaml
cilium-values.yaml
Configuration values for the Cilium CNI plugin. Used during cluster bootstrap to configure:
- Kube-proxy replacement
- NodePort enablement
- Gateway API integration
.gitignore
.gitignore
Excludes temporary files, secrets, and local development artifacts from version control.
README.md
README.md
Contains cluster creation instructions, bootstrap procedures, and operational notes specific to the kimawesome cluster.
Directory Naming Conventions
Consistency is key - Following naming conventions makes the repository easier to navigate and maintain.
| Pattern | Purpose | Example |
|---|---|---|
kustomization.yaml | Standard Kustomize configuration | Resource aggregation |
kustomization.flux.yaml | Flux Kustomization CRD | GitOps sync definition |
helm-repository.yaml | Helm repository source | Chart source definition |
helm-release.yaml | Helm release configuration | Chart deployment settings |
namespace.yaml | Namespace definition | Namespace creation |
*-config.yaml | ConfigMap resources | Application configuration |
*-secret.yaml | Sealed Secret resources | Encrypted credentials |
Navigation Tips
- Finding a Component
- Understanding Dependencies
- Tracking Changes
- Check
overlays/base/for the base configuration - Look in
overlays/kimawesome/subdirectories for environment-specific overlays - Search for
kustomization.flux.yamlfiles to understand deployment order
Next Steps
Flux Components
Learn about the Flux controllers that reconcile these configurations
Kustomize Overlays
Deep dive into how overlays work and how to create new ones
Adding Applications
Step-by-step guide to adding new applications to the repository
Managing Secrets
Learn how to securely manage secrets with Sealed Secrets