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.
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
Set auth.mode: embedded in your Control Plane YAML. See Embedded OIDC Authentication for bootstrap credentials and TLS requirements.
When NATs is enabled, the minimum replica should be 2 in order to initialize NATs JetStream Cluster.
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:
---
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.
With the Control Plane running, go to Setup Edgelet nodes to provision Edgelet v1.0.0 on your edge hosts.