Helm charts for the Permesi platform.
charts/permesi: production-oriented IAM service chart (Deployment/Service/Ingress/HPA/PDB/NetworkPolicy, schema validation, secret wiring)charts/genesis: production-oriented edge admission chart with the same operational patternscharts/web: production-oriented web UI chart with runtimeconfig.jsinjection from values or an external ConfigMapcharts/permesi-stack: umbrella chart to installpermesi,genesis, andwebtogether
See:
charts/permesi/README.mdcharts/genesis/README.mdcharts/web/README.mdcharts/permesi-stack/README.md
Prerequisites:
- Kubernetes cluster
- Helm 3.13+
Install the full stack:
helm upgrade --install permesi \
oci://ghcr.io/permesi/charts/permesi-stack \
--version 0.3.29 \
--namespace permesi \
--create-namespace \
-f values.yamlInstall single components:
helm upgrade --install permesi-api oci://ghcr.io/permesi/charts/permesi --version 0.3.29 -n permesi --create-namespace -f permesi-values.yaml
helm upgrade --install permesi-genesis oci://ghcr.io/permesi/charts/genesis --version 0.3.29 -n permesi --create-namespace -f genesis-values.yaml
helm upgrade --install permesi-web oci://ghcr.io/permesi/charts/web --version 0.3.29 -n permesi --create-namespace -f web-values.yamlgit clone https://github.com/permesi/permesi-helm.git
cd permesi-helm/charts/permesi-stack
helm dependency build
helm upgrade --install permesi . -n permesi --create-namespace -f values.yamlpermesi:
database:
dsn:
existingSecret: permesi-db
secretKey: dsn
tls:
existingSecret: permesi-tls
secretKey: bundle.pem
vault:
url: https://vault.example.com:8200
roleId:
existingSecret: permesi-vault
secretKey: role_id
secretId:
existingSecret: permesi-vault
secretKey: secret_id
genesis:
database:
dsn:
existingSecret: genesis-db
secretKey: dsn
tls:
existingSecret: genesis-tls
secretKey: bundle.pem
vault:
url: https://vault.example.com:8200
roleId:
existingSecret: genesis-vault
secretKey: role_id
secretId:
existingSecret: genesis-vault
secretKey: secret_id
web:
runtimeConfig:
apiBaseUrl: https://api.permesi.example.com
tokenBaseUrl: https://genesis.permesi.example.com
clientId: 00000000-0000-0000-0000-000000000000
opaqueServerId: api.permesi.example.comThis repository includes a workflow that opens a PR whenever permesi publishes a release.
- Trigger:
repository_dispatchwith event typepermesi-release - Payload field used:
client_payload.version - Manual fallback:
workflow_dispatchwith aversioninput
Workflow file: .github/workflows/release-bump-pr.yml
Script used for updates: scripts/bump-release.sh
charts/permesi/Chart.yamlcharts/genesis/Chart.yamlcharts/web/Chart.yamlcharts/permesi-stack/Chart.yamlcharts/permesi/values.yaml(image.tag)charts/genesis/values.yaml(image.tag)charts/web/values.yaml(image.tag)charts/permesi-stack/values.yaml(image tags marked with# managed-by-release-bot)
Chart changes are validated with Chart Testing:
- Workflow:
.github/workflows/charts-ci.yml ct lintvalidates chart structure and Helm lint rules.ct installruns install checks against a temporary Kind cluster.
Configuration is in .ct.yaml.
Charts are published to GHCR OCI:
- Workflow:
.github/workflows/publish-charts.yml - Target registry path:
oci://ghcr.io/permesi/charts - Trigger: GitHub Release publish in this repo, or manual dispatch with
version.
The publish workflow validates each chart version matches the release version before pushing.
Releases can be automated after CI success on main:
- Workflow:
.github/workflows/auto-release.yml - Trigger:
workflow_runafterCharts CIcompletes successfully forpushevents onmain - Behavior:
- Reads chart version from
charts/permesi-stack/Chart.yaml - Validates all chart versions match
- Creates release tag
v<version>if it does not already exist - Triggers
.github/workflows/publish-charts.ymlvia therelease.publishedevent
- Reads chart version from