Compare commits

..
Author SHA1 Message Date
renovate[bot] e6155c1143 chore(deps): update terraform proxmox to v0.113.1 2026-09-12 04:02:02 +00:00
vhaudiquet f2d7fe7bcc openclaw: pin image to 2026.9.3 and chown PVC mount root (operator#607)
- Pin gateway image to immutable tag 2026.9.3: the stale node-cached
  'latest' (old build, state schema v1) crash-looped against the PVC's
  DB already migrated to schema v15/16.
- Add fix-data-owner init container: the operator mounts the PVC root
  at /home/openclaw/.openclaw with fsGroup only, leaving the mount root
  owned by root; OpenClaw >= 2026.9 fchmods its config dir on write and
  fails with EPERM (paperclipinc/openclaw-operator#607).
- Ran one-time 'openclaw doctor --fix --non-interactive' against the
  PVC to complete the 2.0 workspace-state migration.
2026-09-10 00:59:25 +02:00
vhaudiquet 807d764bdf cilium(kube): scale replicas down to 1 2026-09-10 00:16:34 +02:00
3 changed files with 35 additions and 1 deletions
+5
View File
@@ -31,6 +31,11 @@ l2announcements:
enabled: true
externalIPs:
enabled: true
# Single-node cluster: the operator defaults to 2 replicas, but both
# bind the same host ports, so the second replica can never schedule ("node(s)
# didn't have free ports for the requested pod ports") and sits Pending forever.
operator:
replicas: 1
ingressController:
enabled: false
loadbalancerMode: shared
+1 -1
View File
@@ -2,7 +2,7 @@ terraform {
required_providers {
proxmox = {
source = "bpg/proxmox"
version = "0.81.0"
version = "0.113.1"
}
}
}
@@ -3,6 +3,35 @@ kind: OpenClawInstance
metadata:
name: openclaw
spec:
# Pin the gateway image to an immutable version tag. Running `latest` with
# pullPolicy=IfNotPresent let a stale node-cached image (old build, state
# schema v1) fight the PVC's DB migrated by a newer build (schema v15),
# crash-looping the container. Bump this tag alongside upstream releases.
image:
repository: ghcr.io/openclaw/openclaw
tag: "2026.9.3"
# Workaround for paperclipinc/openclaw-operator#607: the operator mounts the
# PVC root directly at /home/openclaw/.openclaw and only fsGroup is applied,
# so the mount root stays owned by root. OpenClaw >= 2026.9 fchmods its config
# dir when writing openclaw.json, which fails with EPERM for a non-owner.
# This one-shot init container chowns the mount root to the pod UID.
initContainers:
- name: fix-data-owner
image: docker.io/library/busybox:1.37
command: ["sh", "-c", "chown 1000:1000 /data && ls -ld /data"]
securityContext:
runAsUser: 0
runAsNonRoot: false
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
add: ["CHOWN"]
seccompProfile:
type: RuntimeDefault
volumeMounts:
- name: data
mountPath: /data
# Provider API keys come from the SOPS-encrypted Secret below.
# The gateway token is auto-generated by the operator (no mDNS pairing in k8s).
envFrom: