Skip to content

feat(openebs): deploy just localpv#1245

Merged
jfroy merged 1 commit intomainfrom
storage-cleanup
May 1, 2026
Merged

feat(openebs): deploy just localpv#1245
jfroy merged 1 commit intomainfrom
storage-cleanup

Conversation

@jfroy
Copy link
Copy Markdown
Owner

@jfroy jfroy commented May 1, 2026

Summary by CodeRabbit

  • New Features
    • Added OpenEBS LocalPV storage provisioner configuration to enable persistent local volume support in the cluster.
    • Configured automated reconciliation with drift detection and remediation policies for storage deployment.
    • Integrated node scheduling tolerations for control-plane nodes and configured hostpath storage base paths.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 1, 2026

📝 Walkthrough

Walkthrough

The changes introduce OpenEBS LocalPV provisioner deployment configuration by adding references in the openebs-system kustomization, defining a Flux HelmRelease and OCIRepository for the localpv-provisioner Helm chart version 4.4.0, and organizing supporting Kustomization files for deployment orchestration.

Changes

Cohort / File(s) Summary
OpenEBS System Integration
kubernetes/apps/openebs-system/kustomization.yaml
Adds reference to ./openebs-localpv/ks.yaml in the resources array to include the OpenEBS LocalPV deployment.
OpenEBS LocalPV Deployment
kubernetes/apps/openebs-system/openebs-localpv/app/helmrelease.yaml, kubernetes/apps/openebs-system/openebs-localpv/app/kustomization.yaml
Introduces OCIRepository pointing to OpenEBS LocalPV Helm chart version 4.4.0 and HelmRelease with drift detection, remediation policies, and Helm values for image registry, storage path, node toleration, and analytics settings. Kustomization file loads the HelmRelease for Kustomize processing.
OpenEBS LocalPV Flux Orchestration
kubernetes/apps/openebs-system/openebs-localpv/ks.yaml
Defines Flux Kustomization resource that orchestrates deployment with 1-hour reconciliation interval, prune mode enabled, health checks on the HelmRelease, and GitRepository source reference.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • flatops#1243: Modifies the same kustomization resources list for kubernetes/apps/openebs-system/kustomization.yaml, removing ./zfs-volumes/ks.yaml while this PR adds ./openebs-localpv/ks.yaml.

Suggested labels

area/kubernetes

Poem

🐰 A LocalPV hops into the cluster with glee,
OpenEBS storage, now easy to see!
With Flux orchestrating and Helm on the way,
Provisioning volumes throughout the whole day! 📦✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: deploying the OpenEBS localpv provisioner as a focused component.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch storage-cleanup

Review rate limit: 9/10 reviews remaining, refill in 6 minutes.

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

--- HelmRelease: openebs-system/openebs-localpv ServiceAccount: openebs-system/openebs-localpv-localpv-provisioner

+++ HelmRelease: openebs-system/openebs-localpv ServiceAccount: openebs-system/openebs-localpv-localpv-provisioner

@@ -0,0 +1,12 @@

+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: openebs-localpv-localpv-provisioner
+  labels:
+    heritage: Helm
+    app: localpv-provisioner
+    release: openebs-localpv
+    component: localpv-provisioner
+    openebs.io/component-name: openebs-localpv-provisioner
+
--- HelmRelease: openebs-system/openebs-localpv StorageClass: openebs-system/openebs-hostpath

+++ HelmRelease: openebs-system/openebs-localpv StorageClass: openebs-system/openebs-hostpath

@@ -0,0 +1,16 @@

+---
+apiVersion: storage.k8s.io/v1
+kind: StorageClass
+metadata:
+  name: openebs-hostpath
+  annotations:
+    openebs.io/cas-type: local
+    cas.openebs.io/config: |
+      - name: StorageType
+        value: "hostpath"
+      - name: BasePath
+        value: "/var/openebs/local"
+provisioner: openebs.io/local
+volumeBindingMode: WaitForFirstConsumer
+reclaimPolicy: Delete
+
--- HelmRelease: openebs-system/openebs-localpv ClusterRole: openebs-system/openebs-localpv-localpv-provisioner

+++ HelmRelease: openebs-system/openebs-localpv ClusterRole: openebs-system/openebs-localpv-localpv-provisioner

@@ -0,0 +1,75 @@

