allow-tags: regexp:^[0-9a-f]{7}$ ensures newest-build strategy
compares commit SHA tags, not the stale :latest tag
69 lines
2.7 KiB
YAML
69 lines
2.7 KiB
YAML
# Wave 7 — api-gw, the cluster's API gateway (namespace `api`).
|
|
#
|
|
# Replaces Kong OSS 3.4.1, removed 2026-08-19. Kong existed to route
|
|
# `api.riotpiao.com`, but Kong OSS cannot dispatch on a request body, so the
|
|
# LLM surface had to be expressed as one path per model
|
|
# (`/v1/reasoning/chat/completions`, `/v1/ornith/...`, `/v1/qwen/...`) with a
|
|
# `request-transformer` plugin forcing the body's `model` field on each. The Go
|
|
# gateway reads the body and picks the upstream, so a single canonical
|
|
# `POST /v1/chat/completions` covers every model. See
|
|
# docs/adr/ADR-0001-retire-kong-for-go-gateway.md in the frontend repo.
|
|
#
|
|
# UPDATED 2026-08-22: Tracks main branch of homelab-frontend (auto-syncs on each push).
|
|
# Image built on every main commit with tag <commit-sha>.
|
|
# ArgoCD auto-pulls the latest image (live reconciliation ~3min).
|
|
#
|
|
# Two sources:
|
|
# 1. rock/homelab-frontend on the in-cluster Forgejo (prod branch) — the gateway's own
|
|
# kustomization (Deployment, Service, ConfigMap, RBAC, NetworkPolicy). It
|
|
# sets `namespace: api` itself, so no transformer is needed here. The
|
|
# Forgejo host must stay listed in the `homelab` AppProject sourceRepos or
|
|
# this Application is rejected with "is not permitted in project".
|
|
# 2. k8s/apps/api in this repo — the nginx edge Ingress for
|
|
# api.riotpiao.com, inherited from the retired `kong` Application. It
|
|
# cannot move to k8s/bootstrap/ingress/ingress.yaml because that syncs in
|
|
# wave 1, before namespace `api` exists.
|
|
#
|
|
# No resources-finalizer: deleting this Application leaves the workload running
|
|
# rather than cascading the delete.
|
|
apiVersion: argoproj.io/v1alpha1
|
|
kind: Application
|
|
metadata:
|
|
name: api-gw
|
|
namespace: argocd
|
|
labels:
|
|
app.kubernetes.io/name: api-gateway
|
|
app.kubernetes.io/component: gateway
|
|
annotations:
|
|
argocd.argoproj.io/sync-wave: "7"
|
|
# ArgoCD Image Updater - auto-update on new image push
|
|
argocd-image-updater.argoproj.io/image-list: gw=forgejo.riotpiao.com/rock/api-gateway
|
|
argocd-image-updater.argoproj.io/gw.update-strategy: newest-build
|
|
argocd-image-updater.argoproj.io/gw.allow-tags: regexp:^[0-9a-f]{7}$
|
|
argocd-image-updater.argoproj.io/write-back-method: argocd
|
|
spec:
|
|
project: homelab
|
|
revisionHistoryLimit: 3
|
|
sources:
|
|
- repoURL: https://forgejo.riotpiao.com/rock/homelab-frontend.git
|
|
targetRevision: main
|
|
path: k8s
|
|
- repoURL: https://forgejo.riotpiao.com/rock/homelab.git
|
|
targetRevision: main
|
|
path: k8s/apps/api
|
|
destination:
|
|
server: https://kubernetes.default.svc
|
|
namespace: api
|
|
syncPolicy:
|
|
automated:
|
|
prune: true
|
|
selfHeal: true
|
|
syncOptions:
|
|
- CreateNamespace=true
|
|
retry:
|
|
limit: 5
|
|
backoff:
|
|
duration: 5s
|
|
factor: 2
|
|
maxDuration: 3m
|