Skip to content

Clusters

Concepts

A Kubernetes cluster consists of interconnected nodes that collaborate to run containerized applications. Containers package applications with their dependencies and services into a single unit, making them more portable and efficient than traditional virtual machines.

Nodes in a Kubernetes cluster can be physical servers, virtual machines, or cloud instances, each capable of running multiple containers. Kubernetes oversees container distribution, scaling, load balancing, and maintaining the desired state of applications.

Containers are more lightweight than virtual machines as they share the host operating system's kernel, avoiding the need for a full OS per application. This leads to faster start-up times and better resource efficiency.

List Clusters

Sidebar MetaKube To list clusters click on the cluster icon in the sidebar

Cluster List

From the cluster list you can

  • Navigate to the details page of a cluster by clicking on the cluster name
  • Delete a cluster using the :materia-delete: option in each row
  • Create a new Cluster using the CREATE button in the title bar

MetaKube OpenAPI Spec

Usage

GET https://metakube.syseleven.de​/api​/v2​/projects​/{project_id}​/clusters

Create Cluster

To create a cluster click on Create in the title bar of the cluster list

Select Provider

Select Provider

First you will need to select a region in which the nodes will be deployed.

Then you will need to provide a Service Account previously created or API Key that will be used to perform the necessary provisioning jobs for setting up the infrastructure.

Check service account information to create the right Service Account.

Service account secret can be specified manually, or just generate a new ones from the Generate Credentials section of the cluster just after the region and service account selection.

Configure Provider Network

Configure Network

Once you have selected the region you can proceed to configure the provider networking.

Floating IP Pool
Select which pool should be used to obtain floating public IPs. In most setups this should be "ext-net"
Security Group
Select the security group your nodes will be part of. This will determine the traffic that can enter and exit the nodes. Think of it as IP tables.
Network
Allows you to select which network the cluster will be connected to. Leave it blank to let metakube generate a new network for you.
Subnet CIDR
Allows you to specify the address range for the subnet the cluster will be connected to.

Configure Cluster

Configure Cluster Once the provider is configured you can proceed to configuring the cluster itself.

Basics

  • Select a name for your cluster. MetaKube will suggest a random name for you but feel free to change it
  • Select the version of Kubernetes to be used for the cluster. The most recent version is preselected for you.
  • Select the CNI plugin for the cluster. We suggest to use Cilium (default)

Access and Logging

Here you control access to your cluster.

  • Add an SSH key and select whether you want to enable the SSH Key agent
  • Select the admission plugins you want to use
  • Toggle whether you want to use access logging

Metadata

Provide Metadata in the form of labels to facilitate addressing resources and automation

Configure Initial Node Deployment

Configure Node Deployment

Now you can configure the initial node pool for your cluster.

Basic Configuration

  • Name your deployment. The UI will suggest a name for you but feel free to change it.
  • Kubelet version
  • Define the number of nodes in your deployment.
    • You can specify an absolute number
    • You can also configure the node pool to scale automatically between a minimum and maximum number

Provider Specific Configuration

Here you configure additional settings for openstack.

Flavor
Determines the size / specs of the server.
Image
Select which image should be used to provision the nodes.
Custom Disk
Allows you to override the default size of the volumes on each node
Availability Zone
Select the availability zone for the nodes

Metadata

Provide Metadata in the form of labels to facilitate addressing resources and automation

Finalize and confirm

Now that the configuration is complete click create cluster.

This will start the provisioning process and you will be taken back to the list of cluster where your new cluster will appear shortly.

It will take a while until all components of your cluster become available. Once the cluster provisioning is complete you can click on the name of the cluster and perform further operations from the clusters detail page.

E.g. You can add more node deployments, modify the existing one or manage access to your cluster

MetaKube OpenAPI Spec

Usage

POST https://metakube.syseleven.de​/api​/v2​/projects​/{project_id}​/clusters

MetaKube Terraform Provider

Example:

# Terraform Provider configuration

terraform {
  required_providers {
    metakube = {
      source  = "syseleven/metakube"
    }
    openstack = {
      source = "terraform-provider-openstack/openstack"
    }
  }
}

provider metakube {
  host = "https://metakube.syseleven.de"
}

# SSH public key variable

variable public_key_path {
  description = "sshkey file"
    default = "~/.ssh/id_rsa.pub"
}

# MetaKube cluster configuration

data openstack_images_image_v2 "image" {
  most_recent = true

  visibility = "public"
  properties = {
    os_distro  = "ubuntu"
    os_version = "24.04"
  }
}

resource "metakube_sshkey" "sshkey" {
 name       = "ssh-pub-key"
 project_id = "PROJECT-ID"
 public_key = file(var.public_key_path)
}

resource "local_file" "kubeconfig" {
  content  = metakube_cluster.cluster.kube_config
  filename = "kube.conf"
}

data "metakube_k8s_version" "cluster" {
  major = "1"
  minor = "31"
}

