Skip to content

Conversation

@bussyjd
Copy link
Contributor

@bussyjd bussyjd commented Oct 7, 2025

Summary

This PR integrates the new aztec-node Helm chart.

Changes:

  • Add aztec-node chart to repository: Added chart to main README and created documentation template
  • Update namespace references: Changed all namespace references from aztec to aztec-testnet throughout documentation
  • Fix template rendering issues:
    • Removed invalid role references (prover-node, prover-agent) from main statefulset
    • Fixed volume indentation bug in prover-node statefulset when using existingClaim
  • Generate documentation: Created README.md.gotmpl template and generated complete documentation with helm-docs

Chart Overview:

The aztec-node chart deploys Aztec network nodes in three distinct roles:

  • Full Node - Participates in the network by syncing and validating blocks
  • Sequencer - Produces blocks and participates in consensus
  • Prover - Distributed proving system with 3 components (broker, node, agent)

Role Architecture:

When role: prover is set, the chart deploys 3 separate StatefulSets:

  • statefulset-prover-broker.yaml - Manages job queue
  • statefulset-prover-node.yaml - Creates jobs and publishes proofs to L1
  • statefulset-prover-agent.yaml - Executes proof generation (scalable)

The main statefulset.yaml only handles fullnode and sequencer roles.

Test Plan

  • Chart lints successfully for all three roles (fullnode, sequencer, prover)
  • Pre-commit hooks pass (helm-docs)
  • Documentation generated correctly with values table
  • Template rendering validated with dry-run for each role
  • Volume configuration fixed for prover-node with existingClaim

Deployment Examples

Full Node:

helm install aztec-fullnode ./charts/aztec-node \
  -f charts/aztec-node/values-examples/fullnode.yaml \
  -n aztec-testnet --create-namespace

Sequencer:

helm install aztec-sequencer ./charts/aztec-node \
  -f charts/aztec-node/values-examples/sequencer.yaml \
  --set sequencer.attesterPrivateKey="0xYOUR_KEY" \
  -n aztec-testnet --create-namespace

Prover:

helm install aztec-prover ./charts/aztec-node \
  -f charts/aztec-node/values-examples/prover.yaml \
  --set prover.node.publisherPrivateKey="0xYOUR_KEY" \
  -n aztec-testnet --create-namespace

ticket: none

- Add aztec-node to main repository README chart list
- Create README.md.gotmpl template for helm-docs generation
- Update all namespace references from 'aztec' to 'aztec-testnet'
- Generate complete documentation with helm-docs

The aztec-node chart deploys Aztec network nodes in three roles:
- Full Node: Syncs and validates blocks
- Sequencer: Produces blocks and participates in consensus
- Prover: Generates zero-knowledge proofs
Remove checks for "prover-node" and "prover-agent" roles from the main
statefulset.yaml template. These are not valid role values according to
the chart's role validation (_helpers.tpl).

Valid roles are: fullnode, sequencer, prover

The main statefulset.yaml only handles fullnode and sequencer roles.
When role=prover is set, separate StatefulSet templates are used:
- statefulset-prover-broker.yaml
- statefulset-prover-node.yaml
- statefulset-prover-agent.yaml

This fixes template rendering and ensures role validation works correctly.
When persistence.existingClaim is set, the volumes section was missing
the 'volumes:' key, causing incorrect YAML structure. This would prevent
prover-node pods from starting when using an existing PVC.

Added the missing 'volumes:' key to match the pattern used in the
emptyDir case and align with the main statefulset template.
@bussyjd bussyjd requested a review from a team as a code owner October 7, 2025 12:22
bussyjd added 10 commits October 7, 2025 17:01
Update version badges in charon and charon-cluster READMEs to reflect
current chart versions (v0.4.8 and v0.3.8) and appVersion (v1.6.1).

These changes are automatically generated by helm-docs based on the
Chart.yaml files.
Add a new pre-commit hook that lints Helm charts using the same logic
as the CI workflow. This ensures charts are validated locally before
pushing, catching issues early.

