Eight objects cover grafana, argocd, comfyui, minio, paperless, immich, forgejo and api-gw. Each names its ZITADEL app, the Secret it writes, the consumer to roll and whether the consumer reloads hot or needs a restart. All are suspended: the controller image does not exist yet, and an unsuspended object would claim an intent that no process acts on. The README records the retirement target for the 34 .enc.yaml files: six root-of-trust secrets that cannot rotate themselves survive, everything else becomes a KeyRotation and leaves git.
29 lines
877 B
YAML
29 lines
877 B
YAML
# Example: rotate a service user's machine key with no gap.
|
|
#
|
|
# Machine keys overlap in ZITADEL, so the old key stays valid until the new one has
|
|
# obtained a token. Nothing in the window fails.
|
|
#
|
|
# Apply only after the controller runs and the machine user exists.
|
|
apiVersion: iam.homelab.riotpiao.com/v1
|
|
kind: KeyRotation
|
|
metadata:
|
|
name: example-machine-key
|
|
namespace: iam
|
|
spec:
|
|
provider: zitadel-machine-key
|
|
strategy: overlap
|
|
intervalHours: 720 # 30 days
|
|
suspend: true # flip to false once the pilot is proven
|
|
target:
|
|
machineUserID: "REPLACE_WITH_SERVICE_USER_ID"
|
|
secretName: example-jwt
|
|
secretNamespace: iam
|
|
secretKeys:
|
|
key: key
|
|
key-id: key-id
|
|
reload: hot # the consumer watches the file, so no restart
|
|
consumers: []
|
|
verify:
|
|
tokenExchange: true
|
|
audienceProject: "396757796898471937"
|