Skip to content

Command Examples

Below we show some common use cases and command examples you may wish to use.

Also see our Integration Tests folder on GitHub for more suggestions.

Note that we assume you have this variable defined in your environment for the target (install environment) container registry:-

export REGISTRY=https://myserver.com:8083

We further assume you have skopeo logged into this registry before running kod.

Package a chart directly from an OCI registry (preferred)

kod package -r oci://ghcr.io/prometheus-community/charts/kube-prometheus-stack

Package a chart directly from a HTTPS URL

kod package -c https://github.com/cloudnative-pg/charts/releases/download/cloudnative-pg-v0.28.0/cloudnative-pg-0.28.0.tgz

Packaging from a cloned Helm Chart repo

This example shows how to clone a Git repo containing a helm chart folder, and using that to create a cod package. We use Bitnami's repository and their Redis chart as an example, as it's small.

git clone https://github.com/bitnami/charts.git
kod package -c charts/bitnami/redis

Note: The Bitnami chart container references will be incorrect - see the Broadcom release notes from Sep 2025 for the reason. Also read our note on Bitnami charts.

Examples for known working charts

Below are the commands we use in QA and testing for kod for the well known charts.

kube-prometheus-stack

Note that we need a custom values file to make this work on more secure K8s environments. This is a known prometheus-node-exporter chart limitation.

Note that we need --no-digests on deploy here as the packaging time and deploy time container SHA references do not match.

kod package -r oci://ghcr.io/prometheus-community/charts/kube-prometheus-stack -f chartfiles/kube-prometheus-stack/values.yaml
kod deploy  -p /tmp/kod-kube-prometheus-stack-84.4.0.kodpkg -n monitoring -d kps -s zot --create-secret --no-digests -r $REGISTRY

Note that the above does work, but there's a bug inside grafana-sc-dashboard container in the grafana pod which causes it to restart regularly:-

{"time": "2026-04-30T11:29:41.826831+00:00", "level": "WARNING", "msg": "Retrying (Retry(total=0, connect=10, read=5, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: CA cert does not include key usage extension (_ssl.c:1081)'))': /api/v1/secrets?labelSelector=grafana_dashboard%3D1&limit=5"}
{"time": "2026-04-30T11:29:41.831788+00:00", "level": "ERROR", "msg": "MaxRetryError: HTTPSConnectionPool(host='10.152.183.1', port=443): Max retries exceeded with url: /api/v1/secrets?labelSelector=grafana_dashboard%3D1&limit=5 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: CA cert does not include key usage extension (_ssl.c:1081)')))",

Argo CD

kod package -r oci://ghcr.io/argoproj/argo-helm/argo-cd
kod deploy -p /tmp/kod-argo-cd-9.5.2.kodpkg -n cd -d myargo -s zot --create-secret -r $REGISTRY

cert-manager

Note that this chart requires a default values file in the packaging step to ensure it successfully installs due to how that chart works without extra configuration. (The -f option, below)

kod package -r https://charts.jetstack.io -c cert-manager -f chartfiles/cert-manager/values.yaml
kod deploy -p /tmp/kod-cert-manager-v1.20.2.kodpkg -n cert-manager -d mycm -s zot --create-secret -r $REGISTRY

Postgres Standalone

Note: Not the Bitnami chart repo. Consider using the cloudnative-pg postgres operator rather than a standalone instance.

kod package -r https://raw.githubusercontent.com/hansehe/postgres-helm/master/helm/charts/postgres -c postgres
kod deploy -p /tmp/kod-postgres-0.1.0.kodpkg -n pg -s zot --create-secret -d mypg -r $REGISTRY 

Postgres Operator

aka the cloudnative-pg operator chart.

kod package -c https://github.com/cloudnative-pg/charts/releases/download/cloudnative-pg-v0.28.0/cloudnative-pg-0.28.0.tgz
kod deploy -p /tmp/kod-cloudnative-pg-0.28.0.kodpkg -s zot -d mycnpg -r $REGISTRY

Prometheus

Consider using the full kube-prometheus-stack chart instead as that includes Grafana too.

Note that we need a custom values file to make this work on more secure K8s environments. This is a known prometheus-node-exporter chart limitation.

Note that we need --no-digests on deploy here as the packaging time and deploy time container SHA references do not match.

kod package -r oci://ghcr.io/prometheus-community/charts/prometheus -f chartfiles/prometheus/values.yaml
kod deploy -p /tmp/kod-prometheus-29.4.0.kodpkg -n prometheus -d myprom -s zot --create-secret --no-digests -r $REGISTRY

NiFiKop operator

kod package -r oci://ghcr.io/konpyutaika/helm-charts -c nifikop
kod deploy -p /tmp/kod-nifikop-1.17.0.kodpkg -s zot -d nifi -r $REGISTRY

Your Example Here!

Writing documentation and examples is a great way to get involved in Open Source Software development! It's how I got started - writing documentation for the Tomcat Java web server project.

Please visit our Issues page and log an issue saying what you want to work on, and we'll help you contribute an example!