Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: change default accessMode to ReadWriteOncePod #403

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion charts/arbitrum-classic/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.2.1
version: 0.3.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
Expand Down
4 changes: 2 additions & 2 deletions charts/arbitrum-classic/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Deploy and scale [Arbitrum-Classic](https://github.com/OffchainLabs/arbitrum) inside Kubernetes with ease

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.2.1](https://img.shields.io/badge/Version-0.2.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.4.5-e97c1a4](https://img.shields.io/badge/AppVersion-v1.4.5--e97c1a4-informational?style=flat-square)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.3.0](https://img.shields.io/badge/Version-0.3.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.4.5-e97c1a4](https://img.shields.io/badge/AppVersion-v1.4.5--e97c1a4-informational?style=flat-square)

## Features

Expand Down Expand Up @@ -150,7 +150,7 @@ We do not recommend that you upgrade the application by overriding `image.tag`.
| arbitrum.service.type | | string | `"ClusterIP"` |
| arbitrum.terminationGracePeriodSeconds | Amount of time to wait before force-killing the arbitrum process | int | `60` |
| arbitrum.tolerations | | list | `[]` |
| arbitrum.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage | object | `{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"750G"}},"storageClassName":null}` |
| arbitrum.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"750G"}},"storageClassName":null}` |
Copy link

Choose a reason for hiding this comment

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

💡 Codebase verification

Kubernetes version requirement missing for ReadWriteOncePod

The Chart.yaml file does not specify a minimum Kubernetes version requirement (kubeVersion field), which is necessary since ReadWriteOncePod access mode requires Kubernetes 1.22+. This could lead to deployment failures on older clusters.

  • Add kubeVersion: ">=1.22.0-0" to charts/arbitrum-classic/Chart.yaml
  • Add a note in the README.md about the Kubernetes version requirement for ReadWriteOncePod
  • Consider making the access mode configurable through values.yaml for backward compatibility
🔗 Analysis chain

Verify Kubernetes version compatibility for ReadWriteOncePod.

The change from ReadWriteOnce to ReadWriteOncePod requires Kubernetes v1.22+. Please add a note in the README about this requirement and verify that the chart's minimum Kubernetes version is set appropriately.

Consider maintaining backward compatibility by making this configurable:

 | arbitrum.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"750G"}},"storageClassName":null}` |
+| arbitrum.volumeClaimSpec.accessModes | Access modes for the volume claim. Use ReadWriteOncePod for K8s 1.22+ or ReadWriteOnce for older versions | list | `["ReadWriteOncePod"]` |
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check Chart.yaml for kubeVersion constraint
echo "Checking Chart.yaml for kubeVersion constraint"
if [ -f charts/arbitrum-classic/Chart.yaml ]; then
    rg "kubeVersion" charts/arbitrum-classic/Chart.yaml
else
    echo "Chart.yaml not found"
fi

Length of output: 174


Script:

#!/bin/bash
# Let's verify the Chart.yaml content and kubernetes version requirements
cat charts/arbitrum-classic/Chart.yaml

# Also check if there are any kubernetes version requirements mentioned in the README
cat charts/arbitrum-classic/README.md | grep -i "kubernetes\|k8s\|version"

# Check values.yaml for any version related comments or configurations
cat charts/arbitrum-classic/values.yaml | grep -i "kubernetes\|k8s\|version"

Length of output: 3598

| arbitrum.volumeClaimSpec.resources.requests.storage | The amount of disk space to provision for arbitrum | string | `"750G"` |
| arbitrum.volumeClaimSpec.storageClassName | The storage class to use when provisioning a persistent volume for arbitrum | string | `nil` |
| fullnameOverride | | string | `""` |
Expand Down
2 changes: 1 addition & 1 deletion charts/arbitrum-classic/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ arbitrum:

# -- [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage
volumeClaimSpec:
accessModes: ["ReadWriteOnce"]
accessModes: ["ReadWriteOncePod"]
Copy link

Choose a reason for hiding this comment

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

💡 Codebase verification

Add Kubernetes version requirement to README.md

The chart uses ReadWriteOncePod access mode but doesn't document the minimum Kubernetes version requirement. The README.md needs to be updated to include:

  • The chart's README.md currently documents extensive configuration options but lacks Kubernetes version requirements
  • The chart uses ReadWriteOncePod which was introduced in Kubernetes 1.22
🔗 Analysis chain

Verify Kubernetes version compatibility.

ReadWriteOncePod is a feature that requires Kubernetes 1.22 or newer. Please ensure this requirement is documented in the chart's README.md.

