Skip to main content

Cluster Manager

The Cluster Manager commissions new clusters, and allows central services to encrypt secret information for transfer to the edge clusters.

Open Source Example

ACS Cluster Manager Component

See how the AMRC have implemented this component in the AMRC Connectivity Stack
View on Github

Overview

The Cluster Manager mainly operates autonomously, acting on requests in the form of Config Store entries. To create a new cluster, first a UUID must be allocated under the Edge cluster class. Then an Edge cluster configuration Config Store entry must be created for this object, specifying the details for the new cluster.

The Cluster Manager will pick up the new Config Store entry automatically and will commission the new cluster; this consists of creating and populating a Git repo within the local Git server to drive the new cluster. The status of this process is recorded in the corresponding Edge cluster setup status entry; once that entry has the property ready: true the cluster is created and ready to be deployed. At this point the URL of a bootstrap script for the new cluster can be fetched from the Cluster Manager via its HTTP API.

This bootstrap script will attach the new cluster to the Factory+ installation as an edge cluster, create credentials for the cluster, and install the edge cluster infrastructure. Once it has been run the Edge Sync operator will be running on the edge cluster and this will keep the Edge cluster status Config Store entry up to date. One of the items in this entry is a public key which can be used to encrypt secrets such that only the edge cluster can decrypt them.

The Cluster Manager has an API endpoint to make use of this facility. This endpoint will accept secret information, encrypt it, and construct a Kubernetes SealedSecret resource containing the encrypted data. This will then be committed to the cluster's driving Git repo from where Flux running on the edge cluster will retrieve it. The Sealed Secrets operator running on the edge will decrypt the secret information and make it available on the edge cluster as a Kubernetes Secret.

HTTP interface

Loading OpenAPI Specification...
From: /spec/cluster-manager.yaml

Well-Known UUIDs

These well-known UUIDs are part of the core framework and all MUST to be registered with the Configuration Store component under the appropriate classes.

Configuration and discovery

Service Function
Cluster Manager
2706aa43-a826-441e-9cec-cd3d4ce623c2
The Service UUID used for locating the Cluster Manager endpoints
Class
Edge cluster
f24d354d-abc1-4e32-98e1-0667b3e40b61
Config Store Class used for edge cluster UUIDs
Application
Edge cluster configuration
bdb13634-0b3d-4e38-a065-9d88c12ee78d
Requested configuration for an edge cluster
Application
Edge cluster setup status
747a62c9-1b66-4a2e-8dd9-0b70a91b6b75
Private status entry used by the Cluster Manager