Skip to content

Metal³

Deploying an on-premise K8SaaS cluster will require to use the Metal3 provider. In order to do so, follow the next steps.

Before your first implementation, make sure to be able to setup all the required properties available in the configuration reference.

In order to be able to access your applications with your domain name, you need to properly prepare your dns configuration prior to the K8SaaS cluster becoming operational.

The DNS entry should be set prior to the cluster generation, you will need to get the Load Balancer IP from the Metal3 configuration.

Once ready, create a config.yaml file with the following parameters:

config.yaml
provider: metal3
overlays:
- base-metal3
k8s:
version: v1.29.0
controlPlaneMachineCount: 1
workerMachineCount: 1
image:
name: ubuntu-2204-k8s-1-29-0 # qcow2 file
metal3:
cidr:
services: 10.96.0.0/12
pods: 192.167.0.0/18
ipPool:
start: 192.168.130.10
end: 192.168.130.254
gatewayIP: 192.168.130.1
dns: 8.8.8.8
controlplaneEndpoint:
host: 192.168.130.10
port: 6443
networkData:
links:
ethernets:
- type: phy
id: eth0
macAddress:
fromHostInterface: ens3
networks:
ipv4:
- id: provisioning
link: eth0
ipAddressFromIPPool: provisioning-pool
routes:
- network: 0.0.0.0
services:
dnsFromIPPool: provisioning-pool
hosts:
- type: controlplane
idrac:
username: <username>
password: <password>
nodeMAC: <macAddress>
bmc:
address: <bmcAddress>
rootDeviceHints:
- type: wwn
value: 0x500a0751e674d040

In order to provide a base image to the k8saas deployment, the image should be built first and available locally as a QCOW2 file.

Note: This section is incomplete.

Make sure to include your SecretStore configuration in your config.yaml file.

config.yaml
secretStore:
provider: plain
valsPrefix: secretref+file:///var/run/secrets/vals-expander/secret-store.yaml#/
valsSuffix: ""
plain:
argocd-oidc-client-key: value
argo-workflows-oidc-client-key: value
grafana-oidc-client-key: value
oauth2-proxy-oidc-client-key: value
oauth2-proxy-cookie-key: value
s3gw-access-key: value
s3gw-secret-key: value
admin-password: value
admin-password-hash: value