Consider adding the following to the chart's requirements section:

  • Kubernetes >= 1.22
  • Storage provisioner that supports ReadWriteOncePod access mode
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if README.md mentions K8s version requirement
rg -i "kubernetes.*1\.22|k8s.*1\.22" "charts/arbitrum-classic/README.md"

# Check if there's any existing K8s version requirement
rg -i "kubernetes.*version|k8s.*version" "charts/arbitrum-classic/README.md"

Length of output: 149


Script:

#!/bin/bash
# First, check if README.md exists and see its content
ls -l charts/arbitrum-classic/README.md
cat charts/arbitrum-classic/README.md

# Check Chart.yaml for any version requirements
cat charts/arbitrum-classic/Chart.yaml

# Check if ReadWriteOncePod is used in other files
rg "ReadWriteOncePod" charts/arbitrum-classic/

Length of output: 15285

# -- The storage class to use when provisioning a persistent volume for arbitrum
storageClassName:
resources:
Expand Down
2 changes: 1 addition & 1 deletion charts/arbitrum-nitro/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.5.1
version: 0.6.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
Expand Down
4 changes: 2 additions & 2 deletions charts/arbitrum-nitro/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Deploy and scale [Arbitrum-Nitro](https://github.com/OffchainLabs/nitro/) inside Kubernetes with ease

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.5.1](https://img.shields.io/badge/Version-0.5.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v3.2.1-d81324d](https://img.shields.io/badge/AppVersion-v3.2.1--d81324d-informational?style=flat-square)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.6.0](https://img.shields.io/badge/Version-0.6.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v3.2.1-d81324d](https://img.shields.io/badge/AppVersion-v3.2.1--d81324d-informational?style=flat-square)

## Features

Expand Down Expand Up @@ -127,7 +127,7 @@ We do not recommend that you upgrade the application by overriding `image.tag`.
| nitro.service.type | | string | `"ClusterIP"` |
| nitro.terminationGracePeriodSeconds | Amount of time to wait before force-killing the arbitrum process | int | `60` |
| nitro.tolerations | | list | `[]` |
| nitro.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage | object | `{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"8Ti"}},"storageClassName":null}` |
| nitro.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"8Ti"}},"storageClassName":null}` |
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Document Kubernetes version requirement for ReadWriteOncePod.

The change from ReadWriteOnce to ReadWriteOncePod access mode is a breaking change that requires Kubernetes 1.22+. Please add a note in the README about this requirement.

Add the following note under the Values table entry for nitro.volumeClaimSpec:

 | nitro.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"8Ti"}},"storageClassName":null}` |
+> **Note:** The `ReadWriteOncePod` access mode requires Kubernetes 1.22 or later.
📝 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
| nitro.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"8Ti"}},"storageClassName":null}` |
| nitro.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"8Ti"}},"storageClassName":null}` |
> **Note:** The `ReadWriteOncePod` access mode requires Kubernetes 1.22 or later.