Features:
- Uses CI-specific values files when available
- Skips charts listed in skip-charts.txt
- Ignores harmless dependency warnings for charts with local dependencies
- Provides clear summary of linted, skipped, and failed charts

This matches the behavior of .github/workflows/release.yml to ensure
consistency between local development and CI.
Add minimal CI values configuration for aztec-node chart to enable
automated testing in the release workflow.

Configuration:
- Role: fullnode (simplest role for testing)
- Network: testnet
- Persistence: disabled (not needed for CI)
- Minimal resource requests for fast testing
Regenerate README to reflect updated default role in values.yaml
(changed from fullnode to sequencer) and other recent value updates
including hostNetwork and nodePort configuration.
Fix NodePort service template to use separate nodePort field (30400)
instead of P2P port (40400) to comply with Kubernetes port range
restrictions (30000-32767).

Configure hostNetwork: true as the recommended default for best P2P
performance, matching tested production configuration. NodePort remains
available as a fallback option.

Changes:
- Add service.p2p.nodePort field (default: 30400)
- Set hostNetwork: true as default
- Update svc.nodeport.yaml to use nodePort field
- Update all values-examples to use hostNetwork
- Update README with hostNetwork as default, NodePort as alternative
- Add L1 RPC endpoints to default values.yaml

Validation:
- Tested all 3 roles (fullnode, sequencer, prover)
- Verified role-based validation (required fields enforced)
- Confirmed correct StatefulSet and Service generation
The StatefulSet was referencing the wrong service name. It pointed to
the regular ClusterIP service instead of the headless service, which
prevented pods from getting stable DNS names.

Changes:
- Updated serviceName from {{ fullname }} to {{ fullname }}-headless
- This connects the StatefulSet to the headless service (clusterIP: None)
- Enables stable pod DNS names: pod-0.service.namespace.svc.cluster.local

Also updated README to reflect current values.yaml defaults for L1 URLs.
Add clearer description to helm-docs hook explaining that if files
are modified, the user needs to stage the changes and commit again.
This prevents confusion when README.md is auto-regenerated.
Removed aztec-node from skip-charts.txt now that the chart is fully
configured with CI values file and templates are fixed.
@bussyjd bussyjd changed the title feat: integrate aztec-node chart Add aztec-node chart Oct 7, 2025
Changed from ((var++)) to var=$((var + 1)) syntax to avoid exit code 1
when incrementing from 0 with set -e enabled. Also added check to prevent
iterating over empty skip_list array with set -u enabled.
BREAKING CHANGE: All Kubernetes resources now follow the naming pattern:
l2-{role}-node-{network}-{component}

Examples:
- Fullnode: l2-full-node-sepolia-node
- Sequencer: l2-sequencer-node-sepolia-node
- Prover: l2-prover-node-sepolia-{broker|node|agent}

This requires deletion of existing StatefulSets and Services before upgrade.

Changes:
- Add networkName field to values.yaml (default: sepolia)
- Create chart.resourceName helper for standardized naming
- Update all 13 template files to use new naming
- Update README with new service names and kubectl examples
- Update DNS references in prover components
- Update RBAC resource names
Updated README to use correct resource naming pattern:
l2-{role}-node-{networkName}-{component}

Examples now show:
- l2-full-node-sepolia-node (fullnode)
- l2-sequencer-node-sepolia-node (sequencer)
- l2-prover-node-sepolia-broker/node/agent (prover components)

This matches the actual resource names generated by chart.resourceName helper.
@bussyjd bussyjd requested a review from OisinKyne October 8, 2025 07:47
OisinKyne
OisinKyne previously approved these changes Oct 9, 2025
OisinKyne
OisinKyne previously approved these changes Oct 9, 2025
apham0001
apham0001 previously approved these changes Oct 9, 2025
@bussyjd bussyjd dismissed stale reviews from apham0001 and OisinKyne via 9f1c6ca October 10, 2025 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants