-
Notifications
You must be signed in to change notification settings - Fork 11
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
base: main
Are you sure you want to change the base?
Conversation
WalkthroughThe pull request introduces version updates and configuration changes across multiple Helm charts, including Changes
Possibly related PRs
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 14
🧹 Outside diff range and nitpick comments (5)
charts/heimdall/values.yaml (1)
89-89
: Document the implications of ReadWriteOncePod.The
ReadWriteOncePod
access mode is more restrictive thanReadWriteOnce
as it ensures exclusive access at the pod level rather than the node level. While this is generally safer, it might affect scenarios where pods need to be migrated between nodes.Consider adding a comment in the values.yaml file explaining:
- The reason for using ReadWriteOncePod
- The implications for pod scheduling and migration
- The required Kubernetes version
volumeClaimSpec: + # ReadWriteOncePod (requires K8s 1.22+) ensures exclusive access at pod level + # rather than node level, providing better data safety guarantees accessModes: ["ReadWriteOncePod"]charts/arbitrum-nitro/values.yaml (1)
111-111
: Consider documenting storage provider compatibility.The
ReadWriteOncePod
access mode requires storage provider support. Consider adding a note in the values.yaml documentation about storage provider compatibility requirements.Add a comment above the accessModes field:
volumeClaimSpec: + # -- Note: ReadWriteOncePod requires Kubernetes 1.22+ and storage provider support accessModes: ["ReadWriteOncePod"]
charts/lighthouse/values.yaml (1)
92-92
: Document Kubernetes version requirement.Since ReadWriteOncePod is only available in Kubernetes 1.22+, consider adding a note in the chart's documentation about this requirement.
Example addition to the chart's README.md:
+ ## Requirements + + * Kubernetes 1.22+ (needed for ReadWriteOncePod volume access mode)charts/erigon/values.yaml (1)
90-90
: Document Kubernetes version requirement.Since
ReadWriteOncePod
requires Kubernetes v1.22+, this should be clearly documented to prevent deployment issues on older clusters.Add the following to the chart's README.md:
+ ## Requirements + + * Kubernetes 1.22+ (for ReadWriteOncePod support)charts/heimdall/README.md (1)
86-86
: Add K8s version compatibility warning for ReadWriteOncePod.The
ReadWriteOncePod
access mode is only available in Kubernetes 1.22 and later. Consider adding a note in the documentation to warn users about this version requirement.Example addition:
| 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}` | +> **Note:** The default `ReadWriteOncePod` access mode requires Kubernetes 1.22 or later. For older versions, manually override this to use `ReadWriteOnce`.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (24)
- charts/arbitrum-classic/Chart.yaml (1 hunks)
- charts/arbitrum-classic/README.md (2 hunks)
- charts/arbitrum-classic/values.yaml (1 hunks)
- charts/arbitrum-nitro/Chart.yaml (1 hunks)
- charts/arbitrum-nitro/README.md (2 hunks)
- charts/arbitrum-nitro/values.yaml (1 hunks)
- charts/celo/Chart.yaml (1 hunks)
- charts/celo/README.md (2 hunks)
- charts/celo/values.yaml (1 hunks)
- charts/erigon/Chart.yaml (1 hunks)
- charts/erigon/README.md (2 hunks)
- charts/erigon/values.yaml (1 hunks)
- charts/heimdall/Chart.yaml (1 hunks)
- charts/heimdall/README.md (2 hunks)
- charts/heimdall/values.yaml (1 hunks)
- charts/lighthouse/Chart.yaml (1 hunks)
- charts/lighthouse/README.md (2 hunks)
- charts/lighthouse/values.yaml (1 hunks)
- charts/nimbus/Chart.yaml (1 hunks)
- charts/nimbus/README.md (2 hunks)
- charts/nimbus/values.yaml (1 hunks)
- charts/subgraph-radio/Chart.yaml (1 hunks)
- charts/subgraph-radio/README.md (2 hunks)
- charts/subgraph-radio/values.yaml (1 hunks)
✅ Files skipped from review due to trivial changes (1)
- charts/arbitrum-classic/Chart.yaml
🔇 Additional comments (21)
charts/subgraph-radio/Chart.yaml (1)
18-18
: Version bump looks appropriate.The minor version increment and canary designation align well with the introduction of the new ReadWriteOncePod feature.
Let's verify version consistency across related charts:
✅ Verification successful
Version consistency needs attention across charts
Several charts are being updated to canary versions with the new ReadWriteOncePod feature, but the version pattern is inconsistent:
- Some charts have canary designation (e.g., arbitrum-classic: 0.3.0-canary.1, nimbus: 0.6.0-canary.1)
- Others maintain regular versions despite similar changes (e.g., proxyd: 0.6.2, graph-node: 0.5.6)
Let's verify if these non-canary charts are also part of the ReadWriteOncePod changes:
Version pattern is appropriate for the changes
The version pattern is consistent with the scope of changes:
- Charts with ReadWriteOncePod changes are correctly marked with canary versions (e.g., subgraph-radio, lighthouse, nimbus)
- Charts without ReadWriteOncePod changes (proxyd, graph-node) maintain their regular versions as they're not part of this feature rollout
The version bump to 0.3.0-canary.1 in subgraph-radio aligns with other charts implementing the same feature change.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify version consistency across charts mentioned in the PR # Expected: All modified charts should be using similar version patterns echo "Checking version patterns in Chart.yaml files:" fd -e yaml -e yml Chart.yaml charts/ --exec grep -H "version:" {} \;Length of output: 1193
Script:
#!/bin/bash # Check for ReadWriteOncePod changes in values.yaml files echo "Checking for ReadWriteOncePod changes:" fd values.yaml charts/ --exec grep -l "ReadWriteOncePod" {} \; echo -e "\nChecking recent commits for these files:" for chart in proxyd graph-node do echo -e "\n=== $chart changes ===" git log -p --no-merges -n 1 charts/$chart/values.yaml doneLength of output: 22129
charts/erigon/Chart.yaml (1)
18-18
: LGTM! Version bump follows semantic versioning principles.The MINOR version bump to
0.11.0-canary.1
is appropriate for introducing the new ReadWriteOncePod feature. The use of a canary release is consistent with the version updates across other charts in this PR.charts/lighthouse/Chart.yaml (1)
18-18
: Version bump looks appropriate.The minor version increment to
0.6.0-canary.1
aligns well with the introduction of the newReadWriteOncePod
access mode feature.Let's verify version consistency across other mentioned charts:
✅ Verification successful
Version pattern is consistent across modified charts
All charts follow the same versioning pattern with
-canary.1
suffix, confirming a coordinated update across the repository. Each chart maintains its own major.minor version based on its maturity level, which is the correct approach:
- arbitrum-classic: 0.3.0-canary.1
- arbitrum-nitro: 0.6.0-canary.1
- celo: 0.2.0-canary.1
- erigon: 0.11.0-canary.1
- heimdall: 1.3.0-canary.1
- lighthouse: 0.6.0-canary.1
- nimbus: 0.6.0-canary.1
- subgraph-radio: 0.3.0-canary.1
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check version consistency across related charts # Expected: All modified charts should be using similar version pattern echo "Checking version patterns in modified charts..." for chart in arbitrum-classic arbitrum-nitro celo erigon heimdall lighthouse nimbus subgraph-radio; do if [ -f "charts/$chart/Chart.yaml" ]; then echo "=== $chart ===" grep "^version:" "charts/$chart/Chart.yaml" fi doneLength of output: 2193
charts/heimdall/Chart.yaml (1)
18-18
: LGTM! Version bump is appropriate for the new accessMode feature.The minor version increment to 1.3.0-canary.1 correctly reflects the addition of the ReadWriteOncePod feature, and the canary tag is appropriate for testing this change.
Let's verify consistent version bumps across related charts:
✅ Verification successful
Version bump pattern is consistent across all related charts
All charts in the PR have been updated with the
-canary.1
tag and appropriate version increments, showing a coordinated approach for the ReadWriteOncePod feature addition:
- arbitrum-classic: 0.3.0-canary.1
- arbitrum-nitro: 0.6.0-canary.1
- celo: 0.2.0-canary.1
- erigon: 0.11.0-canary.1
- heimdall: 1.3.0-canary.1
- lighthouse: 0.6.0-canary.1
- nimbus: 0.6.0-canary.1
- subgraph-radio: 0.3.0-canary.1
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify version updates in other charts mentioned in the PR # Expected: Similar version bumps with canary tags echo "Checking version fields in related charts:" for chart in arbitrum-classic arbitrum-nitro celo erigon heimdall lighthouse nimbus subgraph-radio; do if [ -f "charts/$chart/Chart.yaml" ]; then echo "=== $chart ===" grep "^version:" "charts/$chart/Chart.yaml" fi doneLength of output: 2183
charts/celo/Chart.yaml (1)
18-18
: LGTM! Version bump is appropriate.The minor version increment (0.1.7 → 0.2.0-canary.1) aligns with semantic versioning principles, as changing the default
accessMode
toReadWriteOncePod
represents a new feature with breaking changes in storage configuration.charts/nimbus/Chart.yaml (2)
18-18
: LGTM! Version bump follows semantic versioning.The minor version increment (0.5.x → 0.6.x) appropriately reflects the introduction of new functionality (changing default accessMode) in a backward-compatible manner. The -canary.1 suffix correctly indicates this is a pre-release version.
18-18
: Verify version consistency across related charts.Let's confirm that all related charts have consistent version bumps for this change.
✅ Verification successful
Version consistency verified across all related charts
All charts have been updated with the
-canary.1
suffix in their versions:
- arbitrum-classic: 0.3.0-canary.1
- arbitrum-nitro: 0.6.0-canary.1
- celo: 0.2.0-canary.1
- heimdall: 1.3.0-canary.1
- lighthouse: 0.6.0-canary.1
- subgraph-radio: 0.3.0-canary.1
- nimbus: 0.6.0-canary.1
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify version changes in related charts mentioned in the summary # Expected: All charts should show a minor version bump with -canary.1 suffix echo "Checking version fields in related Chart.yaml files..." for chart in arbitrum-classic arbitrum-nitro celo heimdall lighthouse subgraph-radio nimbus; do echo "=== $chart ===" if [ -f "charts/$chart/Chart.yaml" ]; then rg "^version:" "charts/$chart/Chart.yaml" -A 1 fi doneLength of output: 1939
charts/heimdall/values.yaml (1)
89-89
: Verify consistent accessMode changes across all charts.Since this change is part of a larger update across multiple charts, we should verify that the change is consistently applied.
#!/bin/bash # Check accessModes across all charts echo "Checking accessModes in all charts..." rg -l "accessModes.*ReadWriteOnce[^P]" charts/charts/celo/values.yaml (2)
80-80
: Verify Kubernetes version compatibility for ReadWriteOncePod.The
ReadWriteOncePod
access mode was introduced in Kubernetes v1.22. This change might cause issues in clusters running older versions.
80-80
: Verify storage provider compatibility with ReadWriteOncePod.Not all storage providers support the
ReadWriteOncePod
access mode. Consider:
- Adding documentation about storage class requirements
- Making this configurable with
ReadWriteOnce
as a fallbackcharts/arbitrum-classic/values.yaml (1)
106-106
: LGTM! Improved volume access mode safety.The change from ReadWriteOnce to ReadWriteOncePod is a good security improvement. It ensures that only a single pod can mount the volume, preventing potential data corruption from concurrent access, which is crucial for blockchain nodes.
charts/lighthouse/values.yaml (1)
92-92
: LGTM! Verify Kubernetes version compatibility.The change from ReadWriteOnce to ReadWriteOncePod is a good security improvement that prevents potential data corruption scenarios. However, ReadWriteOncePod requires Kubernetes 1.22+.
✅ Verification successful
ReadWriteOncePod access mode is consistently used and compatible with minimum K8s requirements
The codebase shows:
- Multiple charts already use ReadWriteOncePod access mode, indicating a standardized approach
- Kubernetes version checks in templates require minimum version 1.27, which is well above the 1.22 requirement for ReadWriteOncePod
- The change aligns with the existing patterns in the codebase
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check if README or other docs mention K8s version requirement rg -i "kubernetes.*1\.22|k8s.*1\.22|kubernetes.*version|k8s.*version" README.md docs/Length of output: 133
Script:
#!/bin/bash # Let's check for any Kubernetes version requirements in Chart.yaml, values.yaml, and README files across all charts fd -e yaml -e md . charts/ -x rg -i "kubernetes.*version|k8s.*version|kubeVersion" # Also check if ReadWriteOncePod is used in other charts fd -e yaml . charts/ -x rg -l "ReadWriteOncePod"Length of output: 1935
charts/subgraph-radio/README.md (2)
95-95
: Verify Kubernetes version compatibility for ReadWriteOncePod.The change to
ReadWriteOncePod
requires Kubernetes v1.22+. Consider:
- Adding a note about K8s version requirement
- Documenting fallback options for clusters running older versions
#!/bin/bash # Check if K8s version requirement is documented rg -l "kubernetes.*1\.22|k8s.*1\.22|ReadWriteOncePod.*requirement"
5-5
: Version bump indicates potential breaking changes.The version change from
0.2.14
to0.3.0-canary.1
suggests significant changes. Consider:
- Documenting the breaking changes in the README
- Adding upgrade instructions for users moving from 0.2.x
charts/erigon/values.yaml (1)
90-90
: Approve change to ReadWriteOncePod with version compatibility notice.The change from
ReadWriteOnce
toReadWriteOncePod
is a good security improvement that prevents potential data corruption by ensuring only a single pod can mount the volume for writing, even within the same node. However, this requires Kubernetes v1.22 or newer.Let's verify the Kubernetes version requirement is documented:
charts/heimdall/README.md (1)
5-5
: LGTM: Version bump follows semantic versioning.The version increment to
1.3.0-canary.1
appropriately reflects the addition of a new feature (changing default accessMode).charts/lighthouse/README.md (2)
5-5
: LGTM: Version update follows semantic versioning.The version increment to 0.6.0-canary.1 is appropriate for introducing the new accessMode change.
117-117
: Verify Kubernetes version compatibility for ReadWriteOncePod.The change from
ReadWriteOnce
toReadWriteOncePod
requires Kubernetes >= 1.22. Please ensure this requirement is documented and that users are aware of this compatibility constraint.Consider adding a note in the README about the minimum Kubernetes version requirement, or implementing a fallback mechanism for clusters running older versions.
charts/arbitrum-nitro/README.md (1)
5-5
: LGTM: Version bump follows semantic versioning.The version update to 0.6.0-canary.1 is appropriate for introducing the new access mode changes.
charts/arbitrum-classic/README.md (1)
5-5
: Verify semantic versioning for breaking changes.The version bump from 0.2.1 to 0.3.0-canary.1 indicates breaking changes. Please ensure the CHANGELOG documents these changes and that the version increment follows semantic versioning guidelines.
#!/bin/bash # Check if CHANGELOG exists and contains version information if [ -f CHANGELOG.md ]; then echo "Checking CHANGELOG.md for version 0.3.0-canary.1" rg -A 5 "0.3.0-canary.1" CHANGELOG.md else echo "CHANGELOG.md not found" ficharts/erigon/README.md (1)
5-5
: Version bump follows semantic versioning.The version increment from
0.10.7
to0.11.0-canary.1
appropriately reflects this feature change with a minor version bump and canary tag.
charts/celo/Chart.yaml
Outdated
@@ -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-canary.1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Version update requires changelog documentation
The version 0.2.0-canary.1
is properly reflected in the README.md but missing from the CHANGELOG.md. This needs to be addressed for proper version tracking.
- Add an entry for version
0.2.0-canary.1
incharts/celo/CHANGELOG.md
documenting the changes in this release - Ensure the changes are documented under a new section following the existing changelog format
🔗 Analysis chain
Verify version consistency and changelog updates.
Let's ensure the version update is properly documented and consistent across related files.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for CHANGELOG.md updates and version consistency
# Test 1: Check if CHANGELOG.md exists and contains the new version
echo "Checking for CHANGELOG.md updates..."
rg -l "0.2.0-canary.1" "charts/celo/CHANGELOG.md" || echo "Warning: Version not found in CHANGELOG.md"
# Test 2: Check version consistency in values.yaml and README.md
echo -e "\nChecking version consistency in related files..."
rg "0.2.0-canary.1" "charts/celo/values.yaml" "charts/celo/README.md"
# Test 3: Verify the chart version in Chart.lock if it exists
echo -e "\nChecking Chart.lock if it exists..."
if [ -f "charts/celo/Chart.lock" ]; then
cat "charts/celo/Chart.lock"
fi
Length of output: 979
charts/arbitrum-nitro/Chart.yaml
Outdated
@@ -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-canary.1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Version bump is appropriate, but Kubernetes version constraint should be added
The version bump to 0.6.0-canary.1
is actually correct according to the chart's documented versioning policy in README.md: "Breaking changes to the Chart or its values.yaml
interface will be reflected with a major version bump." Since this is a pre-1.0 release (0.x), breaking changes can be made with minor version bumps as per SemVer.
However, the chart is missing the required Kubernetes version constraint:
- The chart uses
ReadWriteOncePod
which requires Kubernetes 1.22+ - No
kubeVersion
field is present in Chart.yaml - No Kubernetes version requirement is documented in README.md
Please:
- Add
kubeVersion: ">=1.22.0-0"
to Chart.yaml - Document the Kubernetes version requirement in README.md
🔗 Analysis chain
Consider bumping to 1.0.0 for breaking changes.
The change from ReadWriteOnce
to ReadWriteOncePod
is a breaking change as it requires Kubernetes 1.22+. According to semantic versioning, breaking changes should increment the major version number.
Let's verify the Kubernetes version requirements in the chart:
Consider:
- Bumping version to
1.0.0-canary.1
to reflect the breaking change - Adding
kubeVersion: ">=1.22.0-0"
to Chart.yaml - Documenting the Kubernetes version requirement in README.md
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check if Kubernetes version requirement is documented
echo "Checking README.md for Kubernetes version requirements..."
rg -i "kubernetes.*1\.22|k8s.*1\.22" "charts/arbitrum-nitro/README.md"
echo "Checking for kubeVersion constraint in Chart.yaml..."
rg "kubeVersion:" "charts/arbitrum-nitro/Chart.yaml"
Length of output: 361
Script:
#!/bin/bash
# Let's first check if the Chart.yaml exists and see its full content
cat charts/arbitrum-nitro/Chart.yaml
# Let's also check the values.yaml for any PVC related configurations
echo -e "\nChecking values.yaml for PVC configurations:"
rg "accessMode|ReadWrite" charts/arbitrum-nitro/values.yaml -A 2 -B 2
# Let's check for any existing version requirements or constraints
echo -e "\nChecking for any version related documentation:"
rg -i "requirement|version|kubernetes" charts/arbitrum-nitro/README.md
Length of output: 3581
@@ -8,7 +8,7 @@ fullnameOverride: "" | |||
imagePullSecrets: [] | |||
|
|||
volumeClaimSpec: | |||
accessModes: ["ReadWriteOnce"] | |||
accessModes: ["ReadWriteOncePod"] |
There was a problem hiding this comment.
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 needs documentation
The search results show that ReadWriteOncePod
is used consistently across multiple charts in the repository, but none of them document the Kubernetes version requirement. Since this is a feature that requires Kubernetes 1.22+, this should be documented.
- Add Kubernetes version requirement (>= 1.22) to the chart's README.md under a new "Prerequisites" or "Requirements" section
- Consider adding this requirement to the root README.md since multiple charts use this feature
🔗 Analysis chain
Approve the change to ReadWriteOncePod with version verification needed.
The change from ReadWriteOnce
to ReadWriteOncePod
is a good improvement as it provides stronger guarantees about volume access. However, this feature requires Kubernetes 1.22+.
Let's verify the kubernetes version requirement is documented:
Consider adding the following to the chart's README.md:
- Kubernetes version requirement (>= 1.22)
- Note about the
ReadWriteOncePod
access mode requirement
Documentation update needed for Kubernetes version requirement
The change to ReadWriteOncePod
access mode requires documentation updates since this feature is only available in Kubernetes 1.22+. Let's verify if this requirement is documented in other chart files or in the repository's root documentation.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check if kubernetes version requirement is documented in the chart
rg -i "kubernetes.*1\.22|k8s.*1\.22" charts/subgraph-radio/
# Check README for version requirements
cat charts/subgraph-radio/README.md
Length of output: 7156
Script:
#!/bin/bash
# Check root README and other common docs for k8s version requirements
cat README.md 2>/dev/null || true
cat CHANGELOG.md 2>/dev/null || true
# Check if other charts using ReadWriteOncePod have documented the requirement
rg -i "kubernetes.*version|k8s.*version" charts/
rg "ReadWriteOncePod" charts/ -B2 -A2
Length of output: 13903
@@ -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"] |
There was a problem hiding this comment.
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 akubeVersion
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:
- Add a note in the chart's requirements section about the minimum Kubernetes version
- 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
@@ -89,7 +89,7 @@ nimbus: | |||
|
|||
# -- [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimspec-v1-core) for storage | |||
volumeClaimSpec: | |||
accessModes: ["ReadWriteOnce"] | |||
accessModes: ["ReadWriteOncePod"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
ReadWriteOncePod is consistently used across multiple charts and requires documentation update
The change to ReadWriteOncePod
is part of a broader standardization across all charts in the repository. However, the Kubernetes version requirement (1.22+) for this feature is not documented in the Chart.yaml or README files.
charts/nimbus/Chart.yaml
needs to be updated to include the minimum Kubernetes version requirement- Other charts using
ReadWriteOncePod
also need similar updates:- arbitrum-classic
- arbitrum-nitro
- celo
- erigon
- heimdall
- lighthouse
- subgraph-radio
🔗 Analysis chain
Verify Kubernetes version compatibility for ReadWriteOncePod.
The change from ReadWriteOnce
to ReadWriteOncePod
requires careful consideration:
ReadWriteOncePod
is only supported in Kubernetes 1.22 and later- Not all storage classes support this access mode
Let's verify the documentation and requirements:
Consider the following recommendations:
- Document the minimum Kubernetes version requirement
- Add a note about storage class compatibility
- Consider making this configurable with a default fallback to
ReadWriteOnce
for backward compatibility
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check if minimum Kubernetes version is documented
rg -l "kubernetes" . | xargs rg -i "version|requirement"
# Check if this change is documented in the changelog
fd CHANGELOG -t f | xargs rg -i "readwriteoncepod"
Length of output: 35263
Script:
#!/bin/bash
# Check if there are any Kubernetes version requirements documented in the chart
rg -i "kubernetes.*version|version.*kubernetes" ./charts/nimbus/
# Check Chart.yaml for Kubernetes version requirements
cat ./charts/nimbus/Chart.yaml
# Check if ReadWriteOncePod is used in other charts
rg "ReadWriteOncePod" .
Length of output: 4446
@@ -137,7 +137,7 @@ We do not recommend that you upgrade the application by overriding `image.tag`. | |||
| nimbus.trustedNodeSync.enabled | Enable init container to do a trusted checkpoint sync from another Consensus Client (be careful) | bool | `false` | | |||
| nimbus.trustedNodeSync.extraArgs | Additional CLI arguments | list | `[]` | | |||
| nimbus.trustedNodeSync.trustedNodeUrl | URL to the Trusted Consensus Client Node URL. See https://eth-clients.github.io/checkpoint-sync-endpoints/ | string | `""` | | |||
| nimbus.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}` | | |||
| nimbus.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}` | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Document K8s version requirement for ReadWriteOncePod.
The change to ReadWriteOncePod
access mode requires Kubernetes 1.22 or later. This should be clearly documented as a breaking change since it affects compatibility with older Kubernetes versions.
Consider adding a note in the README about the minimum Kubernetes version requirement, perhaps in a new "Requirements" or "Prerequisites" section:
# Nimbus Helm Chart
Deploy and scale [Nimbus](https://github.com/status-im/nimbus-eth2) inside Kubernetes with ease
+
+## Requirements
+
+- Kubernetes 1.22+ (for ReadWriteOncePod volume access mode support)
Committable suggestion was skipped due to low confidence.
charts/nimbus/README.md
Outdated
@@ -2,7 +2,7 @@ | |||
|
|||
Deploy and scale [Nimbus](https://github.com/status-im/nimbus-eth2) 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.18](https://img.shields.io/badge/Version-0.5.18-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: multiarch-v24.9.0](https://img.shields.io/badge/AppVersion-multiarch--v24.9.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-canary.1](https://img.shields.io/badge/Version-0.6.0--canary.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: multiarch-v24.9.0](https://img.shields.io/badge/AppVersion-multiarch--v24.9.0-informational?style=flat-square) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Version 0.6.0-canary.1 needs to be documented in the changelog
The CHANGELOG.md exists but doesn't document the version bump to 0.6.0-canary.1. This significant version increase from 0.3.0 (last released version) to 0.6.0-canary.1, along with any breaking changes like the ReadWriteOncePod access mode, should be properly documented under a new version section in the changelog.
- Add a new section in
charts/nimbus/CHANGELOG.md
for version 0.6.0-canary.1 - Document the breaking change to ReadWriteOncePod access mode
- Include any other significant changes in this release
🔗 Analysis chain
Version bump requires changelog update.
The version change from 0.5.18 to 0.6.0-canary.1 represents a significant version bump. Please ensure this change and its breaking changes are properly documented in the changelog.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check if CHANGELOG.md exists and contains the new version
fd -t f "CHANGELOG.md" -x grep -l "0.6.0-canary.1" {} \;
Length of output: 57
Script:
#!/bin/bash
# First, let's check if CHANGELOG.md exists in the charts/nimbus directory
fd -t f "CHANGELOG.md" charts/nimbus
# Then, let's check for any changelog-like files in the charts/nimbus directory
ls -la charts/nimbus/
# Also check the Chart.yaml as it might contain changelog information
cat charts/nimbus/Chart.yaml
Length of output: 2007
Script:
#!/bin/bash
# Let's check the content of CHANGELOG.md to verify if the new version is documented
cat charts/nimbus/CHANGELOG.md
Length of output: 3377
@@ -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}` | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
| 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. |
@@ -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}` | |
There was a problem hiding this comment.
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"
tocharts/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
@@ -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}` | |
There was a problem hiding this comment.
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 incharts/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
This is a breaking change in the sense an existing STS can't be updated, so users need to either add an
accessMode
override to keep as is (assuming they were using the defaultReadWriteOnce
), or go through the hoops to recreate their STS themselvesSummary by CodeRabbit
Release Notes
New Features
Configuration Changes
accessModes
from["ReadWriteOnce"]
to["ReadWriteOncePod"]
across various charts, enhancing volume access capabilities for pods.Documentation Updates