Okeanos is a fully-managed service based on Gardener to deliver Kubernetes clusters at scale everywhere, currently in public beta.
Login to the dashboard is possible with your existing GitHub account. After the first login a new project will be automatically created for you. Please reload the dashboard after a few seconds to see this project. You can then add your credentials for the cloud to be used and create Kubernetes clusters that will use virtual machines in that cloud account, and we provide and manage the Kubernetes Control Plane on our own infrastructure.
The clouds currently available are AWS, GCP, Azure, Hetzner Cloud, Fugacloud, Betacloud and CityCloud. We are currently working on support for IONOS and OVH. During the public beta, the only cost for using Okeanos is the cost on your own cloud account, charged directly by the cloud provider.
We do not ask for payment information and will not charge you for the control plane of the managed Kubernetes clusters. The service and support is offered on a best effort basis for free accounts until further notice.
The following describes how a Hetzner Cloud project is integrated into Okeanos.
NEUES PROJEKT
button and create a new project, e.g. with the name okeanos-rocks
.API TOKENS
tab in the Sicherheit
panel.API-TOKEN HINZUFÜGEN
and create a new API token with the permission
Lesen & Schreiben
and as description e.g. okeanos-api-token
.SECRETS
panel and click the +
icon in the
Infrastructure Secrets
section.okeanos-rocks-hcloud-secret
.The provided Grafana is stateless and therefore has the flaw of not beeing able to save settings. For example marking a dashboard as a favorite is impossible.
If you want to create clusters trough applications, you can do this via a custom resource definition of type shoot trough kubernetes. To gain access to the gardener API which creates shoots, you have to create a service account from the web dashboard.
From here you can also view or download the kubernetes config file. Once your kubectl or other tool is configured to use the new config file, you can simple apply the resource, e.g.
kubectl apply -f cluster.yaml
cluster.yaml example for Betacloud
kind: Shoot
apiVersion: core.gardener.cloud/v1beta1
metadata:
name: my-cluster-name
namespace: garden-<your_project_name>
spec:
cloudProfileName: betacloud
hibernation:
enabled: false
schedules:
- start: '00 17 * * 1,2,3,4,5'
end: '00 08 * * 1,2,3,4,5'
location: Europe/Berlin
kubernetes:
version: 1.22.9
networking:
type: cilium
pods: 100.73.0.0/16
nodes: 10.250.0.0/16
services: 100.88.0.0/13
provider:
type: openstack
controlPlaneConfig:
apiVersion: openstack.provider.extensions.gardener.cloud/v1alpha1
kind: ControlPlaneConfig
loadBalancerProvider: amphora
infrastructureConfig:
apiVersion: openstack.provider.extensions.gardener.cloud/v1alpha1
floatingPoolName: external
kind: InfrastructureConfig
networks:
workers: 10.250.0.0/16
workers:
- cri:
name: containerd
name: worker-small
machine:
type: 2C-4GB-40GB
image:
name: gardenlinux
version: 576.1.0
maximum: 2
minimum: 1
maxSurge: 1
maxUnavailable: 0
volume:
size: 50Gi
purpose: development
region: betacloud-1
secretBindingName: betacloud-secret
Keep in mind, that some things need to be changed accordingly. Here are at least a few explanations of the bare minimum possible.