Quick Start
The Provenance Collector is normally installed by the
Nebari Operator as part of
NIC’s foundational software — you don’t run any helm commands yourself, the
operator and ArgoCD do it for you. The operator-managed path is the supported
default; the standalone install below exists for vanilla Kubernetes clusters
and local development.
Operator-managed install (default)
Section titled “Operator-managed install (default)”A complete ArgoCD Application manifest lives at
examples/argocd-application.yaml
and is auto-stamped to the latest released chart version on every release.
Apply it from your gitops repo or directly:
kubectl apply -f examples/argocd-application.yamlThe values most users adjust:
nebariapp: enabled: true # register the pack with the Nebari Operator hostname: provenance.<your-domain> # public URL the UI responds on
webUI: enabled: true # dashboard API + report-upload endpoint; required when persistence.mode=http features: timelineDeltas: false # opt-in; show +N/-N badges between scans
frontend: enabled: true # standalone React UI (nginx); serves the SPA and proxies /api to the dashboard keycloak: url: https://keycloak.<your-domain> # required when frontend.enabled: the browser keycloak-js (PKCE) login endpointSetting nebariapp.enabled: true renders a NebariApp custom resource that
registers the pack with the Nebari Operator. The operator wires up routing,
provisions a public Keycloak SPA client, and registers the landing page so the
UI is reachable through the Nebari gateway under https://<hostname> and
surfaced on the Nebari Landing page.
The React SPA performs the OIDC login in the browser via keycloak-js (PKCE);
the gateway does not enforce auth (nebariapp.auth.enforceAtGateway: false).
Leave nebariapp.enabled: false for clusters that aren’t running the operator.
Full field reference: NebariApp CRD.
Verify:
# Application picked up by ArgoCDkubectl get application provenance-collector -n argocd
# Chart unpacked: CronJob + dashboard pods exist in the target namespacekubectl get cronjob -n provenance-systemkubectl get pods -n provenance-system -l app.kubernetes.io/name=provenance-collectorStandalone install (without the Nebari Operator)
Section titled “Standalone install (without the Nebari Operator)”Prerequisites
Section titled “Prerequisites”| Tool | Minimum version | Notes |
|---|---|---|
kubectl | 1.26+ | Cluster interaction |
helm | 3.14+ | Chart install |
| Kubernetes cluster | 1.26+ | Local (kind / k3d / minikube) or remote |
| Cluster permissions | cluster-admin | Chart creates a ClusterRole + ClusterRoleBinding |
If you want nebariapp.enabled: true on a standalone cluster, the Nebari
Operator CRDs must still be installed first — see the
NebariApp CRD reference. Most standalone installs
leave nebariapp.enabled: false and hit the dashboard’s JSON API via
kubectl port-forward (the browser UI is the separate frontend container —
see Web Dashboard).
Install
Section titled “Install”helm repo add nebari https://nebari-dev.github.io/helm-repositoryhelm repo update
helm install provenance-collector nebari/provenance-collector \ --namespace provenance-system \ --create-namespaceOr install from a local checkout when iterating on the chart:
helm install provenance-collector ./chart \ --namespace provenance-system \ --create-namespaceVerify
Section titled “Verify”kubectl get cronjob -n provenance-systemkubectl get pods -n provenance-system -l app.kubernetes.io/name=provenance-collectorTrigger a manual run
Section titled “Trigger a manual run”Two options:
- From the dashboard — click the
Run Scanbutton next to the timeline. The button only renders for users whose OIDC groups intersect withwebUI.adminGroups, so it’s hidden by default until you wire upwebUI.oidcIssuerand at least one admin group. Under operator-managed installs (nebariapp.enabled: true) this is handled automatically — the operator routes through Keycloak with the groups innebariapp.auth.groups. - With
kubectl— fall back to creating a Job from the CronJob directly:
kubectl create job --from=cronjob/provenance-collector \ manual-run -n provenance-system
kubectl wait --for=condition=complete job/manual-run \ -n provenance-system --timeout=5mEither path creates a one-shot Job from the same CronJob template, so the
resulting report is identical. Manual Jobs are auto-cleaned after
webUI.manualJobTTL (default 1h); the kubectl-created Job above has no TTL
and persists until you delete it.
View the report
Section titled “View the report”# Default (persistence.mode=http) — the dashboard exposes the JSON API (it is# API-only; the browser UI is the separate frontend container).kubectl port-forward -n provenance-system \ svc/provenance-collector-web 8080:8080
# In another shell, fetch the latest JSON:curl -s http://localhost:8080/api/reports/latest | jq .
# persistence.mode=configmap — no dashboard required.kubectl get configmap provenance-report \ -n provenance-system \ -o jsonpath='{.data.report\.json}' | jq .To open the browser UI, use the Nebari gateway (nebariapp.enabled: true, at
https://<hostname>) or run it locally against the port-forwarded API — see
Web Dashboard. The report’s JSON structure is documented in
the Report Schema reference.
Uninstall
Section titled “Uninstall”helm uninstall provenance-collector -n provenance-system
# Also remove the namespace (and any PVC-stored reports):kubectl delete namespace provenance-systemNext steps
Section titled “Next steps”- Architecture — how the pieces fit together.
- Storage Modes — choosing between
http,pvc, andconfigmap. - Configuration — every environment variable and chart value.