Skip to content
smiggiddyPublic

About

ArgoCD manifests for the smig tech lab

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

Smig.Tech HomeLab - GitOps with ArgoCD

A comprehensive Kubernetes homelab deployment using GitOps principles with ArgoCD. This repository manages the deployment of various self-hosted applications through Helm charts and ArgoCD automation.

🏠 Overview

This homelab setup provides a complete self-hosted infrastructure including:

  • Identity & Authentication: Authentik SSO
  • Storage: Longhorn distributed storage
  • Monitoring: VictoriaMetrics, VictoriaLogs, Grafana
  • Productivity: OpenCloud, Mattermost, GitLab
  • Home Automation: Home Assistant
  • Development: Code Server, LocalStack
  • Utilities: Homer dashboard, Linkding bookmarks, Uptime Kuma, Hashicorp Vault

🏗️ Architecture

GitOps Pattern

  • ArgoCD monitors this Git repository and automatically syncs changes to the Kubernetes cluster
  • Applications are generated by two ApplicationSets from app.yaml files under kubernetes/
  • kubernetes/root.yaml bootstraps the top-level files of kubernetes/

Key Components

  1. Helm apps (/kubernetes/helm/)

    • Each directory with an app.yaml becomes an Application via the helm ApplicationSet (kubernetes/helm.yaml)
    • app.yaml names the chart and version; an optional values.yaml next to it is passed with the $values multi-source pattern
    • Secrets are not stored in values: charts reference on-cluster Secrets by name (secretKeyRef, envFromSecret, configSecret, ...), and those Secrets are created from Vault by the app-secrets kustomization via argocd-vault-plugin
  2. Argo CD (/kubernetes/argocd.yaml)

    • Plain Application synced by root, with values in kubernetes/argocd/values.yaml
    • Notification tokens come from Vault via the app-secrets kustomization
  3. Kustomizations (/kubernetes/kustomizations/)

    • Kubernetes resource customizations for specific applications
    • Used for complex configurations requiring custom manifests
    • Each directory with an app.yaml becomes an Application via the kustomizations ApplicationSet (kubernetes/kustomizations.yaml); kubernetes/root.yaml bootstraps it
  4. Automated Updates

    • Renovate Bot: Automatically creates PRs for dependency updates
    • K3s Updates: System components updated via Rancher's system-upgrade-controller
    • Custom Regex Managers: Track versions for various components

📁 Repository Structure

├── charts/                        # Local charts used by kubernetes/helm apps
├── kubernetes/
│   ├── root.yaml                  # Bootstrap Application for this directory
│   ├── argocd.yaml                # Argo CD itself; values in argocd/
│   ├── helm.yaml                  # ApplicationSet over helm/**/app.yaml
│   ├── kustomizations.yaml        # ApplicationSet over kustomizations/**/app.yaml
│   ├── helm/                      # One directory per Helm release
│   │   ├── authentik/             # app.yaml + values.yaml
│   │   ├── longhorn/
│   │   └── ...
│   └── kustomizations/            # Custom Kubernetes resources
│       ├── app-secrets/           # Vault-backed Secrets consumed by the Helm apps
│       ├── home-assistant/
│       ├── rabbitmq-operator/
│       ├── system-upgrade/        # system-upgrade-controller + k3s upgrade Plans
│       └── ...
└── renovate.json                 # Automated dependency updates

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

👨‍💻 Maintainer


Note: This is a personal homelab configuration. Adjust values and configurations according to your specific requirements and environment.

About

ArgoCD manifests for the smig tech lab

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Contributors

Languages