Skip to content

ironcore-dev/machine-controller-manager-provider-ironcore-metal

machine-controller-manager-provider-ironcore-metal

REUSE status Go Report Card GitHub License PRs Welcome

Out of tree (controller based) implementation for metal API which is part of the metal-operator as a new provider.

About

  • The metal API Out Of Tree provider implements the interface defined at MCM OOT driver.

Fundamental Design Principles:

Following are the basic principles kept in mind while developing the external plugin.

  • Communication between this Machine Controller (MC) and Machine Controller Manager (MCM) is achieved using the Kubernetes native declarative approach.
  • Machine Controller (MC) behaves as the controller used to interact with the cloud provider metal and manage the resources corresponding to the machine objects.
  • Machine Controller Manager (MCM) deals with higher level objects such as machine-set and machine-deployment objects.

Support for a new provider

  • Steps to be followed while implementing/testing a new provider are mentioned here

Testing the metal API OOT

  1. Open terminal pointing to $GOPATH/src/github.com/gardener. Clone this repository.

  2. Navigate to $GOPATH/src/github.com/ironcore-dev/machine-controller-manager-provider-ironcore-metal.

    • In the MAKEFILE make sure $TARGET_KUBECONFIG points to the cluster where you wish to manage machines. $CONTROL_NAMESPACE represents the namespaces where MCM is looking for machine CR objects, and $CONTROL_KUBECONFIG points to the cluster which holds these machine CRs.
    • Run the machine controller (driver) using the command below.
      make start
  3. On the second terminal pointing to $GOPATH/src/github.com/gardener,

    • Clone the latest MCM code
      git clone git@github.com:gardener/machine-controller-manager.git
    • Navigate to the newly created directory.
      cd machine-controller-manager
    • Deploy the required CRDs from the machine-controller-manager repo,
      kubectl apply -f kubernetes/crds.yaml
    • Run the machine-controller-manager in the cmi-client branch
      make start
  4. On the third terminal pointing to $GOPATH/src/github.com/gardener/machine-controller-manager-provider-ironcore-metal

    • Fill in the object files given below and deploy them as described below.
    • Deploy the machine-class
      kubectl apply -f kubernetes/machine-class.yaml
    • Deploy the kubernetes secret if required.
      kubectl apply -f kubernetes/secret.yaml
    • Deploy the machine object and make sure it joins the cluster successfully.
      kubectl apply -f kubernetes/machine.yaml
    • Once machine joins, you can test by deploying a machine-deployment.
    • Deploy the machine-deployment object and make sure it joins the cluster successfully.
      kubectl apply -f kubernetes/machine-deployment.yaml
    • Make sure to delete both the machine and machine-deployment object after use.
      kubectl delete -f kubernetes/machine.yaml
      kubectl delete -f kubernetes/machine-deployment.yaml
      

Licensing

Copyright 2025 SAP SE or an SAP affiliate company and IronCore contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.

About

Gardener machine controller manager provider for bare metal server management

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 9