+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: openebs-localpv-localpv-provisioner
+  labels:
+    heritage: Helm
+    app: localpv-provisioner
+    release: openebs-localpv
+    component: localpv-provisioner
+    openebs.io/component-name: openebs-localpv-provisioner
+rules:
+- apiGroups:
+  - '*'
+  resources:
+  - nodes
+  verbs:
+  - get
+  - list
+  - watch
+- apiGroups:
+  - '*'
+  resources:
+  - namespaces
+  - pods
+  - events
+  - endpoints
+  verbs:
+  - '*'
+- apiGroups:
+  - '*'
+  resources:
+  - resourcequotas
+  - limitranges
+  verbs:
+  - list
+  - watch
+- apiGroups:
+  - '*'
+  resources:
+  - storageclasses
+  - persistentvolumeclaims
+  - persistentvolumes
+  verbs:
+  - '*'
+- apiGroups:
+  - apiextensions.k8s.io
+  resources:
+  - customresourcedefinitions
+  verbs:
+  - get
+  - list
+  - create
+  - update
+  - delete
+  - patch
+- apiGroups:
+  - openebs.io
+  resources:
+  - '*'
+  verbs:
+  - '*'
+- apiGroups:
+  - coordination.k8s.io
+  resources:
+  - leases
+  verbs:
+  - get
+  - create
+  - update
+- nonResourceURLs:
+  - /metrics
+  verbs:
+  - get
+
--- HelmRelease: openebs-system/openebs-localpv ClusterRoleBinding: openebs-system/openebs-localpv-localpv-provisioner

+++ HelmRelease: openebs-system/openebs-localpv ClusterRoleBinding: openebs-system/openebs-localpv-localpv-provisioner

@@ -0,0 +1,20 @@

+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: openebs-localpv-localpv-provisioner
+  labels:
+    heritage: Helm
+    app: localpv-provisioner
+    release: openebs-localpv
+    component: localpv-provisioner
+    openebs.io/component-name: openebs-localpv-provisioner
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: openebs-localpv-localpv-provisioner
+subjects:
+- kind: ServiceAccount
+  name: openebs-localpv-localpv-provisioner
+  namespace: openebs-system
+
--- HelmRelease: openebs-system/openebs-localpv Deployment: openebs-system/openebs-localpv-localpv-provisioner

+++ HelmRelease: openebs-system/openebs-localpv Deployment: openebs-system/openebs-localpv-localpv-provisioner

@@ -0,0 +1,85 @@

+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: openebs-localpv-localpv-provisioner
+  labels:
+    heritage: Helm
+    app: localpv-provisioner
+    release: openebs-localpv
+    component: localpv-provisioner
+    openebs.io/component-name: openebs-localpv-provisioner
+spec:
+  replicas: 1
+  strategy:
+    type: Recreate
+    rollingUpdate: null
+  selector:
+    matchLabels:
+      app: localpv-provisioner
+      release: openebs-localpv
+      component: localpv-provisioner
+  template:
+    metadata:
+      labels:
+        heritage: Helm
+        app: localpv-provisioner
+        release: openebs-localpv
+        component: localpv-provisioner
+        openebs.io/component-name: openebs-localpv-provisioner
+        name: openebs-localpv-provisioner
+        openebs.io/logging: 'true'
+    spec:
+      serviceAccountName: openebs-localpv-localpv-provisioner
+      securityContext: {}
+      containers:
+      - name: openebs-localpv-localpv-provisioner
+        image: quay.io/openebs/provisioner-localpv:4.4.0
+        imagePullPolicy: IfNotPresent
+        resources: null
+        env:
+        - name: OPENEBS_NAMESPACE
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.namespace
+        - name: NODE_NAME
+          valueFrom:
+            fieldRef:
+              fieldPath: spec.nodeName
+        - name: OPENEBS_SERVICE_ACCOUNT
+          valueFrom:
+            fieldRef:
+              fieldPath: spec.serviceAccountName
+        - name: OPENEBS_IO_ENABLE_ANALYTICS
+          value: 'false'
+        - name: OPENEBS_IO_BASE_PATH
+          value: /var/openebs/local
+        - name: OPENEBS_IO_HELPER_IMAGE
+          value: quay.io/openebs/linux-utils:4.3.0
+        - name: OPENEBS_IO_HELPER_POD_HOST_NETWORK
+          value: 'false'
+        - name: OPENEBS_IO_INSTALLER_TYPE
+          value: localpv-charts-helm
+        - name: LEADER_ELECTION_ENABLED
+          value: 'true'
+        livenessProbe:
+          exec:
+            command:
+            - sh
+            - -c
+            - test `pgrep -c "^provisioner-loc.*"` = 1
+          initialDelaySeconds: 30
+          periodSeconds: 60
+      tolerations:
+      - effect: NoExecute
+        key: node.kubernetes.io/unreachable
+        operator: Exists
+        tolerationSeconds: 5
+      - effect: NoExecute
+        key: node.kubernetes.io/not-ready
+        operator: Exists
+        tolerationSeconds: 5
+      - effect: NoSchedule
+        key: node-role.kubernetes.io/control-plane
+        operator: Exists
+

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: openebs-system/openebs-localpv

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: openebs-system/openebs-localpv

