<@ULVA73B9P> I want to make a prometheus-prefect-e...
# ask-marvin
r
@Marvin I want to make a prometheus-prefect-exporter pod using prefect-helm charts. But I get error message: chart version 3.4.1 not found in https://prefecthq.github.io/prefect-helm repository. So how should I specify the version in an ArgoCD config?
m
thought for 84.6 seconds
3.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:
Copy code
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.
r
@Marvin I had tried version 2026.4.24170839 previously but that gave the same error. Also the config I am talking about is a json with keys for app_project, cluster, namespace, revision, chart_name, chart_revision, prefect-custom-label.
m
🔄 Thinking... this may take a while
Got it — in that JSON, you should put the chart package version in
chart_revision
, not the app version. So for
prometheus-prefect-exporter
, this should look more like:
Copy code
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.
r
@Marvin can you tell me the most recent version that also has prometheus-prefect-explorer ?
m
🔄 Thinking... this may take a while
Do you mean
prometheus-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:
Copy code
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.
r
@Marvin ok that version worked. But now ArgoCD sync now complains to make sure the “ServiceMonitor” CRD is installed on the destination cluster. What and how to do that?
m
thought for 62.0 seconds
That error means the chart is trying to create a Kubernetes object of kind
ServiceMonitor
, 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:
Copy code
yaml
serviceMonitor:
  enabled: false
If your system supports passing Helm values as JSON, it may look like:
Copy code
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.