| nitro.volumeClaimSpec.resources.requests.storage | The amount of disk space to provision for arbitrum | string | `"8Ti"` |
| nitro.volumeClaimSpec.storageClassName | The storage class to use when provisioning a persistent volume for arbitrum | string | `nil` |
| prometheus.serviceMonitors.enabled | Enable monitoring by creating `ServiceMonitor` CRDs ([prometheus-operator](https://github.com/prometheus-operator/prometheus-operator)) | bool | `false` |
Expand Down
2 changes: 1 addition & 1 deletion charts/arbitrum-nitro/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ nitro:

# -- [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for arbitrum storage
volumeClaimSpec:
accessModes: ["ReadWriteOnce"]
accessModes: ["ReadWriteOncePod"]
Copy link

Choose a reason for hiding this comment

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

💡 Codebase verification

⚠️ Kubernetes version requirement missing for ReadWriteOncePod

The chart lacks explicit Kubernetes version requirements in Chart.yaml, which is crucial since ReadWriteOncePod access mode requires Kubernetes v1.22+. While the chart has version checks for other features (v1.27+ check found in service.yaml), it doesn't validate the minimum version needed for this storage feature.

  • Add kubeVersion: ">=1.22.0-0" field to charts/arbitrum-nitro/Chart.yaml to ensure compatibility
  • Consider documenting storage requirements in the chart's README.md
🔗 Analysis chain

LGTM! Verify Kubernetes version compatibility.

The change from ReadWriteOnce to ReadWriteOncePod is a good improvement for data safety, as it ensures exclusive access at the pod level rather than node level. This is particularly important for blockchain nodes where data integrity is crucial.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if Chart.yaml specifies minimum Kubernetes version >= 1.22
echo "Verifying kubernetes version requirement..."
if [ -f Chart.yaml ]; then
    grep -A 5 "kubeVersion:" Chart.yaml
fi

Length of output: 120


Script:

#!/bin/bash
# Let's try searching for Chart.yaml in the correct path
echo "Searching for Chart.yaml in arbitrum-nitro chart..."
cat charts/arbitrum-nitro/Chart.yaml

# Also check for any kubernetes version requirements in README or other docs
echo -e "\nSearching for Kubernetes version requirements in documentation..."
rg -i "kubernetes.*version|kube.*version" -g '*.md' -g '*.yaml' charts/arbitrum-nitro/

Length of output: 1807

# -- The storage class to use when provisioning a persistent volume for arbitrum
storageClassName:
resources:
Expand Down
2 changes: 1 addition & 1 deletion charts/celo/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.7
version: 0.2.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
Expand Down
4 changes: 2 additions & 2 deletions charts/celo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Deploy and scale [Celo](https://github.com/celo-org/celo-blockchain) Nodes inside Kubernetes with ease

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.1.7](https://img.shields.io/badge/Version-0.1.7-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.8.5](https://img.shields.io/badge/AppVersion-1.8.5-informational?style=flat-square)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.2.0](https://img.shields.io/badge/Version-0.2.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.8.5](https://img.shields.io/badge/AppVersion-1.8.5-informational?style=flat-square)

## Features

Expand Down Expand Up @@ -82,7 +82,7 @@ We do not recommend that you upgrade the application by overriding `image.tag`.
| celo.service.type | | string | `"ClusterIP"` |
| celo.terminationGracePeriodSeconds | Amount of time to wait before force-killing the container | int | `60` |
| celo.tolerations | | list | `[]` |
| celo.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for storage | object | `{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"1.5Ti"}},"storageClassName":null}` |
| celo.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"1.5Ti"}},"storageClassName":null}` |
Copy link

Choose a reason for hiding this comment

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

💡 Codebase verification

Based on the search results, I can now provide a final response:

The ReadWriteOncePod access mode requires Kubernetes >= 1.22. This should be documented.

The chart uses ReadWriteOncePod access mode for volume claims, which was introduced in Kubernetes 1.22. This is a breaking change from ReadWriteOnce and requires documenting the minimum Kubernetes version requirement.

Recommendations:

  • Add a note in the README about the minimum Kubernetes version requirement (>= 1.22)
  • Consider providing a migration guide for users upgrading from older versions using ReadWriteOnce
  • Add a note about using ReadWriteOnce as an alternative for clusters running older Kubernetes versions
🔗 Analysis chain

Verify Kubernetes version compatibility for ReadWriteOncePod.

The change from ReadWriteOnce to ReadWriteOncePod requires Kubernetes >= 1.22. This should be documented as a prerequisite.

Additionally, since this is a breaking change that could affect existing deployments, consider:

  1. Adding a compatibility note in the README
  2. Providing migration instructions for existing deployments

Let me search for any Kubernetes version requirements in the README or other documentation files.


Let me try a different approach to check the documentation files.


Let me check for any Kubernetes version requirements in the documentation.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if minimum k8s version is documented
rg -i "kubernetes.*version|k8s.*version|version.*requirement"

Length of output: 2769


Script:

#!/bin/bash
# Check READMEs and docs for version requirements
fd README.md CHANGELOG.md requirements.txt -X cat {}

Length of output: 219


Script:

#!/bin/bash
# Search for README files and their content
fd -t f "README.md$" -X cat {}

# Also check for any Kubernetes version related info in Chart.yaml files
fd -t f "Chart.yaml$" -X cat {}

Length of output: 261543


Script:

#!/bin/bash
# Search for Kubernetes version requirements in all markdown files
rg -i "kubernetes.*version|k8s.*version|version.*requirement|ReadWriteOncePod" -A 2 -B 2

Length of output: 20068

| celo.volumeClaimSpec.resources.requests.storage | The amount of disk space to provision | string | `"1.5Ti"` |
| celo.volumeClaimSpec.storageClassName | The storage class to use when provisioning a persistent volume | string | `nil` |
| fullnameOverride | | string | `""` |
Expand Down
2 changes: 1 addition & 1 deletion charts/celo/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ celo:

# -- [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for storage
volumeClaimSpec:
accessModes: ["ReadWriteOnce"]
accessModes: ["ReadWriteOncePod"]
# -- The storage class to use when provisioning a persistent volume
storageClassName:
resources:
Expand Down
2 changes: 1 addition & 1 deletion charts/erigon/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.10.7
version: 0.11.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
Expand Down
4 changes: 2 additions & 2 deletions charts/erigon/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Deploy and scale [Erigon](https://github.com/ledgerwatch/erigon) inside Kubernetes with ease

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.10.7](https://img.shields.io/badge/Version-0.10.7-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.60.8](https://img.shields.io/badge/AppVersion-2.60.8-informational?style=flat-square)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.11.0](https://img.shields.io/badge/Version-0.11.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.60.8](https://img.shields.io/badge/AppVersion-2.60.8-informational?style=flat-square)

## Features

Expand Down Expand Up @@ -187,7 +187,7 @@ We do not recommend that you upgrade the application by overriding `image.tag`.
| statefulNode.service.type | | string | `"ClusterIP"` |
| statefulNode.terminationGracePeriodSeconds | Amount of time to wait before force-killing the Erigon process | int | `60` |
| statefulNode.tolerations | | list | `[]` |
| statefulNode.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for Erigon storage | object | `{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"3Ti"}},"storageClassName":null}` |
| statefulNode.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for Erigon storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"3Ti"}},"storageClassName":null}` |
Copy link