@@ -0,0 +1,29 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: openebs-localpv
+  namespace: openebs-system
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: openebs-localpv
+  healthChecks:
+  - apiVersion: helm.toolkit.fluxcd.io/v2
+    kind: HelmRelease
+    name: openebs-localpv
+    namespace: openebs-system
+  interval: 1h
+  path: ./kubernetes/apps/openebs-system/openebs-localpv/app
+  prune: true
+  retryInterval: 2m
+  sourceRef:
+    kind: GitRepository
+    name: flux-system
+    namespace: flux-system
+  targetNamespace: openebs-system
+  timeout: 5m
+
--- kubernetes/apps/openebs-system/openebs-localpv/app Kustomization: openebs-system/openebs-localpv OCIRepository: openebs-system/openebs-localpv

+++ kubernetes/apps/openebs-system/openebs-localpv/app Kustomization: openebs-system/openebs-localpv OCIRepository: openebs-system/openebs-localpv

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: openebs-localpv
+    kustomize.toolkit.fluxcd.io/name: openebs-localpv
+    kustomize.toolkit.fluxcd.io/namespace: openebs-system
+  name: openebs-localpv
+  namespace: openebs-system
+spec:
+  interval: 1h
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 4.4.0
+  url: oci://ghcr.io/openebs/charts/localpv-provisioner
+
--- kubernetes/apps/openebs-system/openebs-localpv/app Kustomization: openebs-system/openebs-localpv HelmRelease: openebs-system/openebs-localpv

+++ kubernetes/apps/openebs-system/openebs-localpv/app Kustomization: openebs-system/openebs-localpv HelmRelease: openebs-system/openebs-localpv

@@ -0,0 +1,38 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: openebs-localpv
+    kustomize.toolkit.fluxcd.io/name: openebs-localpv
+    kustomize.toolkit.fluxcd.io/namespace: openebs-system
+  name: openebs-localpv
+  namespace: openebs-system
+spec:
+  chartRef:
+    kind: OCIRepository
+    name: openebs-localpv
+  driftDetection:
+    mode: enabled
+  install:
+    remediation:
+      retries: -1
+  interval: 1h
+  upgrade:
+    cleanupOnFail: true
+    remediation:
+      retries: 3
+  values:
+    analytics:
+      enabled: false
+    global:
+      imageRegistry: quay.io/
+    hostpathClass:
+      name: openebs-hostpath
+    localpv:
+      basePath: /var/openebs/local
+      tolerations:
+      - effect: NoSchedule
+        key: node-role.kubernetes.io/control-plane
+        operator: Exists
+

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@kubernetes/apps/openebs-system/openebs-localpv/app/helmrelease.yaml`:
- Around line 23-25: The chartRef in the HelmRelease currently uses name:
openebs-localpv and omits namespace; update the HelmRelease's chartRef block so
chartRef.kind remains OCIRepository but chartRef.name is changed to app-template
and add chartRef.namespace: flux-system to comply with the shared source
contract (look for the HelmRelease resource and its chartRef field in
helmrelease.yaml).

In `@kubernetes/apps/openebs-system/openebs-localpv/ks.yaml`:
- Around line 7-24: The Kustomization in ks.yaml is missing the required
components/volsync and the postBuild substitution for APP; update the
Kustomization spec for this resource (the ks.yaml Kustomization) to include a
components entry referencing "components/volsync" and add a postBuild.substitute
section that defines the APP variable (use the same app anchor/name used
elsewhere, e.g. *app) so the file includes both components/volsync and
postBuild.substitute.APP to satisfy the platform contract.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: b40adf11-a59e-47a5-9ed6-c362c5f2b92f

📥 Commits

Reviewing files that changed from the base of the PR and between 640f4ab and e850376.

📒 Files selected for processing (4)
  • kubernetes/apps/openebs-system/kustomization.yaml
  • kubernetes/apps/openebs-system/openebs-localpv/app/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs-localpv/app/kustomization.yaml
  • kubernetes/apps/openebs-system/openebs-localpv/ks.yaml

Comment on lines +23 to +25
chartRef:
kind: OCIRepository
name: openebs-localpv
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

chartRef does not follow the required shared source contract.

This repo requires HelmReleases in kubernetes/apps/**/helmrelease.yaml to reference chartRef.kind: OCIRepository with name: app-template in namespace: flux-system. Current chartRef points to openebs-localpv and omits namespace.

Proposed patch
   chartRef:
     kind: OCIRepository
-    name: openebs-localpv
+    name: app-template
+    namespace: flux-system

As per coding guidelines: "kubernetes/apps/**/helmrelease.yaml: HelmRelease resources must use chartRef.kind: OCIRepository with name app-template in flux-system namespace".

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
chartRef:
kind: OCIRepository
name: openebs-localpv
chartRef:
kind: OCIRepository
name: app-template
namespace: flux-system
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@kubernetes/apps/openebs-system/openebs-localpv/app/helmrelease.yaml` around
lines 23 - 25, The chartRef in the HelmRelease currently uses name:
openebs-localpv and omits namespace; update the HelmRelease's chartRef block so
chartRef.kind remains OCIRepository but chartRef.name is changed to app-template
and add chartRef.namespace: flux-system to comply with the shared source
contract (look for the HelmRelease resource and its chartRef field in
helmrelease.yaml).

