Compare commits

..

13 Commits

4 changed files with 41 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: pieced-operator name: pieced-operator
description: PieCed IT tenant lifecycle operator description: PieCed IT tenant lifecycle operator
version: 0.1.26 version: 0.1.39
appVersion: "0.1.26" appVersion: "0.1.39"
type: application type: application

View File

@@ -123,6 +123,25 @@ spec:
type: array type: array
items: items:
type: string type: string
suspendedAt:
type: string
format: date-time
warnings:
type: array
items:
type: object
required:
- source
properties:
source:
type: string
reason:
type: string
message:
type: string
since:
type: string
format: date-time
observedGeneration: observedGeneration:
type: integer type: integer
format: int64 format: int64

View File

@@ -8,9 +8,17 @@ metadata:
app.kubernetes.io/name: pieced-operator app.kubernetes.io/name: pieced-operator
rules: rules:
# --- PiecedTenant CRD --- # --- PiecedTenant CRD ---
# `delete` is required so the operator can self-initiate the post-
# 60-day cleanup of suspended tenants (Bug 37b). Without it, the
# `r.Delete(ctx, tenant)` call in the suspend block fails with a
# 403 every reconcile cycle while the tenant sits past its
# retention window. Until then this verb wasn't strictly needed —
# the customer/portal initiated CR deletes, and the operator's
# finalizer ran cleanup; only with operator-initiated deletion did
# the missing verb become a problem.
- apiGroups: ["pieced.ch"] - apiGroups: ["pieced.ch"]
resources: ["piecedtenants"] resources: ["piecedtenants"]
verbs: ["get", "list", "watch", "update", "patch"] verbs: ["get", "list", "watch", "update", "patch", "delete"]
- apiGroups: ["pieced.ch"] - apiGroups: ["pieced.ch"]
resources: ["piecedtenants/status"] resources: ["piecedtenants/status"]
verbs: ["get", "update", "patch"] verbs: ["get", "update", "patch"]
@@ -34,29 +42,34 @@ rules:
verbs: ["create", "patch"] verbs: ["create", "patch"]
# --- Capsule Tenant --- # --- Capsule Tenant ---
# `patch` is required for server-side apply (SSA) — controller-runtime's
# `client.Apply` uses HTTP PATCH with content-type application/apply-patch+yaml.
# We keep `update` for backwards-compat in case any code path still does
# replace-style writes (currently none). Same applies to all unstructured
# resources below.
- apiGroups: ["capsule.clastix.io"] - apiGroups: ["capsule.clastix.io"]
resources: ["tenants"] resources: ["tenants"]
verbs: ["get", "list", "watch", "create", "update", "delete"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
# --- ESO SecretStore --- # --- ESO SecretStore ---
- apiGroups: ["external-secrets.io"] - apiGroups: ["external-secrets.io"]
resources: ["secretstores"] resources: ["secretstores"]
verbs: ["get", "list", "watch", "create", "update", "delete"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
# --- ESO ExternalSecret --- # --- ESO ExternalSecret ---
- apiGroups: ["external-secrets.io"] - apiGroups: ["external-secrets.io"]
resources: ["externalsecrets"] resources: ["externalsecrets"]
verbs: ["get", "list", "watch", "create", "update", "delete"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
# --- Cilium CiliumNetworkPolicy --- # --- Cilium CiliumNetworkPolicy ---
- apiGroups: ["cilium.io"] - apiGroups: ["cilium.io"]
resources: ["ciliumnetworkpolicies"] resources: ["ciliumnetworkpolicies"]
verbs: ["get", "list", "watch", "create", "update", "delete"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
# --- OpenClaw OpenClawInstance --- # --- OpenClaw OpenClawInstance ---
- apiGroups: ["openclaw.rocks"] - apiGroups: ["openclaw.rocks"]
resources: ["openclawinstances"] resources: ["openclawinstances"]
verbs: ["get", "list", "watch", "create", "update", "delete"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
# --- Leader election (coordination) --- # --- Leader election (coordination) ---
- apiGroups: ["coordination.k8s.io"] - apiGroups: ["coordination.k8s.io"]

View File

@@ -1,6 +1,6 @@
image: image:
repository: registry.c5ai.ch/pieced/pieced-operator repository: registry.c5ai.ch/pieced/pieced-operator
tag: "0.1.26" tag: "0.1.39"
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
imagePullSecrets: imagePullSecrets: