Skip to content

chore: Add apex extension#15

Merged
gonzalezzfelipe merged 3 commits intomainfrom
chore/add-apex-extension
Nov 11, 2025
Merged

chore: Add apex extension#15
gonzalezzfelipe merged 3 commits intomainfrom
chore/add-apex-extension

Conversation

@gonzalezzfelipe
Copy link
Copy Markdown
Contributor

@gonzalezzfelipe gonzalezzfelipe commented Nov 11, 2025

Summary by CodeRabbit

  • New Features

    • Added Apex Fusion Helm chart to deploy StatefulSet-based nodes with persistent storage, configurable ports (n2n, n2c, metrics), optional TCP proxy sidecar, and comprehensive pod-level configuration.
    • Added PodMonitor support for Prometheus metrics collection.
    • Included default values and templates for customizable, production-ready deployments.
  • Documentation

    • Added a getting-started README with installation and override guidance.
  • Chores

    • CI linting/validation expanded to include the new Apex Fusion chart.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Nov 11, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

A new Apex Fusion Helm chart (chart metadata, values, README) and templates (helpers, StatefulSet, Services, ConfigMaps, ServiceAccount, PodMonitor) were added under extensions/apex-fusion/. The CI workflow matrix was updated to include apex-fusion for Helm lint/template/schema validation.

Changes

Cohort / File(s) Summary
Workflow Configuration
\.github/workflows/check_extensions.yml
Added apex-fusion entry to the helm job matrix so Helm lint and template/schema checks run for the new extension.
Chart Metadata & Documentation
extensions/apex-fusion/Chart.yaml, extensions/apex-fusion/README.md
New Helm Chart descriptor and README documenting chart features, usage, and installation examples.
Template Helpers
extensions/apex-fusion/templates/_helpers.tpl
Added helper templates: apex-fusion.name, fullname, chart, labels, selectorLabels, selectorLabelsFor, serviceAccountName, proxyConfigName, configurationConfigMapName.
Configuration ConfigMaps
extensions/apex-fusion/templates/configmap-configuration.yaml, extensions/apex-fusion/templates/configmap-proxy.yaml
New conditional ConfigMap templates for node configuration and proxy config with required-field validations and name-resolution checks.
Services & Monitoring
extensions/apex-fusion/templates/service.yaml, extensions/apex-fusion/templates/service-headless.yaml, extensions/apex-fusion/templates/podmonitor.yaml
New Service (clusterIP/LoadBalancer/NodePort options), headless Service exposing n2n/n2c/metrics, and PodMonitor for Prometheus.
ServiceAccount & Workload
extensions/apex-fusion/templates/serviceaccount.yaml, extensions/apex-fusion/templates/statefulset.yaml
Conditional ServiceAccount template and comprehensive StatefulSet template (main container, optional proxy sidecar, volumes, PVC handling, probes, securityContext, scheduling).
Default Values
extensions/apex-fusion/values.yaml
Introduced full default values for image, persistence, service ports, node config, proxy/nginx defaults, probes, resources, nodeSelector, tolerations, and affinity.

Sequence Diagram(s)

sequenceDiagram
  participant Dev as Developer
  participant Helm as Helm (chart)
  participant Templates as Templates (_helpers.tpl, *.yaml)
  participant K8s as Kubernetes API

  Dev->>Helm: helm install / helm template (apex-fusion)
  Helm->>Templates: evaluate helpers & templates with values
  Templates->>Templates: resolve names, labels, configmaps, checksums
  Templates->>K8s: render manifests (StatefulSet, Services, ConfigMaps, SA, PodMonitor)
  K8s-->>Dev: manifests / apply results
  note right of Templates `#ccffcc`: New/changed interactions:\n- configuration & proxy ConfigMaps\n- optional proxy sidecar\n- headless Service and PodMonitor
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Files needing extra attention:
    • extensions/apex-fusion/templates/statefulset.yaml (complex conditional logic, volumeClaimTemplates, checksum annotations)
    • extensions/apex-fusion/templates/_helpers.tpl (name truncation, collision handling, config name resolution)
    • ConfigMap templates (configmap-configuration.yaml, configmap-proxy.yaml) for required-field validations and error messages

Possibly related PRs

Suggested reviewers

  • scarmuega

Poem

🐇 A chart sprung up beneath moonlight,
Helpers humming, templates tight.
Stateful pods and ConfigMaps sing,
Services stream and metrics bring.
Hop on, Apex Fusion — take flight! 🚀

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'chore: Add apex extension' is vague and generic. It does not clearly specify what is being added—the actual change is adding the apex-fusion Helm chart with complete templates, configuration, and documentation. Consider using a more specific title like 'chore: Add apex-fusion Helm chart extension with templates and configuration' to better convey the scope and nature of the changes.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9c2ddab and e7075e5.

📒 Files selected for processing (8)
  • extensions/apex-fusion/templates/_helpers.tpl (1 hunks)
  • extensions/apex-fusion/templates/configmap-configuration.yaml (1 hunks)
  • extensions/apex-fusion/templates/configmap-proxy.yaml (1 hunks)
  • extensions/apex-fusion/templates/podmonitor.yaml (1 hunks)
  • extensions/apex-fusion/templates/service-headless.yaml (1 hunks)
  • extensions/apex-fusion/templates/service.yaml (1 hunks)
  • extensions/apex-fusion/templates/serviceaccount.yaml (1 hunks)
  • extensions/apex-fusion/templates/statefulset.yaml (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

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: 4

🧹 Nitpick comments (1)
extensions/apex-fusion/README.md (1)

26-27: Document the path to add mainnet support.

The README restricts apex-fusion to testnet networks and defers mainnet support to a future release. Consider adding a brief note on the required steps to enable mainnet (e.g., "mainnet support will be added by updating the proxy configuration and node parameters").

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3565bc3 and 9c2ddab.

📒 Files selected for processing (12)
  • .github/workflows/check_extensions.yml (1 hunks)
  • extensions/apex-fusion/Chart.yaml (1 hunks)
  • extensions/apex-fusion/README.md (1 hunks)
  • extensions/apex-fusion/templates/_helpers.tpl (1 hunks)
  • extensions/apex-fusion/templates/configmap-configuration.yaml (1 hunks)
  • extensions/apex-fusion/templates/configmap-proxy.yaml (1 hunks)
  • extensions/apex-fusion/templates/podmonitor.yaml (1 hunks)
  • extensions/apex-fusion/templates/service-headless.yaml (1 hunks)
  • extensions/apex-fusion/templates/service.yaml (1 hunks)
  • extensions/apex-fusion/templates/serviceaccount.yaml (1 hunks)
  • extensions/apex-fusion/templates/statefulset.yaml (1 hunks)
  • extensions/apex-fusion/values.yaml (1 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
extensions/apex-fusion/templates/serviceaccount.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

extensions/apex-fusion/templates/configmap-proxy.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

extensions/apex-fusion/templates/podmonitor.yaml

[error] 8-8: syntax error: could not find expected ':'

(syntax)

extensions/apex-fusion/templates/service.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

extensions/apex-fusion/templates/service-headless.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

extensions/apex-fusion/templates/statefulset.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

extensions/apex-fusion/templates/configmap-configuration.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

🔇 Additional comments (11)
.github/workflows/check_extensions.yml (1)

45-47: Workflow integration looks good.

The matrix entry follows the established pattern for extensions and will trigger validation on the new apex-fusion chart.

extensions/apex-fusion/Chart.yaml (1)

1-12: Chart metadata is well-formed.

Structure and versioning are appropriate for a new extension. The RC1 pre-release version signals that this chart may receive updates.

extensions/apex-fusion/values.yaml (2)

5-6: Verify the container image repository.

The image repository ghcr.io/blinklabs-io/cardano-node appears to be a cardano-node image rather than an Apex-Fusion-specific image. Clarify whether:

  • Apex Fusion is built on top of cardano-node (expected)
  • The image repository is correct for this extension
  • Different networks (vector-testnet, prime-testnet, prime-mainnet) use the same image

60-62: Clarify network magic and per-network configuration.

The chart specifies a single hardcoded networkMagic: 1 for vector-testnet. The README mentions three supported networks (vector-testnet, prime-testnet, prime-mainnet), which typically have different network magic numbers. Verify:

  • Whether all three networks use magic 1
  • Whether different network environments require different magic values
  • If so, consider documenting or providing preset values for each network
extensions/apex-fusion/templates/podmonitor.yaml (1)

1-14: Template structure is sound, but helpers must be verified.

The PodMonitor template uses correct Helm syntax and follows consistent labeling patterns. However, validation requires confirming that the referenced template helpers (vector-node.fullname, vector-node.labels, vector-node.selectorLabels) are defined in templates/_helpers.tpl.

extensions/apex-fusion/templates/serviceaccount.yaml (1)

1-12: ServiceAccount template follows Helm best practices.

Conditional rendering allows users to supply their own ServiceAccount when desired. However, verify that:

  • Template helpers (vector-node.serviceAccountName, vector-node.labels) are defined
  • The ServiceAccount permissions (via Role/RoleBinding) are adequately scoped elsewhere in the chart (not visible in provided files)
extensions/apex-fusion/templates/configmap-proxy.yaml (1)

1-13: Proxy ConfigMap template is defensive and well-structured.

The template properly uses required() to validate mandatory fields, has appropriate conditional gating, and handles indentation correctly. Verify that vector-node.proxyConfigName is defined in templates/_helpers.tpl.

extensions/apex-fusion/templates/service.yaml (1)

1-53: Service template design is idiomatic and extensible.

The template correctly uses local variables for clarity, gates optional fields, and supports multiple service types. Port definitions align with values.yaml. However, verify:

  • All helper functions (vector-node.fullname, vector-node.labels, vector-node.selectorLabels) are defined
  • Selector labels match the pod labels in templates/statefulset.yaml (not provided in review)
  • Port definitions match containerPort names in the StatefulSet
extensions/apex-fusion/templates/configmap-configuration.yaml (1)

3-6: Good validation logic for ConfigMap creation.

The validation checks ensure that the ConfigMap name resolves correctly and that required files are provided, preventing runtime errors.

extensions/apex-fusion/templates/statefulset.yaml (2)

6-13: Good practice: checksums for ConfigMap changes trigger pod restarts.

The checksum annotations for proxy and configuration ConfigMaps ensure that pods are restarted when configuration changes, which is the correct pattern for propagating config updates.


71-94: Cardano-specific configuration is correct for Apex Fusion VECTOR chain.

The Cardano-specific references in the template are appropriate. Apex Fusion's VECTOR chain is explicitly built on Cardano node technology—the vector-node software is a fork of the Cardano node codebase. The chart correctly uses the cardano-node image (ghcr.io/blinklabs-io/cardano-node:10.1.4), and the configuration paths and environment variables (CARDANO_NETWORK, CARDANO_NODE_SOCKET_PATH) properly reflect this architecture. No adaptation or changes are needed.

Likely an incorrect or invalid review comment.

Comment thread extensions/apex-fusion/templates/_helpers.tpl
Comment thread extensions/apex-fusion/templates/configmap-configuration.yaml Outdated
Comment on lines +1 to +12
{{- $fullName := printf "%s-headless" (include "vector-node.fullname" .) -}}
apiVersion: v1
kind: Service
metadata:
name: {{ $fullName }}
labels:
{{- include "vector-node.labels" . | nindent 4 }}
spec:
clusterIP: None
publishNotReadyAddresses: true
selector:
{{- include "vector-node.selectorLabels" . | nindent 4 }}
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 | 🔴 Critical

Fix naming inconsistency: template helpers reference "vector-node" but chart is "apex-fusion".

All helper template references use the vector-node.* prefix, but this chart is named apex-fusion. This naming inconsistency will cause confusion and maintenance issues.

Update all helper references to use a consistent prefix matching the chart name. For example:

  • vector-node.fullnameapex-fusion.fullname
  • vector-node.labelsapex-fusion.labels
  • vector-node.selectorLabelsapex-fusion.selectorLabels

The helper definitions in _helpers.tpl will also need to be renamed accordingly.

🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

🤖 Prompt for AI Agents
In extensions/apex-fusion/templates/service-headless.yaml around lines 1 to 12,
template helpers reference the incorrect prefix "vector-node" instead of the
chart name "apex-fusion"; update all helper calls in this file to use the
"apex-fusion" prefix (e.g., apex-fusion.fullname, apex-fusion.labels,
apex-fusion.selectorLabels) and ensure the corresponding helper function names
in templates/_helpers.tpl are renamed/mapped the same so names are consistent
across the chart.

Comment thread extensions/apex-fusion/templates/statefulset.yaml Outdated
@gonzalezzfelipe gonzalezzfelipe merged commit c2b544a into main Nov 11, 2025
11 of 12 checks passed
@gonzalezzfelipe gonzalezzfelipe deleted the chore/add-apex-extension branch November 11, 2025 17:12
This was referenced Apr 15, 2026
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.

1 participant