Create Other cluster

This section will help you create a Saagie-compatible Kubernetes cluster if you are not using a Kubernetes-as-a-Service platform.

1. Create or configure cluster

If you are using an on-premise cloud or are not using a Kubernetes-as-a-Service platform, you’ll need a Vanilla Kubernetes cluster.

Follow Kubernetes' tutorial to create your Vanilla Kubernetes cluster: Creating a single control-plane cluster with kubeadm.

Make sure you have the following:

Table 1. Kubernetes Vanilla cluster requirements for Saagie
Requirement Details

Network add-on (CNI)

Choose Calico in the section Installing a Pod network add-on. Saagie is only tested and certified with Calico. Saagie might work with other CNIs, but they have not been tested.

Volume Management System

You need a storage provider to create persistent storage.
Refer to Customize Vanilla Kubernetes cluster for some examples.

LoadBalancer

Recommended tool to give users access to the Saagie platform.

Other methods (such as NodePort + reverse proxy) are possible but not recommended as they haven’t been tested as extensively. Parts of your Saagie platform may not function as expected without additional setup and testing.

2. Verify your Kubernetes cluster

Run the following command to verify that you have access to your Kubernetes cluster:

kubectl get nodes
All nodes must have the status ready.

3. Create storage classes

Configure your cluster to have these storages classes:

  • common-storageclass: Used to store Saagie data, such as databases.

  • <prefix>-storageclass: Used to store job data, such as uploaded artifacts.

  • <prefix>-app-storageclass: Optional storageClass if you want to store app data and job data on different provisioner.

<prefix> is the same value you determined for your DNS entry.

3.1. Create a storage.yml file

Below is a sample storage.yml file for OVH that can be customized according to your needs. Refer to the Kubernetes documentation for more detailed information.

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: common-storageclass
parameters:
  availability: nova
  type: classic
provisioner: cinder.csi.openstack.org
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: <prefix>-storageclass (1)
parameters: (2)
  availability: nova
  type: classic
provisioner: cinder.csi.openstack.org (3)

To store app data and job data on different provisioners, include the following in the same storage.yml file:

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: <prefix>-app-storageclass (1)
parameters: (2)


provisioner: (3)
1 Replace <prefix> with the same value determined for your DNS entry.
2 The necessary parameters depend on your provisioner.
3 Indicate your provisioner.

3.2. Apply storage.yml

  1. Run the following command to apply your storage.yml file:

    kubectl apply -f storage.yml
  2. Run the following command to confirm that the storage classes are available:

    kubectl get sc
Next step

After creating or configuring your cluster, continue to Prepare your Kubernetes cluster.