Source repository for the Curvine Helm charts.
Public index:
helm repo add curvineio https://curvineio.github.io/curvine-doc/helm-charts
helm repo updatePublished charts:
| Source Directory | Published Chart Name | Purpose |
|---|---|---|
curvine-runtime/ |
curvine |
Curvine runtime cluster |
curvine-csi/ |
curvine-csi |
Curvine CSI driver |
Install a minimal runtime cluster:
helm upgrade --install curvine curvineio/curvine \
-n curvine \
--create-namespaceInstall the CSI driver:
helm upgrade --install curvine-csi curvineio/curvine-csi \
-n curvine-system \
--create-namespaceInstall the CSI chart only after the Curvine runtime cluster is reachable and you are ready to create a StorageClass.
Before you install the runtime chart, make sure one of these is true:
- Your cluster has a default
StorageClass - You pass explicit
storageClassvalues - You use a
hostPath-based example on bare metal
- Runtime chart: curvine-runtime/README.md
- CSI chart: curvine-csi/README.md
- Release workflow: .github/workflows/README.md
curvine-helm/
├── .github/workflows/ # Chart packaging and release workflow
├── curvine-runtime/ # Source for the published `curvine` chart
├── curvine-csi/ # Source for the published `curvine-csi` chart
└── README.md # Repository entrypoint
- This repository stores chart source code only.
- Chart packages are published to GitHub Releases.
- The public Helm index is served from
curvine-doc. - End users should install from
https://curvineio.github.io/curvine-doc/helm-charts.
Curvine uses separate repositories for application code, container images, and Helm charts. The version fields below keep those artifacts aligned without requiring manual image tag edits on every release.
| Field | Versioned Release Example | Main Branch Dev Example | Where It Lives | Meaning |
|---|---|---|---|---|
| Curvine git tag | v0.3.0 |
— | CurvineIO/curvine |
Application release tag |
| Container image tag | v0.3.0 |
latest |
ghcr.io/curvineio/curvine, ghcr.io/curvineio/curvine-csi |
Image pulled by workloads |
| Helm git tag | v0.3.0 |
— | CurvineIO/curvine-helm |
Chart release tag in this repository |
Chart.version |
0.3.0 |
0.0.0-dev |
Chart.yaml |
Helm chart package version |
Chart.appVersion |
0.3.0 |
latest |
Chart.yaml |
Application version deployed by the chart |
values.image.tag |
"" |
"" |
values.yaml |
Optional image tag override |
Chart.version identifies the chart package. Chart.appVersion identifies the application
binaries/images the chart deploys. They match on versioned releases, but diverge on main
branch test packages.
Versioned release:
flowchart LR
A["curvine tag<br/>v0.3.0"] --> B["container image<br/>v0.3.0"]
C["curvine-helm tag<br/>v0.3.0"] --> D["Chart.version<br/>0.3.0"]
C --> E["Chart.appVersion<br/>0.3.0"]
E --> F["default image tag<br/>v0.3.0"]
B -. same version .- F
main branch test package:
flowchart LR
M["push to main"] --> CV["Chart.version<br/>0.0.0-dev"]
M --> AV["Chart.appVersion<br/>latest"]
AV --> IT["default image tag<br/>latest"]
IMG["container image<br/>latest"] -. rolling image .- IT
Rules:
- Curvine release drives images. Pushing
v0.3.0inCurvineIO/curvinebuilds and publishesghcr.io/curvineio/curvine:v0.3.0andghcr.io/curvineio/curvine-csi:v0.3.0. - Helm release follows automatically. After Curvine images are published,
CurvineIO/curvinedispatches acurvine-releaseevent to this repository. Theon-curvine-releaseworkflow creates the matchingv*git tag onmain, which triggers chart packaging. - Helm release drives chart metadata. The release workflow packages charts with
version: 0.3.0andappVersion: "0.3.0"from the git tag. - Image tag defaults from
appVersion.values.yamlleavesimage.tagempty. Templates resolve it tolatestwhenChart.AppVersionislatest, otherwisev{Chart.AppVersion}(for example0.3.0becomesv0.3.0). Chart.versionandChart.appVersionusually match for versioned releases. Formainbranch test packages,Chart.versionis fixed at0.0.0-devwhileappVersionislatest.- Override when needed. Use
--set image.tag=...for custom images, hotfixes, or pinned builds.
Trigger in curvine-helm |
Chart.version |
Chart.appVersion |
Default image.tag |
|---|---|---|---|
Push v0.3.0 tag |
0.3.0 |
0.3.0 |
v0.3.0 |
Push to main |
0.0.0-dev |
latest |
latest |
main branch test packages use rolling latest images from the registry. The chart package
version is fixed at 0.0.0-dev so it does not collide with versioned releases.
# 1. Curvine publishes application binaries and images
# CurvineIO/curvine tag: v0.3.0
# images: ghcr.io/curvineio/curvine:v0.3.0
# ghcr.io/curvineio/curvine-csi:v0.3.0
# 2. Curvine dispatches a helm release for the same tag
# curvine-helm receives repository_dispatch event: curvine-release
# on-curvine-release workflow creates tag v0.3.0 on main
# release workflow packages charts:
# chart package version: 0.3.0
# chart appVersion: 0.3.0
# rendered image: ghcr.io/curvineio/curvine:v0.3.0
# 3. Install from the public Helm repository
helm repo add curvineio https://curvineio.github.io/curvine-doc/helm-charts
helm repo update
helm upgrade --install curvine curvineio/curvine --version 0.3.0 -n curvine --create-namespace# 1. Merge chart changes to main
# GitHub Actions packages charts into the `latest` test release:
# chart package version: 0.0.0-dev
# chart appVersion: latest
# rendered image: ghcr.io/curvineio/curvine:latest
# 2. Install the rolling test package from GitHub Releases
wget https://github.com/CurvineIO/curvine-helm/releases/download/latest/curvine-0.0.0-dev.tgz
helm upgrade --install curvine ./curvine-0.0.0-dev.tgz -n curvine --create-namespaceUse this flow for chart development and integration testing only. For production, install a versioned chart that matches a Curvine release tag.
helm upgrade --install curvine curvineio/curvine \
--set image.tag=v0.3.0-rc.1 \
-n curvine --create-namespaceFor workflow details and the release checklist, see .github/workflows/README.md.
Lint and package from source directories:
helm lint ./curvine-runtime
helm lint ./curvine-csi
mkdir -p dist
helm package ./curvine-runtime --destination dist
helm package ./curvine-csi --destination distInstall locally from source:
helm upgrade --install curvine ./curvine-runtime -n curvine --create-namespace
helm upgrade --install curvine-csi ./curvine-csi -n curvine-system --create-namespace- Curvine project: https://github.com/CurvineIO/curvine
- Helm documentation: https://helm.sh/docs/