Phase 1b: Deploy docs hosting with Quartz #85

Merged
eblume merged 3 commits from feature/docs-phase-1b-hosting into main 2026-02-03 10:52:21 -08:00
8 changed files with 122 additions and 0 deletions
Showing only changes of commit 6450c981db - Show all commits

Add quartz deployment for docs hosting (Phase 1b)

- Create ArgoCD Application and manifests for quartz service
- Add docs.ops.eblu.me to Caddy reverse proxy
- ConfigMap points to blumeops v1.0.0 release tarball
- Tailscale ingress with homepage annotations for auto-discovery

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Erich Blume 2026-02-03 10:28:33 -08:00

View file

@ -70,6 +70,9 @@ caddy_services:
- name: hajimari
host: "go.{{ caddy_domain }}"
backend: "https://go.tail8d86e.ts.net"
- name: docs
host: "docs.{{ caddy_domain }}"
backend: "https://docs.tail8d86e.ts.net"
- name: sifaka
host: "nas.{{ caddy_domain }}"
backend: "http://sifaka:5000"

18
argocd/apps/quartz.yaml Normal file
View file

@ -0,0 +1,18 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: quartz
namespace: argocd
spec:
project: default
source:
repoURL: ssh://forgejo@forge.ops.eblu.me:2222/eblume/blumeops.git
targetRevision: main
path: argocd/manifests/quartz
destination:
server: https://kubernetes.default.svc
namespace: quartz
syncPolicy:
syncOptions:
- CreateNamespace=true

View file

@ -0,0 +1,10 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: quartz-config
namespace: quartz
data:
# BlumeOps docs release URL
# Update this to deploy a new docs version
DOCS_RELEASE_URL: "https://forge.ops.eblu.me/eblume/blumeops/releases/download/v1.0.0/docs-v1.0.0.tar.gz"

View file

@ -0,0 +1,43 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: quartz
namespace: quartz
spec:
replicas: 1
selector:
matchLabels:
app: quartz
template:
metadata:
labels:
app: quartz
spec:
containers:
- name: quartz
image: registry.ops.eblu.me/blumeops/quartz:v1.0.0
ports:
- containerPort: 80
name: http
envFrom:
- configMapRef:
name: quartz-config
resources:
requests:
memory: "64Mi"
cpu: "10m"
limits:
memory: "128Mi"
livenessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 5
periodSeconds: 10

View file

@ -0,0 +1,25 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: quartz-tailscale
namespace: quartz
annotations:
tailscale.com/proxy-class: "default"
gethomepage.dev/enabled: "true"
gethomepage.dev/name: "Docs"
gethomepage.dev/group: "Apps"
gethomepage.dev/icon: "mdi-book-open-page-variant"
gethomepage.dev/description: "BlumeOps Documentation"
gethomepage.dev/href: "https://docs.ops.eblu.me"
gethomepage.dev/pod-selector: "app=quartz"
spec:
ingressClassName: tailscale
defaultBackend:
service:
name: quartz
port:
number: 80
tls:
- hosts:
- docs

View file

@ -0,0 +1,9 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: quartz
resources:
- configmap.yaml
- deployment.yaml
- service.yaml
- ingress-tailscale.yaml

View file

@ -0,0 +1,13 @@
---
apiVersion: v1
kind: Service
metadata:
name: quartz
namespace: quartz
spec:
selector:
app: quartz
ports:
- name: http
port: 80
targetPort: 80

View file

@ -63,6 +63,7 @@ The documentation is being restructured to follow the [Diataxis](https://diataxi
```
- [ ] Test end-to-end: commit -> build -> release -> deploy
- [ ] Set up `CHANGELOG.md` with [towncrier](https://towncrier.readthedocs.io/) using news fragments from zk cards
- [ ] Add `docs.ops.eblu.me` link to homepage dashboard
### Phase 2: Tutorials
Learning-oriented content for getting started.