Skip to content

Install

What Will You Do

In this exercise,

  • You will create a MetalLB addon and use it in a custom cluster blueprint
  • You will then apply this cluster blueprint to a managed cluster

Important

This tutorial describes the steps to create and use a custom cluster blueprint using the Web Console. The entire workflow can also be fully automated and embedded into an automation pipeline.


Assumptions

  • You have already provisioned an upstream Kubernetes cluster (bare metal or VM based)
  • You have an allocated range of IP Addresses to be used for load-balancers.

Step 1: Create the MetalLB Helm Repository

Additional information on downloading, packaging, and installing the the latest helm chart can be found here https://metallb.universe.tf/.

  • Login into the Web Console and navigate to your Project as an Org Admin or Infrastructure Admin
  • Under Integrations select "Repositories" and create a new Helm Repository called "metallb" with the following Endpoint "https://metallb.github.io/metallb"

Create MetalLB Addon


Step 2: Customize Values

  • Create the file "metallb-custom-values.yaml" and copy the contents below. Edit the address space to match the address space you have assigned to your load-balancers.
configInline:
  address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 10.0.2.240-10.0.2.250

Step 3: Create MetalLB Addon

  • Login into the Web Console and navigate to your Project as an Org Admin or Infrastructure Admin
  • Under Infrastructure, select "Namespaces" and create a new namespace called "metallb-system"
  • Select "Addons" and "Create" a new Addon called "metallb-controller" by selecting the "+ New Add-On" button
  • Ensure that you select "Helm 3" for type, "Pull files from repository" for the Artifact Sync, "Helm" for the Repository Type, and select the namespace as "metallb-system"

Create MetalLB Addon

  • Select "New Version" and set the Version Name to "0.10.2", The Repository to "metallb", Chart Name to "metallb", Chart Version to "0.10.2", upload the custom values file "metallb-custom-values.yaml", and click on "SAVE CHANGES"

Create MetalLB Addon


Step 4: Create Blueprint

Now, we are ready to assemble a custom cluster blueprint using the addon.

  • Under Infrastructure, select "Blueprints"
  • Create a new blueprint and give it a name such as "metallb"
  • Create a new version of the blueprint by selecting "+ New Version"
  • Enter a version name such as "1.0" and add the metallb-controller addon.

Once the blueprint is created, ensure you publish it and optionally provide a version so that it can be tracked.

Create Blueprint

Show Blueprint


Step 5: Apply Blueprint

Now, we are ready to apply this custom blueprint to a cluster.

  • Click on Options for the target Cluster in the Web Console
  • Select "Update Blueprint" and select the "metallb" blueprint and appropriate version we created from the list

Update Blueprint

Click on "Save and Publish". This will start the deployment of the addons configured in the "metallb-controller" blueprint to the targeted cluster. The blueprint sync process can take a few minutes. Once complete, the cluster will display the current cluster blueprint details and whether the sync was successful or not. See illustrative example below.

Blueprint Update


Step 6: Verify Deployment

Users can optionally verify whether the correct resources have been created on the cluster.

  • Click on the Kubectl button on the cluster to open a virtual terminal
  • We will verify the pods in the "metallb-system" namespace. You should see something like the example below.
kubectl get pod -n metallb-system

NAME                                             READY   STATUS    RESTARTS   AGE
metallb-controller-controller-5684bb88cb-fm26z   1/1     Running   0          4m37s
metallb-controller-speaker-2scbl                 1/1     Running   0          4m37s

Recap

Congratulations! You have successfully created a custom cluster blueprint with the "metallb-controller" addon and applied to a cluster. You can now use this blueprint on as many clusters as you require.