Skip to content

Problem adding custom provider with URL in fetchConfig #811

@AMacedoP

Description

@AMacedoP

What steps did you take and what happened:

When adding a IPAM provider for Metal3 to a CAPI manager cluster the documentation states that you can only have to set the URL up to the releases path. Example 4.

But when trying to use this manifest:

apiVersion: operator.cluster.x-k8s.io/v1alpha2
kind: IPAMProvider
metadata:
  name: ipam-metal3
  namespace: metal3-ipam-system
spec:
  version: v1.10.0
  fetchConfig:
    url: https://github.com/metal3-io/ip-address-manager/releases

The CAPI operator controller fails with:

E0506 19:59:52.976457       1 controller.go:347] "Reconciler error" err="failed to create repo from provider url for provider \"ipam-metal3\": error creating the GitHub repository client: invalid url: a GitHub repository url should be in the form https://github.com/{owner}/{Repository}/releases/{latest|version-tag}/{componentsClient.yaml}" controller="ipamprovider" controllerGroup="operator.cluster.x-k8s.io" controllerKind="IPAMProvider" IPAMProvider="metal3-ipam-system/ipam-metal3" namespace="metal3-ipam-system" name="ipam-metal3" reconcileID="b40410de-f220-4faa-956c-35fdcabaa4d4"

When specifying the URL up to the yaml file in the release the installation completes without problem:

apiVersion: operator.cluster.x-k8s.io/v1alpha2
kind: IPAMProvider
metadata:
  name: ipam-metal3
  namespace: metal3-ipam-system
spec:
  version: v1.10.0
  fetchConfig:
    url: "https://github.com/metal3-io/ip-address-manager/releases/v1.10.0/ipam-components.yaml"

Am I doing something wrong or is the documentation wrong?

What did you expect to happen:

The IPAM provider installs successfully without providing the full URL to the release.

Environment:

  • Cluster-api-operator version: v0.19.0
  • Cluster-api version:
  • Minikube/KIND version: k3d v5.8.3
  • Kubernetes version: (use kubectl version): v1.31.5+k3s1
  • OS (e.g. from /etc/os-release): Ubuntu 25.04

/kind bug

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugCategorizes issue or PR as related to a bug.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.needs-triageIndicates an issue or PR lacks a `triage/foo` label and requires one.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions