Skip to content

OCIRepo URL unable to work with basePaths #1922

@karl-cardenas-coding

Description

@karl-cardenas-coding

I'm trying to use a Zot registry that I have configured with an ingress that points to a base path /zot.However, the ociRepo resource is unable to connect properly to the registry. During the v2 lookup it omits the basepath.

Here is my spec:

apiVersion: v1
items:
- apiVersion: source.toolkit.fluxcd.io/v1
  kind: OCIRepository
  metadata:
    creationTimestamp: "2025-10-14T05:45:58Z"
    finalizers:
    - finalizers.fluxcd.io
    generation: 1
    name: mural-spoke-definitions
    namespace: mural-system
    resourceVersion: "549568"
    uid: 6120aece-2a73-415f-9526-5e8a4335f542
  spec:
    insecure: true
    interval: 1m0s
    provider: generic
    ref:
      tag: mural-spoke-definitions
    secretRef:
      name: oci-basic-auth-hub
    timeout: 1m0s
    url: oci://example.abc.com/zot/mural-workloads # REPLACED WITH MOCK EXAMPLE

The status conditions are

  status:
    conditions:
    - lastTransitionTime: "2025-10-14T16:38:55Z"
      message: building artifact
      observedGeneration: 1
      reason: ProgressingWithRetry
      status: "True"
      type: Reconciling
    - lastTransitionTime: "2025-10-14T16:38:55Z"
      message: "failed to determine artifact digest: GET https://example.abc.com/v2/:
        unexpected status code 404 Not Found: <html>\r\n<head><title>404 Not Found</title></head>\r\n<body>\r\n<center><h1>404
        Not Found</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n;
        Get \"http://example.abc.com/v2/\": dial tcp 4.211.199.12:80:
        i/o timeout"
      observedGeneration: 1
      reason: OCIArtifactPullFailed
      status: "False"
      type: Ready
    - lastTransitionTime: "2025-10-14T16:38:55Z"
      message: "failed to determine artifact digest: GET https://example.abc.com/v2/:
        unexpected status code 404 Not Found: <html>\r\n<head><title>404 Not Found</title></head>\r\n<body>\r\n<center><h1>404
        Not Found</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n;
        Get \"http://example.abc.com/v2/\": dial tcp 4.211.199.12:80:
        i/o timeout"
      observedGeneration: 1
      reason: OCIArtifactPullFailed
      status: "True"
      type: FetchFailed
    observedGeneration: -1
kind: List
metadata:
  resourceVersion: ""

It's hitting the endpoint correctly but it needs to include the basepath for it to properly work. Below is an example with curl where I target the endpoint and get a response.

curl -u example:'notarealpwd' https://example.abc.com/zot/v2/_catalog
{"repositories":["zot/mural-workloads"]}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions