feat(gitops): migrate domain to riotpiao.com, add CNPG + Forgejo HA on Redis/Postgres, wire ArgoCD apps — enables cluster rebuild after etcd wipe and unblocks the git-source chicken-egg via standalone Helm-source Applications
This commit is contained in:
@@ -60,7 +60,7 @@ Edit `.env` and fill in cluster configuration. See `.env.example` for all option
|
||||
|
||||
```bash
|
||||
# Cluster configuration
|
||||
CLUSTER_DOMAIN=riotpiao.homelab.com # Your cluster domain
|
||||
CLUSTER_DOMAIN=riotpiao.com # Your cluster domain
|
||||
POSTGRES_HOST=ddb-cluster-rw.ddb.svc.cluster.local
|
||||
MINIO_ENDPOINT=minio.storage.svc.cluster.local:9000
|
||||
KAFKA_BOOTSTRAP=kmsvc-kafka-bootstrap.sqs.svc.cluster.local:9092
|
||||
@@ -285,15 +285,15 @@ Add to `/etc/hosts` on every client machine (Mac/Linux):
|
||||
|
||||
```
|
||||
# WireGuard access (remote — via talos-cp-1)
|
||||
10.6.0.1 grafana.riotpiao.homelab.com authentik.riotpiao.homelab.com vault.riotpiao.homelab.com minio.riotpiao.homelab.com prometheus.riotpiao.homelab.com portainer.riotpiao.homelab.com longhorn.riotpiao.homelab.com loki.riotpiao.homelab.com forgejo.riotpiao.homelab.com temporal.riotpiao.homelab.com temporal-grpc.riotpiao.homelab.com kmsvc.riotpiao.homelab.com
|
||||
10.6.0.1 grafana.riotpiao.com authentik.riotpiao.com vault.riotpiao.com minio.riotpiao.com prometheus.riotpiao.com portainer.riotpiao.com longhorn.riotpiao.com loki.riotpiao.com forgejo.riotpiao.com temporal.riotpiao.com temporal-grpc.riotpiao.com kmsvc.riotpiao.com
|
||||
|
||||
# LAN access (on the home network — use actual LoadBalancer IP from above)
|
||||
192.168.1.160 grafana.riotpiao.homelab.com authentik.riotpiao.homelab.com vault.riotpiao.homelab.com minio.riotpiao.homelab.com prometheus.riotpiao.homelab.com portainer.riotpiao.homelab.com longhorn.riotpiao.homelab.com loki.riotpiao.homelab.com forgejo.riotpiao.homelab.com temporal.riotpiao.homelab.com temporal-grpc.riotpiao.homelab.com kmsvc.riotpiao.homelab.com
|
||||
192.168.1.160 grafana.riotpiao.com authentik.riotpiao.com vault.riotpiao.com minio.riotpiao.com prometheus.riotpiao.com portainer.riotpiao.com longhorn.riotpiao.com loki.riotpiao.com forgejo.riotpiao.com temporal.riotpiao.com temporal-grpc.riotpiao.com kmsvc.riotpiao.com
|
||||
```
|
||||
|
||||
**Note:** `192.168.1.160` is an example Cilium LB-IPAM assignment. Verify with `kubectl get svc -n ingress-nginx ingress-nginx`.
|
||||
|
||||
**There is no real DNS wildcard for `*.riotpiao.homelab.com`** — every hostname must be added to `/etc/hosts` explicitly (as above) before it resolves. Adding a new Ingress host doesn't make it reachable by itself; add the line too.
|
||||
**There is no real DNS wildcard for `*.riotpiao.com`** — every hostname must be added to `/etc/hosts` explicitly (as above) before it resolves. Adding a new Ingress host doesn't make it reachable by itself; add the line too.
|
||||
|
||||
### kubectl Context
|
||||
|
||||
@@ -310,14 +310,14 @@ Then access services at:
|
||||
|
||||
| Service | URL | Credentials |
|
||||
|---------|-----|-------------|
|
||||
| Grafana | http://grafana.riotpiao.homelab.com | admin / `GRAFANA_ADMIN_PASSWORD` or Authentik SSO |
|
||||
| Authentik | http://authentik.riotpiao.homelab.com | akadmin / see `.env` |
|
||||
| Vault | http://vault.riotpiao.homelab.com | root token / see `setup_vault.sh` output |
|
||||
| MinIO console | http://minio.riotpiao.homelab.com | `MINIO_ROOT_USER` / `MINIO_ROOT_PASSWORD` |
|
||||
| Prometheus | http://prometheus.riotpiao.homelab.com | no auth |
|
||||
| Portainer | http://portainer.riotpiao.homelab.com | set on first visit |
|
||||
| Longhorn | http://longhorn.riotpiao.homelab.com | no auth |
|
||||
| Forgejo *(planned)* | https://forgejo.forge.riotpiao.homelab.com | `rock` / `FORGEJO_ADMIN_PASSWORD`, or Authentik SSO |
|
||||
| Grafana | http://grafana.riotpiao.com | admin / `GRAFANA_ADMIN_PASSWORD` or Authentik SSO |
|
||||
| Authentik | http://authentik.riotpiao.com | akadmin / see `.env` |
|
||||
| Vault | http://vault.riotpiao.com | root token / see `setup_vault.sh` output |
|
||||
| MinIO console | http://minio.riotpiao.com | `MINIO_ROOT_USER` / `MINIO_ROOT_PASSWORD` |
|
||||
| Prometheus | http://prometheus.riotpiao.com | no auth |
|
||||
| Portainer | http://portainer.riotpiao.com | set on first visit |
|
||||
| Longhorn | http://longhorn.riotpiao.com | no auth |
|
||||
| Forgejo *(planned)* | https://forgejo.forge.riotpiao.com | `rock` / `FORGEJO_ADMIN_PASSWORD`, or Authentik SSO |
|
||||
| Argo CD *(planned)* | `kubectl port-forward -n argocd svc/argocd-server 8080:443` | Authentik SSO (admins only) |
|
||||
|
||||
Grafana → "Homelab" folder has the operator dashboards (sidecar-loaded from `k8s/monitoring/dashboards/`, no restart needed on change):
|
||||
@@ -379,7 +379,7 @@ Authentik is the central OIDC identity provider. Vault stores secrets and delega
|
||||
│
|
||||
│ OAuth2 / OIDC
|
||||
▼
|
||||
Authentik (authentik.riotpiao.homelab.com)
|
||||
Authentik (authentik.riotpiao.com)
|
||||
├── grafana app → Grafana OIDC login (group → Admin/Viewer role)
|
||||
├── minio app → MinIO OIDC login (group → readwrite/readonly policy)
|
||||
├── vault-browser → Vault UI OIDC login / `vault login -method=oidc`
|
||||
@@ -387,7 +387,7 @@ Authentik is the central OIDC identity provider. Vault stores secrets and delega
|
||||
│
|
||||
│ JWKS endpoint for JWT validation
|
||||
▼
|
||||
HashiCorp Vault (vault.riotpiao.homelab.com)
|
||||
HashiCorp Vault (vault.riotpiao.com)
|
||||
├── auth/jwt — core-cli authenticates with device code JWT
|
||||
├── auth/oidc — browser/UI login via Authentik
|
||||
└── secret/ — KV v2: mcp/*, cluster/*, cloud/*
|
||||
@@ -402,8 +402,8 @@ core put cluster/DUCKDNS_TOKEN DUCKDNS_TOKEN="abc" # field name = var
|
||||
**One-time IAM setup (after `helmfile apply`):**
|
||||
```bash
|
||||
# 1. Provision OIDC apps and groups in Authentik
|
||||
GRAFANA_URL=http://grafana.riotpiao.homelab.com \
|
||||
MINIO_URL=http://minio.riotpiao.homelab.com \
|
||||
GRAFANA_URL=http://grafana.riotpiao.com \
|
||||
MINIO_URL=http://minio.riotpiao.com \
|
||||
python3 k8s/talos-iam/provision_oidc.py
|
||||
|
||||
# 2. Init Vault, wire JWT + OIDC auth, seed secrets
|
||||
@@ -487,7 +487,7 @@ Pods / Talos journal (both nodes)
|
||||
│
|
||||
Grafana (logging ns) queries Loki + Prometheus via dashboards
|
||||
│
|
||||
Nginx Ingress → grafana.riotpiao.homelab.com browser access
|
||||
Nginx Ingress → grafana.riotpiao.com browser access
|
||||
```
|
||||
|
||||
## Example Applications & Workloads
|
||||
|
||||
Reference in New Issue
Block a user