resource "metakube_cluster" "cluster" {
  name       = "example-cluster"
  dc_name    = "DATACENTER-NAME"
  project_id = "PROJECT-ID"
  sshkeys = [metakube_sshkey.sshkey.id]
  spec {
    enable_ssh_agent = true
    version = data.metakube_k8s_version.cluster.version
    cloud {
      openstack {
        application_credentials {
          id     = "APP-CREDENTIALS"
          secret = "APP-SECRET"
        }
       floating_ip_pool = "ext-net"
      }
    }
    cni_plugin {
      type = "cilium"
    }
  }
}

resource "metakube_node_deployment" "node-deployment" {
  name       = "node-deployment"
  cluster_id = metakube_cluster.cluster.id
  project_id = "PROJECT-ID"
  spec {
    replicas = 3
    template {
      cloud {
        openstack {
          flavor = "m1.small"
          image  = data.openstack_images_image_v2.image.name
          use_floating_ip = true
        }
      }
      operating_system {
        ubuntu {
          dist_upgrade_on_boot = false
        }
      }
      versions {
        kubelet = data.metakube_k8s_version.cluster.version
      }
    }
  }
}

Inspect and Modify Cluster

Cluster Details You can modify the cluster on the details page of a cluster

The details page is composed of four tabs

Overview

Cluster Details Overview

Here you can see the current state of your cluster as well as perform basic modifications to your cluster such as selecting another version of kubernetes.

Machine Deployments

Cluster Details Machine Deplyoments

Here you can see the machine deployments belonging to your cluster and manage them.

Telemetry

Cluster Details Telemetry

This tabs holds an event log for your cluster where you can view what operations were performed on the cluster and its machined deployments.

Access Control

Cluster Details Access Control

Here you can control role based access to your cluster and namespace.

Also you can obtain a kube config needed for interaction with your cluster e.g. using kubectl.

Modify Cluster

Modify Cluster

To modify a cluster navigate to the cluster detail page by clicking its name on the cluster list.

The details page gives you access to all aspects of the cluster and you can modify the cluster itself and its node deployments.

Basic changes to cluster

Modify Cluster

To make changes to the cluster click the on the Settings card.

This will put the settings card into edit mode and allow you to change:

Cluster Name
Name of cluster
Kubernetes Version
Version of Kubernetes to be used.

Change Credentials

Change Credentials

Here you can change the credentials that will be used to interact with openstack when lifecycling nodes.

Warning

We do not recommend changing credentials unless it is really necessary.

Manage Machine Deployments

Cluster Details Machine Deployments

To view all node deployments belonging to the cluster switch to the Machine Deployments tab in the cluster details. From here you can manage, add and remove node deployments

Add Machine Deployment

Add Machine Deployment

To add a machine deployment click ADD MACHINE DEPLOYMENT in the machine deployments tab in the cluster details page.

Adding a deployment is performed in the same way as defining the initial deployment during cluster creation.

Basic Configuration

  • Name your deployment. The UI will suggest a name for you but feel free to change it.
  • Kubelet version
  • Define the number of nodes in your deployment.
    • You can specify an absolute number
    • You can also configure the node pool to scale automatically between a minimum and maximum number

Provider Specific Configuration

Here you configure additional settings for openstack.

Flavor
Determines the size / specs of the server.
Image
Select which image should be used to provision the nodes.
Custom Disk
Allows you to override the default size of the volumes on each node
Availability Zone
Select the availability zone for the nodes

Metadata

Provide Metadata in the form of labels to facilitate addressing resources and automation

Remove Machine Deployment

Cluster Details Machine Deployments To delete a machine deployment click the at the top of a machine deployment

Remove Machine Deployment Confirm the operation by clicking DELETE in the prompt

Manage Access Control

Cluster Details Access Control

Access Control Overview

This section allows you to manage cluster access and authentication. You can:

  • Download Config with Admin Token: Grants full admin access to the cluster.
  • Revoke Tokens: Revokes existing admin tokens.
  • Configure SysEleven Login: Optionally, configure SysEleven Login using OpenID Connect for cluster authentication.
  • Grant Access: Manage user access to the cluster and namespaces.

Manage SSH Keys

Manage SSH Keys You can view and manage the SSH Keys of a cluster by clicking Manage SSH Keys in the details page of a cluster

From here you can remove, add and import keys.

Add Key

Add Existing Key

To add a key click Add SSH Key in the SSH Key manager described above.

You can then simply select the key to add from the dropdown.

Import

Import Key In case you want to add a completely new SSH Key select the IMPORT option in the SSH Key manager dialog

You now have the choice between:

  • Importing a key using the Import Public Key option
    • already registered in openstack
    • importing a new key from file
  • Simply pasting a new public key

Delete Cluster

Delete Cluster

To delete a cluster you can

  • Click the icon at the end of an entry in the cluster list.
  • Click the DELETE CLUSTER button in the title bar of the cluster details page.

Confirm the deletion in the emerging dialog by clicking DELETE