Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/henrywhitaker3/homelab
https://github.com/henrywhitaker3/homelab
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/henrywhitaker3/homelab
- Owner: henrywhitaker3
- Created: 2022-07-19T16:44:36.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T14:06:34.000Z (2 months ago)
- Last Synced: 2024-10-29T17:14:07.502Z (2 months ago)
- Language: HCL
- Size: 4.56 MB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Homelab
GitOps/IaC managed homelab using proxmox and ArgoCD
## Repo Structure
```
├── ansible # Ansible playbooks to configure vms
│ ├── inventory
│ ├── playbooks
│ └── roles
├── kubernetes # ArgoCD configurations for clusters
│ ├── k3s # The main k3s cluster
│ │ ├── apps # The definition of all services deployed in the custer
│ │ └── bootstrap # Initial bootstrapping config
│ │ ├── ArgoCD # ArgoCD helm chart
│ │ ├── manifests # Initial mainfests e.g. ArgoCD app of apps
│ │ └── sops # Any secrets that cannot be pulled from 1password (i.e. the 1password auth tokens used by ESO)
│ ├── mango # Talos cluster used for testing
│ │ ├── apps
│ │ └── bootstrap
│ │ ├── argo
│ │ ├── manifests
│ │ └── sops
├── renovate.json
├── scripts
├── terraform # Terraform config
│ ├── infra # Provisions VMs in proxmox
│ ├── talos # Configures a talos vm
│ └── vm # VM module
│ └── post # Provisions/configures the infra (e.g. minio buckets/iam, DNS config)
│ ├── adguard # Configures an adguard instance
│ └── bucket # Minio bucket module
```## ArgoCD Structure
Apps are deployed using the app-of-apps pattern, which pulls in any file with the `.app.yaml` suffix in the cluster directory `kubernetes/{cluster}/apps`
Logical
Rendered```mermaid
erDiagram
RootApp ||--|{ Apps : "each apps/**/*.app.yaml generates"
Apps ||--o{ Resources : ""
``````mermaid
flowchart TD
A[RootApp]
A -----> B(cert-manager.app.yaml)
B -----> C(cert-manager resources)
A -----> D[coredns.app.yaml]
D -----> E(coredns resources)
A -----> F(metrics-server.app.yaml)
F -----> G(metrics-server resources)
```