Choose a reason for hiding this comment

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

💡 Codebase verification

Add Kubernetes version requirement note for ReadWriteOncePod

The Kubernetes version requirement for ReadWriteOncePod access mode is not documented in the chart. Since this is a breaking change that requires Kubernetes 1.22+, it should be clearly documented.

  • Add a note under the statefulNode.volumeClaimSpec table entry in charts/erigon/README.md:
    | statefulNode.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for Erigon storage. Note: The default `ReadWriteOncePod` access mode requires Kubernetes 1.22+. For older versions, use `ReadWriteOnce`. | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"3Ti"}},"storageClassName":null}` |
🔗 Analysis chain

Verify Kubernetes version compatibility for ReadWriteOncePod.

The change from ReadWriteOnce to ReadWriteOncePod access mode is a good improvement for pod scheduling behavior. However, please note that ReadWriteOncePod requires Kubernetes 1.22 or later.

Let's verify if this requirement is documented:

Consider adding a note about the minimum Kubernetes version requirement in the documentation.

Add a note in the README about the Kubernetes version requirement, for example:

 | statefulNode.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for Erigon storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"3Ti"}},"storageClassName":null}` |
+| Note: The default `ReadWriteOncePod` access mode requires Kubernetes 1.22 or later. For older versions, change to `ReadWriteOnce`. |
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if Kubernetes version requirement is documented
rg -i "kubernetes.*1\.22|1\.22.*kubernetes" README.md

Length of output: 55


Script:

#!/bin/bash
# Let's check the chart's requirements.yaml or Chart.yaml for any Kubernetes version requirements
fd "Chart.yaml|requirements.yaml" charts/erigon/ --exec cat {}

# Also check if there are any other version requirements mentioned in the README
cat charts/erigon/README.md

Length of output: 15871

| statefulNode.volumeClaimSpec.resources.requests.storage | The amount of disk space to provision for Erigon | string | `"3Ti"` |
| statefulNode.volumeClaimSpec.storageClassName | The storage class to use when provisioning a persistent volume for Erigon | string | `nil` |

Expand Down
2 changes: 1 addition & 1 deletion charts/erigon/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ statefulNode:

# -- [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for Erigon storage
volumeClaimSpec:
accessModes: ["ReadWriteOnce"]
accessModes: ["ReadWriteOncePod"]
# -- The storage class to use when provisioning a persistent volume for Erigon
storageClassName:
resources:
Expand Down
2 changes: 1 addition & 1 deletion charts/heimdall/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.2.4
version: 1.3.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
Expand Down
4 changes: 2 additions & 2 deletions charts/heimdall/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Deploy and scale [Heimdall](https://github.com/maticnetwork/heimdall) inside Kubernetes with ease

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 1.2.4](https://img.shields.io/badge/Version-1.2.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.0.10](https://img.shields.io/badge/AppVersion-1.0.10-informational?style=flat-square)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 1.3.0](https://img.shields.io/badge/Version-1.3.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.0.10](https://img.shields.io/badge/AppVersion-1.0.10-informational?style=flat-square)

## Features

Expand Down Expand Up @@ -83,7 +83,7 @@ We do not recommend that you upgrade the application by overriding `image.tag`.
| heimdall.service.topologyAwareRouting.enabled | | bool | `false` |
| heimdall.service.type | | string | `"ClusterIP"` |
| heimdall.tolerations | | list | `[]` |
| heimdall.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for heimdall storage | object | `{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"300Gi"}},"storageClassName":null}` |
| heimdall.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for heimdall storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"300Gi"}},"storageClassName":null}` |
| heimdall.volumeClaimSpec.resources.requests.storage | The amount of disk space to provision for Heimdall | string | `"300Gi"` |
| heimdall.volumeClaimSpec.storageClassName | The storage class to use when provisioning a persistent volume for heimdall | string | `nil` |
| nameOverride | | string | `""` |
Expand Down
2 changes: 1 addition & 1 deletion charts/heimdall/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ heimdall:

# -- [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for heimdall storage
volumeClaimSpec:
accessModes: ["ReadWriteOnce"]
accessModes: ["ReadWriteOncePod"]
Copy link

Choose a reason for hiding this comment

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

💡 Codebase verification

Breaking change: ReadWriteOncePod requires documentation update for K8s compatibility

The change to ReadWriteOncePod is not properly documented in the chart. While the chart references K8s API v1.23 in its documentation link, it doesn't explicitly state the minimum Kubernetes version requirement for this feature.

  • The README.md needs to be updated to include Kubernetes v1.22+ as a prerequisite
  • The Chart.yaml should include a kubeVersion field to enforce this requirement
  • Consider providing a values option to fall back to ReadWriteOnce for backwards compatibility
🔗 Analysis chain

Verify Kubernetes version compatibility for ReadWriteOncePod.

The change from ReadWriteOnce to ReadWriteOncePod introduces a dependency on Kubernetes v1.22+, as ReadWriteOncePod was introduced as a beta feature in that version. This could impact clusters running older Kubernetes versions.

Consider the following recommendations:

  1. Add a note in the chart's requirements section about the minimum Kubernetes version
  2. Consider making this configurable with a fallback to ReadWriteOnce for backward compatibility

Let me gather more information about the Kubernetes version requirements and documentation in the Heimdall chart.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if this requirement is documented in the chart
rg -l "kubernetes.*1\.22|k8s.*1\.22" charts/heimdall/

Length of output: 350


Script:

#!/bin/bash
# Check Chart.yaml for any version requirements
cat charts/heimdall/Chart.yaml

# Check README for any documentation about requirements
cat charts/heimdall/README.md

# Check if ReadWriteOncePod is used in other places
rg "ReadWriteOncePod" charts/heimdall/

Length of output: 9842

# -- The storage class to use when provisioning a persistent volume for heimdall
storageClassName:
resources:
Expand Down
2 changes: 1 addition & 1 deletion charts/lighthouse/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.5.10
version: 0.6.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
Expand Down
4 changes: 2 additions & 2 deletions charts/lighthouse/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Deploy and scale [Lighthouse](https://github.com/sigp/lighthouse) inside Kubernetes with ease

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.5.10](https://img.shields.io/badge/Version-0.5.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v5.3.0](https://img.shields.io/badge/AppVersion-v5.3.0-informational?style=flat-square)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Version: 0.6.0](https://img.shields.io/badge/Version-0.6.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v5.3.0](https://img.shields.io/badge/AppVersion-v5.3.0-informational?style=flat-square)

## Chart Features

Expand Down Expand Up @@ -114,7 +114,7 @@ We do not recommend that you upgrade the application by overriding `image.tag`.
| lighthouse.service.type | | string | `"ClusterIP"` |
| lighthouse.terminationGracePeriodSeconds | Amount of time to wait before force-killing the container | int | `60` |
| lighthouse.tolerations | | list | `[]` |
| lighthouse.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for storage | object | `{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"300Gi"}},"storageClassName":null}` |
| lighthouse.volumeClaimSpec | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for storage | object | `{"accessModes":["ReadWriteOncePod"],"resources":{"requests":{"storage":"300Gi"}},"storageClassName":null}` |
| lighthouse.volumeClaimSpec.resources.requests.storage | The amount of disk space to provision | string | `"300Gi"` |
| lighthouse.volumeClaimSpec.storageClassName | The storage class to use when provisioning a persistent volume | string | `nil` |
| nameOverride | | string | `""` |
Expand Down
2 changes: 1 addition & 1 deletion charts/lighthouse/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ lighthouse:

# -- [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for storage
volumeClaimSpec:
accessModes: ["ReadWriteOnce"]
accessModes: ["ReadWriteOncePod"]
# -- The storage class to use when provisioning a persistent volume
storageClassName:
resources:
Expand Down
2 changes: 1 addition & 1 deletion charts/nimbus/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.5.18
version: 0.6.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
Expand Down
Loading