Russell Brooks
05/01/2026, 11:04 AMMarvin
05/01/2026, 11:04 AMMarvin
05/01/2026, 11:05 AM3.4.1 is the app version, not the Helm chart version.
For Prefect Helm charts, ArgoCD targetRevision needs the chart version from the Helm repo index, which uses a date-based format like:
2026.4.20173108
So in ArgoCD, use something like:
yaml
apiVersion: <http://argoproj.io/v1alpha1|argoproj.io/v1alpha1>
kind: Application
metadata:
name: prometheus-prefect-exporter
spec:
source:
repoURL: <https://prefecthq.github.io/prefect-helm>
chart: prometheus-prefect-exporter
targetRevision: 2026.4.20173108
destination:
server: <https://kubernetes.default.svc>
namespace: prefect
If you're trying to deploy the exporter app version 3.4.1, the matching chart version is 2026.4.20173108.
Useful links:
- Helm repo: prefecthq.github.io/prefect-helm
- Helm index: index.yaml
- Chart source: prometheus-prefect-exporter chart
Why the error happens: ArgoCD is looking for chart version 3.4.1, but that version does not exist in the Helm repository as a chart package version.
If you want, I can also help you find the current valid chart version for the exporter and sketch a complete ArgoCD manifest with values.Russell Brooks
05/01/2026, 11:09 AMMarvin
05/01/2026, 11:09 AMMarvin
05/01/2026, 11:10 AMchart_revision, not the app version.
So for prometheus-prefect-exporter, this should look more like:
json
{
"app_project": "default",
"cluster": "your-cluster",
"namespace": "prefect",
"revision": "main",
"chart_name": "prometheus-prefect-exporter",
"chart_revision": "2026.4.20173108",
"prefect-custom-label": "your-label"
}
A couple important points:
* chart_revision must exactly match a version present in the Helm repo index:
index.yaml
* 2026.4.24170839 may fail simply because that version is not published for prometheus-prefect-exporter, even if it exists for some other Prefect chart.
* revision is usually for your Git repo/app config revision, while chart_revision is the Helm chart version. Those are separate.
For prometheus-prefect-exporter, the researched matching chart version for app version 3.4.1 is:
2026.4.20173108
So if your system expects:
- `chart_name`: prometheus-prefect-exporter
- `chart_revision`: 2026.4.20173108
that is the right pairing.
If you're still getting the same error with that exact value, then the problem is likely one of these:
1. Wrong repository configured in ArgoCD
The app may not actually be pointing at:
<https://prefecthq.github.io/prefect-helm>
2. Repo cache is stale in ArgoCD
ArgoCD may not have refreshed the Helm index yet.
3. The JSON schema is interpreted by your internal platform layer
If this JSON is consumed by a wrapper around ArgoCD, it may be mapping chart_revision incorrectly.
4. revision and chart_revision are being confused by the template
I’ve seen setups where only one of them is actually used.
If you want, paste a sanitized example of the JSON plus the exact error, and I can help check whether the fields are being mapped correctly.Russell Brooks
05/01/2026, 11:12 AMMarvin
05/01/2026, 11:12 AMMarvin
05/01/2026, 11:12 AMprometheus-prefect-exporter?
If so, the most recent chart version I found for that chart is:
* 2026.4.20173108
with app version 3.4.1
Use:
json
{
"chart_name": "prometheus-prefect-exporter",
"chart_revision": "2026.4.20173108"
}
Reference:
- Prefect Helm index
- Chart source
If you literally meant prometheus-prefect-explorer, I don’t know of a Prefect Helm chart by that name in the repo.Russell Brooks
05/01/2026, 11:29 AMMarvin
05/01/2026, 11:29 AMMarvin
05/01/2026, 11:30 AMServiceMonitor, but your cluster does not know that kind yet.
What it is
- ServiceMonitor is a CRD from the Prometheus Operator ecosystem.
- It is commonly installed by the kube-prometheus-stack Helm chart.
- The Prefect exporter chart can create a ServiceMonitor so Prometheus can scrape the exporter automatically.
Why ArgoCD fails
- If serviceMonitor.enabled=true in the chart values, ArgoCD applies a resource like:
apiVersion: <http://monitoring.coreos.com/v1|monitoring.coreos.com/v1>
kind: ServiceMonitor
- If the CRD is not installed first, Kubernetes rejects it.
Two ways to fix it
Option 1: Install the ServiceMonitor CRD / Prometheus Operator
If you already use Prometheus Operator or want to, install kube-prometheus-stack.
Docs/charts:
- kube-prometheus-stack
- Artifact Hub entry
This will install the ServiceMonitor CRD and the controller that actually uses it.
If you're managing this with ArgoCD, typically you deploy kube-prometheus-stack first, then deploy prometheus-prefect-exporter.
Option 2: Disable ServiceMonitor creation
If you do not use Prometheus Operator, then disable the ServiceMonitor in the Prefect exporter chart.
The Prefect chart has:
- serviceMonitor.enabled: false by default in its values
- source: prometheus-prefect-exporter chart
So your wrapper/config likely enables it somewhere.
Depending on how your JSON maps to Helm values, you want the equivalent of:
yaml
serviceMonitor:
enabled: false
If your system supports passing Helm values as JSON, it may look like:
json
{
"chart_name": "prometheus-prefect-exporter",
"chart_revision": "2026.4.20173108",
"values": {
"serviceMonitor": {
"enabled": false
}
}
}
How to decide
- If you already have kube-prometheus-stack or Prometheus Operator in the cluster: keep serviceMonitor.enabled=true
- If you only want the exporter pod/service and do not have Prometheus Operator: set serviceMonitor.enabled=false
Important nuance
Installing only the CRD is usually not enough for useful monitoring. You generally want the operator/controller too, because that is what watches ServiceMonitor resources and updates Prometheus scrape config.
So the practical recommendation is:
1. Using Prometheus Operator? Install kube-prometheus-stack, then enable ServiceMonitor
2. Not using Prometheus Operator? Disable ServiceMonitor
If you want, paste the sanitized JSON or the values section your ArgoCD wrapper accepts, and I can help translate serviceMonitor.enabled=false into exactly the right shape.