Skip to main content
Version: v3.8.0
Not interested in using Kubernetes?

There are two flavours of Control Plane deployments - Remote and Kubernetes. This guide will focus on deploying a Control Plane on a Kubernetes cluster. Go to Remote - Deploy Control Plane to deploy the Control Plane on a Linux host instead. Keep in mind that in such case, it will be necessary to prepare the host for Controller as well.

Kubernetes - Deploy Control Plane Using potctl

Every Edge Compute Network ('ECN') starts with a Control Plane that allows us to manage our ECN's resources.

In this guide, our Control Plane will deploy a single Controller instance through the PoT Operator.

We use YAML to define PoT resources

The following procedures will define resources in YAML for potctl to consume. Specification of those YAML resources can be found here.

Deploy a Control Plane on Kubernetes

Authentication

Set auth.mode: embedded in your Control Plane YAML. See Embedded OIDC Authentication for bootstrap credentials and TLS requirements.

NATs Replica

When NATs is enabled, the minimum replica should be 2 in order to initialize NATs JetStream Cluster.

Setup your db for production environment

potctl supports both mysql and postgres as external databases. You must provide external db configuration if you want to deploy Controller with replica > 1.

We recommend going through the Database Installation Guide before continuing on here.

Create controlplane.yaml:

controlplane.yaml
---
apiVersion: datasance.com/v3
kind: KubernetesControlPlane
metadata:
name: albatros-1
spec:
iofogUser:
name: Foo
surname: Bar
password: iht234g9afhe
config: ~/.kube/config
replicas:
controller: 1
nats: 2
auth:
mode: embedded
bootstrap:
username: admin
password: LocalTest12!
controller:
publicUrl: https://controller.example.com:51121
consoleUrl: https://console.example.com:8008
nats:
enabled: true
jetStream:
storageSize: "10Gi"
memoryStoreSize: "1Gi"
images:
operator: ghcr.io/datasance/operator:3.8.0
controller: ghcr.io/datasance/controller:v3.8.0
router: ghcr.io/datasance/router:3.8.0
nats: ghcr.io/datasance/nats:2.14.3
services:
controller:
type: LoadBalancer
router:
type: LoadBalancer
nats:
type: LoadBalancer
natsServer:
type: LoadBalancer

Set config to your kubeconfig path. potctl deploys to the namespace from the -n flag or your configured default. Use a dedicated namespace instead of default in production.

Deploy:

potctl deploy -f controlplane.yaml

Check cluster state with kubectl:

kubectl get all

Verify the Deployment

potctl get controllers
potctl describe controller alpaca-1
potctl describe controlplane

For optional database, ingress, vault, and service overrides, see the Control Plane YAML reference.

Where to go from here?

With the Control Plane running, go to Setup Edgelet nodes to provision Edgelet v1.0.0 on your edge hosts.

Group 3See anything wrong with the document? Help us improve it!