feat: add Flux ImageRepository + ImagePolicy + ImageUpdateAutomation for all three API services (closes leeworks-agents/api-company#51)
This commit is contained in:
@@ -35,7 +35,7 @@ spec:
|
|||||||
- name: gitea-registry
|
- name: gitea-registry
|
||||||
containers:
|
containers:
|
||||||
- name: air-quality
|
- 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:
|
ports:
|
||||||
- containerPort: 3000
|
- containerPort: 3000
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ spec:
|
|||||||
- name: gitea-registry
|
- name: gitea-registry
|
||||||
containers:
|
containers:
|
||||||
- name: holidays
|
- name: holidays
|
||||||
image: registry.leeworks.dev/holidays/server:latest
|
image: registry.leeworks.dev/holidays/server:latest # {"$imagepolicy": "flux-system:holidays"}
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 3000
|
- containerPort: 3000
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- imagerepositories.yaml
|
||||||
|
- imagepolicies.yaml
|
||||||
|
- imageupdateautomation.yaml
|
||||||
@@ -7,3 +7,4 @@ resources:
|
|||||||
- zip-enrichment
|
- zip-enrichment
|
||||||
- holidays
|
- holidays
|
||||||
- air-quality
|
- air-quality
|
||||||
|
- image-automation
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ spec:
|
|||||||
- name: gitea-registry
|
- name: gitea-registry
|
||||||
containers:
|
containers:
|
||||||
- name: zip-enrichment
|
- 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:
|
ports:
|
||||||
- containerPort: 3000
|
- containerPort: 3000
|
||||||
env:
|
env:
|
||||||
|
|||||||
Reference in New Issue
Block a user