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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions