feat: add Flux ImageRepository + ImagePolicy + ImageUpdateAutomation for all three API services (closes leeworks-agents/api-company#51)

This commit is contained in:
agent-company
2026-05-26 20:45:33 +00:00
parent 68a1524dca
commit 82c9f70a01
8 changed files with 120 additions and 3 deletions
+1 -1
View File
@@ -35,7 +35,7 @@ spec:
- name: gitea-registry
containers:
- name: air-quality
image: registry.leeworks.dev/air-quality/server:latest
image: registry.leeworks.dev/air-quality/server:latest # {"$imagepolicy": "flux-system:air-quality"}
ports:
- containerPort: 3000
env:
+1 -1
View File
@@ -35,7 +35,7 @@ spec:
- name: gitea-registry
containers:
- name: holidays
image: registry.leeworks.dev/holidays/server:latest
image: registry.leeworks.dev/holidays/server:latest # {"$imagepolicy": "flux-system:holidays"}
ports:
- containerPort: 3000
env:
+39
View File
@@ -0,0 +1,39 @@
# ImagePolicy: select the latest semver tag from each ImageRepository.
# Tags pushed by CI should follow semver (e.g. v1.2.3) or use "latest" —
# the semver policy picks up any vX.Y.Z tag. The "latest" alias keeps
# things working before formal releases are tagged.
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImagePolicy
metadata:
name: zip-enrichment
namespace: flux-system
spec:
imageRepositoryRef:
name: zip-enrichment
policy:
semver:
range: ">=0.1.0"
---
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImagePolicy
metadata:
name: holidays
namespace: flux-system
spec:
imageRepositoryRef:
name: holidays
policy:
semver:
range: ">=0.1.0"
---
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImagePolicy
metadata:
name: air-quality
namespace: flux-system
spec:
imageRepositoryRef:
name: air-quality
policy:
semver:
range: ">=0.1.0"
@@ -0,0 +1,34 @@
# Flux image-reflector-controller watches these registries for new image tags.
# Requires: flux-system/gitea-image-automation-token secret (see docs/operator-runbook.md)
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImageRepository
metadata:
name: zip-enrichment
namespace: flux-system
spec:
image: registry.leeworks.dev/zip-enrichment/server
interval: 5m
secretRef:
name: gitea-leeworks-agents-token
---
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImageRepository
metadata:
name: holidays
namespace: flux-system
spec:
image: registry.leeworks.dev/holidays/server
interval: 5m
secretRef:
name: gitea-leeworks-agents-token
---
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImageRepository
metadata:
name: air-quality
namespace: flux-system
spec:
image: registry.leeworks.dev/air-quality/server
interval: 5m
secretRef:
name: gitea-leeworks-agents-token
@@ -0,0 +1,37 @@
# ImageUpdateAutomation: when an ImagePolicy selects a new tag, this object
# instructs Flux to open a commit on the api-company repo updating the
# image reference in the relevant HelmRelease values.
#
# The GitRepository used here is the api-company source (flux-system/api-company).
# Flux needs write access; create the token secret first:
# kubectl create secret generic gitea-image-automation-token \
# -n flux-system \
# --from-literal=username=leeworks-agents \
# --from-literal=password=<TOKEN_WITH_WRITE_REPO>
# Then patch the api-company GitRepository to reference it (or reuse
# gitea-leeworks-agents-token if that token also has write:repository scope).
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImageUpdateAutomation
metadata:
name: api-company
namespace: flux-system
spec:
interval: 10m
sourceRef:
kind: GitRepository
name: api-company
git:
checkout:
ref:
branch: main
commit:
author:
email: agent@leeworks.dev
name: Flux Image Automation
messageTemplate: |
chore(image): update {{range .Updated.Images}}{{.Repository}}:{{.NewTag}} {{end}}
push:
branch: main
update:
path: ./flux
strategy: Setters
+6
View File
@@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- imagerepositories.yaml
- imagepolicies.yaml
- imageupdateautomation.yaml
+1
View File
@@ -7,3 +7,4 @@ resources:
- zip-enrichment
- holidays
- air-quality
- image-automation
+1 -1
View File
@@ -35,7 +35,7 @@ spec:
- name: gitea-registry
containers:
- name: zip-enrichment
image: registry.leeworks.dev/zip-enrichment/server:latest
image: registry.leeworks.dev/zip-enrichment/server:latest # {"$imagepolicy": "flux-system:zip-enrichment"}
ports:
- containerPort: 3000
env: