Skip to content

Commit f7149a8

Browse files
chore: commit remaining changes across CI, docs, pallets, and runtime presets
1 parent e837afd commit f7149a8

14 files changed

Lines changed: 124 additions & 519 deletions

File tree

.github/workflows/publish.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,11 @@ jobs:
252252
type=semver,pattern={{version}}
253253
type=semver,pattern={{major}}.{{minor}}
254254
type=sha,format=long
255+
labels: |
256+
org.opencontainers.image.title=Fennel Node
257+
org.opencontainers.image.description=A Substrate-based blockchain node for the Fennel network with enhanced security and cryptographic verification
258+
org.opencontainers.image.vendor=Fennel Network
259+
org.opencontainers.image.licenses=Apache-2.0
255260
256261
# ------------------------------------------------------------
257262
# PRODUCTION KEY EXPORT (using GitHub Secrets)
@@ -672,7 +677,7 @@ jobs:
672677
| .protocolId = "fenn"
673678
| .properties = {
674679
"ss58Format": ($ss58|tonumber),
675-
"tokenDecimals": 18,
680+
"tokenDecimals": 12,
676681
"tokenSymbol": "FNL"
677682
}' "$SPEC" > tmp.json && mv tmp.json "$SPEC"
678683
@@ -801,7 +806,7 @@ jobs:
801806
| .protocolId = "fenn"
802807
| .properties = {
803808
"ss58Format": ($ss58|tonumber),
804-
"tokenDecimals": 18,
809+
"tokenDecimals": 12,
805810
"tokenSymbol": "FNL"
806811
}' "$SPEC" > tmp.json && mv tmp.json "$SPEC"
807812
@@ -982,7 +987,7 @@ jobs:
982987
| .protocolId = "fenn"
983988
| .properties = {
984989
"ss58Format": ($ss58|tonumber),
985-
"tokenDecimals": 18,
990+
"tokenDecimals": 12,
986991
"tokenSymbol": "FNL"
987992
}
988993
| .genesis = $original.genesis

Cargo.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Charts/fennel-node/README.md

Lines changed: 20 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,144 +1,45 @@
1-
# Fennel Node Helm Chart
1+
# Fennel Node Helm Chart (Production)
22

3-
This Helm chart deploys Fennel blockchain validator nodes on Kubernetes, following Polkadot SDK ecosystem standards.
4-
5-
## Overview
6-
7-
The chart uses Parity's official node chart (v5.15.0) as a dependency and provides Fennel-specific configurations for both development and staging environments.
3+
This Helm chart deploys a Fennel node on Kubernetes for the production Fennel chain. It is production-only and ships a single `values.yaml` for launching your own node.
84

95
## Prerequisites
106

117
- Kubernetes 1.23+
128
- Helm 3.13+
13-
- PV provisioner support in the underlying infrastructure (for persistent storage)
14-
- A configured StorageClass (e.g., `local-path`, `fast-ssd`)
9+
- PV provisioner in your cluster (for persistent storage)
1510

16-
## Installation
11+
## Install
1712

18-
### Add the Helm repository
13+
Add repository and install:
1914

2015
```bash
2116
helm repo add fennel https://corruptedaesthetic.github.io/fennel-solonet
2217
helm repo update
23-
```
2418

25-
### Install the chart
26-
27-
For development environment:
28-
```bash
29-
helm install fennel-dev fennel/fennel-node \
30-
--namespace fennel-dev \
19+
helm install fennel-node fennel/fennel-node \
20+
--namespace fennel \
3121
--create-namespace
3222
```
3323

34-
For staging environment:
35-
```bash
36-
helm install fennel-staging fennel/fennel-node \
37-
--namespace fennel-staging \
38-
--create-namespace \
39-
-f values-staging.yaml
40-
```
41-
42-
## Configuration
43-
44-
The chart provides two configuration files:
45-
46-
- `values.yaml` - Base configuration with development defaults
47-
- `values-staging.yaml` - Production-grade settings for staging environment
48-
49-
### Key Configuration Options
50-
51-
| Parameter | Description | Default |
52-
|-----------|-------------|---------|
53-
| `image.repository` | Docker image repository | `ghcr.io/corruptedaesthetic/fennel-solonet` |
54-
| `image.tag` | Docker image tag | Set by CI pipeline |
55-
| `chainspec.file` | Chain specification file | `development.json` |
56-
| `node.image.repository` | Node image repository (overrides base image) | Same as `image.repository` |
57-
| `node.node.chainData.storageClass` | Storage class for chain data PV | `fast-ssd` |
58-
| `node.node.chainData.volumeSize` | Size of persistent volume | `100Gi` |
59-
| `node.node.chainSnapshot.enabled` | Enable snapshot restoration | `false` (true in staging) |
60-
| `node.serviceMonitor.enabled` | Enable Prometheus monitoring | `false` (true in staging) |
61-
62-
### Major Changes in v0.2.0
63-
64-
**Breaking Changes**: This version upgrades from Parity node chart v0.10.0 to v5.15.0, which includes significant structural changes:
65-
66-
1. **Storage Class Configuration**: Now configured at `node.node.chainData.storageClass` instead of root level
67-
2. **Service Configuration**: Services are now configured under `node.node.perNodeServices`
68-
3. **Chainspec Mounting**: Custom chainspec is mounted via `extraVolumes` and `extraVolumeMounts`
69-
4. **Node Keys**: Configured via `node.node.existingNodeKeySecret` and `node.node.keys`
70-
71-
### Staging Environment Features
72-
73-
The staging configuration enables:
74-
75-
1. **Persistent Storage**: 100Gi volume with local-path storage class
76-
2. **Snapshot Restoration**: Automatic chain data restoration from snapshots
77-
3. **Secure Key Management**: Integration with Kubernetes Secrets for validator keys
78-
4. **Service Segmentation**: Separate services for API and P2P traffic
79-
5. **Monitoring**: Prometheus ServiceMonitor for metrics collection
80-
81-
## CI/CD Integration
82-
83-
The chart is automatically packaged and published by the GitHub Actions workflow when changes are pushed to the main branch. The workflow:
84-
85-
1. Builds the Docker image with srtool
86-
2. Generates chain specifications
87-
3. Updates Helm values with the correct image tag
88-
4. Lints and packages the chart
89-
5. Publishes to GitHub Pages Helm repository
90-
91-
## Local Development
92-
93-
To test the chart locally:
94-
95-
```bash
96-
# Update dependencies
97-
helm dependency update Charts/fennel-node
98-
99-
# Run the test script
100-
./scripts/test-helm-chart.sh
101-
102-
# Or manually:
103-
helm lint Charts/fennel-node
104-
helm lint Charts/fennel-node -f Charts/fennel-node/values-staging.yaml
105-
helm template fennel-test Charts/fennel-node -f Charts/fennel-node/values-staging.yaml
106-
```
107-
108-
## Upgrading from v0.1.x
24+
The chart defaults to connecting to the production network via the released `production-raw.json` chainspec. Override any field in `values.yaml` as needed.
10925

110-
When upgrading from v0.1.x to v0.2.x, note the following breaking changes:
26+
## Key values
11127

112-
1. Update your custom values files to use the new structure
113-
2. Storage class is now at `node.node.chainData.storageClass`
114-
3. Services configuration has moved to `node.node.perNodeServices`
115-
4. Update any scripts or CI/CD pipelines that reference the old paths
28+
- `image.repository` / `image.tag`: Docker image for `fennel-node` (CI sets tag on release)
29+
- `node.chain`: fixed to `production`
30+
- `node.customChainspecUrl`: defaults to the latest published `production-raw.json`
31+
- `node.chainData.storageClass` and `node.chainData.volumeSize`: persistent storage
32+
- `node.perNodeServices`: exposes API (RPC/metrics) and P2P
11633

117-
## Troubleshooting
118-
119-
### Check pod status
120-
```bash
121-
kubectl get pods -n fennel-staging
122-
kubectl describe pod <pod-name> -n fennel-staging
123-
```
124-
125-
### View logs
126-
```bash
127-
kubectl logs -n fennel-staging -l app.kubernetes.io/name=node
128-
```
129-
130-
### Check persistent volume
131-
```bash
132-
kubectl get pvc -n fennel-staging
133-
kubectl describe pvc -n fennel-staging
134-
```
34+
Example overrides:
13535

136-
### Verify storage class
13736
```bash
138-
kubectl get storageclass
139-
kubectl describe storageclass local-path
37+
helm upgrade --install fennel-node fennel/fennel-node \
38+
-n fennel \
39+
--set node.chainData.storageClass=managed-csi \
40+
--set node.chainData.volumeSize=256Gi
14041
```
14142

14243
## License
14344

144-
This chart is licensed under the Apache License 2.0.
45+
Apache-2.0

Charts/fennel-node/values-staging.yaml

Lines changed: 0 additions & 176 deletions
This file was deleted.

0 commit comments

Comments
 (0)