Add Gitea Helm values and PersistentVolume manifest for deployment
This commit is contained in:
parent
7155d0c3a1
commit
caff826162
77
README.md
Normal file
77
README.md
Normal file
@ -0,0 +1,77 @@
|
||||
# homelab
|
||||
|
||||
Infrastructure-as-Code for a 3-machine homelab running K3s.
|
||||
|
||||
## Status
|
||||
|
||||
| Phase | Description | Status |
|
||||
|---|---|---|
|
||||
| 0 | Backup configs, init repo | ✅ Done |
|
||||
| 1 | Bootstrap Minisforum — K3s server + Traefik | ✅ Done |
|
||||
| 2 | Join Debian as K3s agent, SMB setup | ⏳ Next |
|
||||
| 3 | Deploy core infra — Gitea, Pi-hole, DDNS | 🔜 Planned |
|
||||
| 4 | Deploy app services — Jellyfin, qBittorrent, etc. | 🔜 Planned |
|
||||
| 5 | Networking cutover | 🔜 Planned |
|
||||
| 6 | Cleanup legacy Debian services | 🔜 Planned |
|
||||
|
||||
## Architecture
|
||||
|
||||
| Machine | IP | SSH Port | Role | Status |
|
||||
|---|---|---|---|---|
|
||||
| Minisforum UM780 XTX | 192.168.7.77 | 430 | K3s server | ✅ Running — K3s + Traefik |
|
||||
| Debian Server (HP ProDesk) | TBD | — | K3s agent | ⏳ Phase 2 |
|
||||
| Mac Mini M2 | TBD | — | Standalone | ⏳ Phase 3+ |
|
||||
|
||||
## Repo Structure
|
||||
|
||||
```
|
||||
ansible/
|
||||
inventory.yml # host definitions
|
||||
playbooks/ # top-level playbooks
|
||||
roles/
|
||||
common/ # base OS setup (users, SSH, UFW, packages)
|
||||
k3s-server/ # K3s server install + Helm
|
||||
k3s-agent/ # K3s agent join (Phase 2)
|
||||
smb/ # Samba on Debian (Phase 2)
|
||||
helm/ # custom Helm charts (if needed; most use upstream charts)
|
||||
values/ # Helm values files per service
|
||||
scripts/ # deploy-all.sh, porkbun-ddns.sh
|
||||
old.debian-data/ # gitignored — backup of pre-migration configs
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Ansible installed on your workstation: `pip install ansible`
|
||||
- Ansible collections: `ansible-galaxy collection install community.general ansible.posix`
|
||||
- SSH key at `~/.ssh/id_ed25519-nik-macbookair`
|
||||
|
||||
## Connecting
|
||||
|
||||
```bash
|
||||
# SSH
|
||||
ssh minisforum # port 430, configured via ~/.ssh/config
|
||||
|
||||
# Kubectl (after fetching kubeconfig)
|
||||
export KUBECONFIG=/tmp/k3s-minisforum.yaml
|
||||
kubectl get nodes
|
||||
kubectl get pods -A
|
||||
```
|
||||
|
||||
## Deploying / Re-deploying
|
||||
|
||||
```bash
|
||||
# Re-run bootstrap (idempotent)
|
||||
ansible-playbook -i ansible/inventory.yml ansible/playbooks/bootstrap-minisforum.yml
|
||||
|
||||
# Re-run K3s setup (idempotent)
|
||||
ansible-playbook -i ansible/inventory.yml ansible/playbooks/setup-k3s.yml
|
||||
|
||||
# Upgrade Traefik
|
||||
helm upgrade --install traefik traefik/traefik \
|
||||
--namespace traefik --create-namespace \
|
||||
-f values/traefik.yml
|
||||
```
|
||||
|
||||
## See Also
|
||||
|
||||
- [migration-plan.md](migration-plan.md) — full phase-by-phase migration plan
|
||||
23
manifests/gitea-pv.yml
Normal file
23
manifests/gitea-pv.yml
Normal file
@ -0,0 +1,23 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
metadata:
|
||||
name: gitea-pv
|
||||
labels:
|
||||
app: gitea
|
||||
spec:
|
||||
capacity:
|
||||
storage: 10Gi
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
hostPath:
|
||||
path: /data/gitea
|
||||
type: DirectoryOrCreate
|
||||
nodeAffinity:
|
||||
required:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: kubernetes.io/hostname
|
||||
operator: In
|
||||
values:
|
||||
- minisforum
|
||||
72
values/gitea.yml
Normal file
72
values/gitea.yml
Normal file
@ -0,0 +1,72 @@
|
||||
# Gitea Helm values
|
||||
# Deploy:
|
||||
# helm upgrade --install gitea gitea-charts/gitea \
|
||||
# --namespace gitea --create-namespace \
|
||||
# -f values/gitea.yml
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
tag: "1.23"
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: traefik
|
||||
annotations:
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
hosts:
|
||||
- host: gitea.home.arpa
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
|
||||
gitea:
|
||||
admin:
|
||||
username: nik
|
||||
password: changeme123
|
||||
email: nik.afiq98@ymail.com
|
||||
|
||||
config:
|
||||
server:
|
||||
DOMAIN: gitea.home.arpa
|
||||
ROOT_URL: https://gitea.home.arpa
|
||||
SSH_DOMAIN: gitea.home.arpa
|
||||
SSH_PORT: 2222
|
||||
repository:
|
||||
DEFAULT_PRIVATE: true
|
||||
service:
|
||||
DISABLE_REGISTRATION: true
|
||||
|
||||
persistence:
|
||||
enabled: true
|
||||
storageClass: ""
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
size: 10Gi
|
||||
volumeName: ""
|
||||
existingClaim: ""
|
||||
annotations:
|
||||
helm.sh/resource-policy: keep
|
||||
|
||||
postgresql:
|
||||
enabled: true
|
||||
primary:
|
||||
persistence:
|
||||
annotations:
|
||||
helm.sh/resource-policy: keep
|
||||
global:
|
||||
postgresql:
|
||||
auth:
|
||||
password: gitea-db-password
|
||||
username: gitea
|
||||
database: gitea
|
||||
|
||||
service:
|
||||
ssh:
|
||||
type: LoadBalancer
|
||||
port: 2222
|
||||
loadBalancerIP: 192.168.7.77
|
||||
|
||||
postgresql-ha:
|
||||
enabled: false
|
||||
Loading…
x
Reference in New Issue
Block a user