Skip to content

GitOps Repository using FlagOps to manage k8s applications

Notifications You must be signed in to change notification settings

graytonio/homelab-flagops-templates

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Homelab Configurations with FlagOps

This is my personal homelab and self hosted infrastructure using another project of mine FlagOps. This allows me to control different pieces and configurations across environments using feature flags similar to runtime applications.

Dependencies

These are tools/servies that need to be setup in advanced before this repository can be used correctly.

Details on required setup in the bootstrapping section

Structure

  • bootstrap/: Contains the essentials manifests to install ArgoCD as a self managed deployment. This allows argocd to manage itself and then pull in the other manifests in this repository. This section is used primarily by ArgoCD Autopilot during bootstrapping and for any version upgrades needed down the line.

  • projects/: Contains "environment" definitions such as production and staging. Each environment is intended to be deployed to a dedicated set of machines with the bootstrapping existing on a "management" cluster. In my setup the production system and the management cluster are the same but this is not required. They create an Argo Project and an ApplicationSet which typically will dynamically pickup definitions from the apps/ directory.

  • apps/: Contains individual application definitions through helm charts. Typically a chart will contain its dependency which will be some external dependency and a values file to configure it. In some circumstances additional templates will be added to make running the apps easier. By defauly all projects receive all configured apps in the apps folder.

Applications

Infrastructure

These applications are infrastructure components used to support other applications. They typically provide services like DNS, storage, and secrets management.

  • External DNS - Syncs ingress dns records with cloudflare and internal adguard
  • External Secrets - Syncs secrets from aws secrets manager to k8s secret objects
  • MetalLB - Provides a baremetal loadbalancer implementation
  • Longhorn - Exposes node storage as dynamic storage class
  • Traefik - Reverse proxy and service discovery
  • Prometheus Agent - Forwarding metrics and logs to grafana cloud
  • Gotify - Notification services

User Apps

These are the forward facing applications that provide services to users

Bootstrapping

In order to take this repository and go to a fully functioning deployment you need to have the following setup before hand.

TODO Add bootstrapping steps

About

GitOps Repository using FlagOps to manage k8s applications

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published