Add CV service reference card and docs updates #171
5 changed files with 78 additions and 3 deletions
1
docs/changelog.d/cv-docs.doc.md
Normal file
1
docs/changelog.d/cv-docs.doc.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
Add CV service reference card and update apps registry, Caddy docs, and services index.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Apps
|
||||
modified: 2026-02-07
|
||||
modified: 2026-02-12
|
||||
tags:
|
||||
- kubernetes
|
||||
- argocd
|
||||
|
|
@ -34,6 +34,7 @@ Registry of all applications deployed via [[argocd]].
|
|||
| `torrent` | torrent | `argocd/manifests/torrent/` | [[transmission]] |
|
||||
| `navidrome` | navidrome | `argocd/manifests/navidrome/` | [[navidrome]] |
|
||||
| `teslamate` | teslamate | `argocd/manifests/teslamate/` | [[teslamate]] |
|
||||
| `cv` | cv | `argocd/manifests/cv/` | [[cv]] |
|
||||
| `forgejo-runner` | forgejo-runner | `argocd/manifests/forgejo-runner/` | [[forgejo]] CI |
|
||||
|
||||
## Sync Policies
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Reference
|
||||
modified: 2026-02-10
|
||||
modified: 2026-02-12
|
||||
tags:
|
||||
- reference
|
||||
---
|
||||
|
|
@ -34,6 +34,7 @@ Individual service reference cards with URLs and configuration details.
|
|||
| [[transmission]] | BitTorrent daemon | k8s |
|
||||
| [[zot]] | Container registry | indri |
|
||||
| [[devpi]] | PyPI caching proxy | k8s |
|
||||
| [[cv]] | Resume / CV site | k8s |
|
||||
| [[docs]] | Documentation site (Quartz) | k8s |
|
||||
| [[flyio-proxy]] | Public reverse proxy (Fly.io + Tailscale) | Fly.io |
|
||||
| [[automounter]] | SMB share automounter | indri |
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Caddy
|
||||
modified: 2026-02-08
|
||||
modified: 2026-02-12
|
||||
tags:
|
||||
- service
|
||||
- networking
|
||||
|
|
@ -48,6 +48,7 @@ K8s services are proxied via their Tailscale Ingress endpoints:
|
|||
|-----------|---------|---------|
|
||||
| `grafana.ops.eblu.me` | `grafana.tail8d86e.ts.net` | [[grafana]] |
|
||||
| `argocd.ops.eblu.me` | `argocd.tail8d86e.ts.net` | [[argocd]] |
|
||||
| `cv.ops.eblu.me` | `cv.tail8d86e.ts.net` | [[cv]] |
|
||||
| `docs.ops.eblu.me` | `docs.tail8d86e.ts.net` | [[docs]] (now publicly available at `docs.eblu.me` via [[flyio-proxy]]) |
|
||||
| `feed.ops.eblu.me` | `feed.tail8d86e.ts.net` | [[miniflux]] |
|
||||
| ... | ... | (see defaults/main.yml for full list) |
|
||||
|
|
|
|||
71
docs/reference/services/cv.md
Normal file
71
docs/reference/services/cv.md
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
title: CV
|
||||
modified: 2026-02-12
|
||||
tags:
|
||||
- service
|
||||
- resume
|
||||
---
|
||||
|
||||
# CV (Resume)
|
||||
|
||||
Personal resume/CV served as a static HTML page with PDF download, built from YAML source via Jinja2 and WeasyPrint.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| **URL** | `cv.ops.eblu.me` (tailnet only, via [[caddy]]) |
|
||||
| **Namespace** | `cv` |
|
||||
| **Container** | `registry.ops.eblu.me/blumeops/cv:v1.0.0` |
|
||||
| **Source repo** | `forge.ops.eblu.me/eblume/cv` (private, not mirrored to GitHub) |
|
||||
| **Content packages** | `forge.ops.eblu.me/eblume/-/packages` (generic package `cv`) |
|
||||
| **ArgoCD App** | `cv` |
|
||||
|
||||
## Architecture
|
||||
|
||||
1. **Source**: `resume.yaml` (content) + `template.html` (Jinja2) + `style.css` in the cv repo
|
||||
2. **Build**: `render.py` (uv script runner) generates `index.html`; WeasyPrint generates `resume.pdf`
|
||||
3. **Release**: Dagger `build` function packages `index.html`, `style.css`, `resume.pdf` into a tarball, uploaded to Forgejo generic packages
|
||||
4. **Deploy**: nginx container downloads the tarball at startup via `CV_RELEASE_URL` env var
|
||||
|
||||
## Endpoints
|
||||
|
||||
| Path | Description |
|
||||
|------|-------------|
|
||||
| `/` | Resume HTML page |
|
||||
| `/resume.pdf` | PDF download (Content-Disposition: attachment) |
|
||||
| `/healthz` | Health check (200 OK) |
|
||||
|
||||
## Configuration
|
||||
|
||||
**Key files (blumeops):**
|
||||
|
||||
- `containers/cv/Dockerfile` — nginx:alpine container
|
||||
- `containers/cv/start.sh` — tarball download + extraction
|
||||
- `containers/cv/default.conf` — nginx config (gzip, caching, PDF headers)
|
||||
- `argocd/manifests/cv/deployment.yaml` — `CV_RELEASE_URL` env var
|
||||
- `argocd/apps/cv.yaml` — ArgoCD Application
|
||||
|
||||
**Key files (cv repo):**
|
||||
|
||||
- `resume.yaml` — Resume content (YAML)
|
||||
- `template.html` — Jinja2 HTML template
|
||||
- `style.css` — CSS with screen/print media queries
|
||||
- `render.py` — uv script runner (PEP 723) that renders YAML → HTML
|
||||
- `src/cv_ci/main.py` — Dagger pipeline (alpine + uv + WeasyPrint)
|
||||
- `.forgejo/workflows/cv-release.yaml` — Release workflow
|
||||
|
||||
## Secrets
|
||||
|
||||
| Secret | Repo | Source | Description |
|
||||
|--------|------|--------|-------------|
|
||||
| `FORGE_TOKEN` | cv | 1Password (via Ansible) | Forgejo API token for package uploads |
|
||||
|
||||
Provisioned via `forgejo_actions_secrets` Ansible role. See [[create-release-artifact-workflow]].
|
||||
|
||||
## Related
|
||||
|
||||
- [[docs]] — Similar architecture (nginx container + content tarball)
|
||||
- [[caddy]] — Reverse proxy for `cv.ops.eblu.me`
|
||||
- [[create-release-artifact-workflow]] — How to set up release artifact workflows
|
||||
- [[deploy-k8s-service]] — General k8s deployment guide
|
||||
Loading…
Add table
Add a link
Reference in a new issue