Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5d46d3ada0 | |||
| e98dd8b0a2 | |||
| 90a9aad15d | |||
| 4f4b4286dc | |||
| 1cc2ec2e92 | |||
| b3cc9b0975 | |||
| a6f19e23c6 | |||
| ec41528f1e |
@@ -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.31
|
version: 0.1.39
|
||||||
appVersion: "0.1.31"
|
appVersion: "0.1.39"
|
||||||
type: application
|
type: application
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
image:
|
image:
|
||||||
repository: registry.c5ai.ch/pieced/pieced-operator
|
repository: registry.c5ai.ch/pieced/pieced-operator
|
||||||
tag: "0.1.31"
|
tag: "0.1.39"
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
|
|||||||
Reference in New Issue
Block a user