Comment on lines +7 to +24
spec:
commonMetadata:
labels:
app.kubernetes.io/name: *app
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
name: *app
namespace: openebs-system
path: ./kubernetes/apps/openebs-system/openebs-localpv/app
prune: true
sourceRef:
kind: GitRepository
name: flux-system
namespace: flux-system
interval: 1h
retryInterval: 2m
timeout: 5m
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot May 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Missing required components/volsync and postBuild.substitute.APP in Flux Kustomization.

kubernetes/apps/*/ks.yaml files in this repo must include the VolSync component and postBuild.substitute.APP. This manifest currently omits both, so it does not follow the required platform contract.

Proposed patch
 spec:
+  components:
+    - ../../components/volsync
+  postBuild:
+    substitute:
+      APP: openebs-localpv
   commonMetadata:
     labels:
       app.kubernetes.io/name: *app

Based on learnings: "Applies to kubernetes/apps/*/ks.yaml : All Flux Kustomization files must reference components/volsync to wire up daily Kopia backups to Cloudflare R2 and use postBuild.substitute with APP variable".

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
spec:
commonMetadata:
labels:
app.kubernetes.io/name: *app
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
name: *app
namespace: openebs-system
path: ./kubernetes/apps/openebs-system/openebs-localpv/app
prune: true
sourceRef:
kind: GitRepository
name: flux-system
namespace: flux-system
interval: 1h
retryInterval: 2m
timeout: 5m
spec:
components:
- ../../components/volsync
postBuild:
substitute:
APP: openebs-localpv
commonMetadata:
labels:
app.kubernetes.io/name: *app
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
name: *app
namespace: openebs-system
path: ./kubernetes/apps/openebs-system/openebs-localpv/app
prune: true
sourceRef:
kind: GitRepository
name: flux-system
namespace: flux-system
interval: 1h
retryInterval: 2m
timeout: 5m
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@kubernetes/apps/openebs-system/openebs-localpv/ks.yaml` around lines 7 - 24,
The Kustomization in ks.yaml is missing the required components/volsync and the
postBuild substitution for APP; update the Kustomization spec for this resource
(the ks.yaml Kustomization) to include a components entry referencing
"components/volsync" and add a postBuild.substitute section that defines the APP
variable (use the same app anchor/name used elsewhere, e.g. *app) so the file
includes both components/volsync and postBuild.substitute.APP to satisfy the
platform contract.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only apps that need permanent storage that should be backed up need volsync. This chart does not.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jfroy, that's a fair correction — storage infrastructure components like the LocalPV provisioner don't have application data to back up, so the VolSync requirement doesn't apply here. I'll update the learning to reflect this.


✏️ Learnings added
Learnt from: jfroy
Repo: jfroy/flatops PR: 1245
File: kubernetes/apps/openebs-system/openebs-localpv/ks.yaml:7-24
Timestamp: 2026-05-01T03:50:07.614Z
Learning: Applies to kubernetes/apps/*/ks.yaml : Only Flux Kustomization files for apps that require persistent storage with data that should be backed up must reference `components/volsync` and use `postBuild.substitute` with the `APP` variable. Storage infrastructure components (e.g. openebs-localpv) and apps without persistent data do not need volsync.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


⛔ Learnings removed
Learnt from: CR
Repo: jfroy/flatops PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-28T19:57:17.667Z
Learning: Applies to kubernetes/apps/*/ks.yaml : All Flux Kustomization files must reference `components/volsync` to wire up daily Kopia backups to Cloudflare R2 and use `postBuild.substitute` with `APP` variable

🧠 Learnings used
Learnt from: CR
Repo: jfroy/flatops PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-28T19:57:17.667Z
Learning: Applies to kubernetes/apps/*/ks.yaml : All Flux Kustomization files must reference `components/volsync` to wire up daily Kopia backups to Cloudflare R2 and use `postBuild.substitute` with `APP` variable

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: .github/instructions/flux.instructions.md:0-0
Timestamp: 2026-04-28T19:57:01.513Z
Learning: Applies to **/*.{yaml,yml} : For Flux Kustomization analysis: check kustomize-controller status with `get_flux_instance`, analyze Kustomization spec/status/inventory/events, determine managing Flux object via annotations, retrieve referenced ConfigMaps/Secrets if `substituteFrom` present, identify source via `sourceRef`, analyze source status/events, check managed resources in inventory, and analyze their logs if failed

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-28T19:57:17.667Z
Learning: Applies to kubernetes/apps/default/kustomization.yaml : Register new apps by adding `- ./<appname>/ks.yaml` to `kubernetes/apps/default/kustomization.yaml` in alphabetical order

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: .cursor/rules/flux-mcp.mdc:0-0
Timestamp: 2026-04-28T19:57:29.611Z
Learning: Applies to **/*.{yaml,yml} : For Kustomization troubleshooting: Call `get_flux_instance` to check kustomize-controller status, then get the Kustomization with `get_kubernetes_resources` and analyze spec, status, inventory, and events

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: .cursor/rules/flux-mcp.mdc:0-0
Timestamp: 2026-04-28T19:57:29.611Z
Learning: Applies to **/*.{yaml,yml} : For Kustomization troubleshooting: Identify the source from `sourceRef`, analyze its status and events

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-28T19:57:17.667Z
Learning: Applies to kubernetes/apps/**/helmrelease.yaml : HelmRelease resources must use `chartRef.kind: OCIRepository` with name `app-template` in `flux-system` namespace

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-28T19:57:17.667Z
Learning: Applies to kubernetes/apps/*/ks.yaml : PostgreSQL apps must add `dependsOn: cnpg-pg18vc` in `cnpg-system` namespace to the Kustomization

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: .cursor/rules/flux-mcp.mdc:0-0
Timestamp: 2026-04-28T19:57:29.611Z
Learning: Applies to **/*.{yaml,yml} : Check metadata for `fluxcd` labels to determine if a resource is Flux-managed in Kubernetes manifests

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: .cursor/rules/flux-mcp.mdc:0-0
Timestamp: 2026-04-28T19:57:29.611Z
Learning: Applies to **/*.{yaml,yml} : For Kustomization troubleshooting: Check the managing object via annotations

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: .cursor/rules/flux-mcp.mdc:0-0
Timestamp: 2026-04-28T19:57:29.611Z
Learning: Applies to **/*.{yaml,yml} : For HelmRelease troubleshooting: Check the managing object (Kustomization or ResourceSet) via annotations

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-28T19:57:17.667Z
Learning: Flux reconciliation: Use `kubectl` or `flux` CLI commands against `kantai.hyakutake-universe.ts.net` context to reconcile kustomizations and helmreleases

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: .github/instructions/flux.instructions.md:0-0
Timestamp: 2026-04-28T19:57:01.513Z
Learning: Applies to **/*.{yaml,yml} : For Flux HelmRelease analysis: check helm-controller status with `get_flux_instance`, analyze HelmRelease spec/status/inventory/events, determine managing Flux object via annotations, retrieve referenced ConfigMaps/Secrets if `valuesFrom` present, identify source via `chartRef` or `sourceRef`, analyze source status/events, check managed resources in inventory, and analyze their logs if failed

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: .github/instructions/flux.instructions.md:0-0
Timestamp: 2026-04-28T19:57:01.513Z
Learning: Applies to **/*.{yaml,yml} : For Flux Comparison analysis: get cluster contexts, switch between clusters, check Flux Operator status, retrieve resources for comparison, retrieve referenced ConfigMaps/Secrets if present, and focus comparison analysis on `spec` (desired state), `status`, and `events` (current state)

Learnt from: CR
Repo: jfroy/flatops PR: 0
File: .github/instructions/flux.instructions.md:0-0
Timestamp: 2026-04-28T19:57:01.513Z
Learning: To determine if a Kubernetes resource is Flux-managed, search the metadata field for `fluxcd` labels

@jfroy jfroy merged commit 1c669d4 into main May 1, 2026
7 checks passed
@jfroy jfroy deleted the storage-cleanup branch May 1, 2026 03:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant