Skip to content

argocd-helm-oci: helm pull from in-cluster OCI registry returns 'unable to locate any tags' #961

Description

@mchmarny

Surfaced during live acceptance testing of #843 (PR #956). After aicr bundle --deployer argocd-helm --output oci://localhost:5500/aicr/eks-training:<tag> --plain-http reports a successful push, helm upgrade --install against the same registry returns:

$ helm upgrade --install aicr-test-stack oci://localhost:5500/aicr/eks-training \
    --version 5bc50950-argocd-helm-oci \
    --namespace argocd \
    --plain-http
Release "aicr-test-stack" does not exist. Installing it now.
Error: unable to locate any tags in provided repository: oci://localhost:5500/aicr/eks-training

The bundler's pkg/oci/push.go uses ociv1.MediaTypeImageLayerGzip for the layer and the custom application/vnd.nvidia.aicr.artifact for the manifest config. Helm OCI expects:

  • Chart layer mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
  • Manifest config mediaType: application/vnd.cncf.helm.config.v1+json
  • Tag enumeration via /v2/<name>/tags/list (standard OCI distribution API)

Hypotheses (need verification):

  1. Layer mediaType mismatch: helm OCI rejects artifacts whose layer mediaType isn't helm.chart.content.v1.tar+gzip. AICR pushes oci.image.layer.v1.tar+gzip — fine for Argo CD's raw OCI source but possibly not for helm.
  2. Config mediaType mismatch: application/vnd.nvidia.aicr.artifact for the manifest config is the artifactType; helm needs the Helm-specific config schema (Chart.yaml-derived JSON metadata).
  3. Missing helm annotation (oci.opencontainers.image.title etc.) on the manifest — helm's discovery may need OCI annotations identifying the artifact as a chart.

Reproduction:

unset GITLAB_TOKEN && make build
make kwok-cluster   # any single-node Kind cluster; the registry is local
bash kwok/scripts/install-infra.sh
$AICR bundle --deployer argocd-helm --output oci://localhost:5500/aicr/test:v1 --plain-http \
    --recipe <(aicr recipe --service eks --intent training)
helm upgrade --install test oci://localhost:5500/aicr/test --version v1 --plain-http -n argocd
# Error: unable to locate any tags in provided repository

Likely fix area: pkg/oci/push.go::PackArtifact — when --deployer argocd-helm, push with Helm-compatible mediaTypes/annotations so the artifact is discoverable by both Helm OCI and Argo CD (Argo CD v3.x's OCI Helm chart source already accepts helm.chart.content.v1.tar+gzip per its docs).

PR #956 (draft) ships helm + argocd-helm-oci wiring; argocd-helm-oci is blocked on this issue.

Metadata

Metadata

Assignees

No one assigned

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions