generated from AMRC-FactoryPlus/acs-template
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Alex Godbehere <alex.godbehere@gmail.com>
- Loading branch information
1 parent
716030d
commit cb5023d
Showing
30 changed files
with
26,148 additions
and
838 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
position: 4 | ||
label: Central Components | ||
collapsible: true | ||
collapsed: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
--- | ||
sidebar_position: 9 | ||
--- | ||
|
||
import useBaseUrl from "@docusaurus/useBaseUrl"; | ||
import { CentralCluster } from "../../../src/components/Clusters"; | ||
import OpenAPISpecRenderer from "../../../src/components/OpenAPISpecRenderer"; | ||
import { OpenSourceExample } from "../../../src/components/OpenSourceExample"; | ||
|
||
# Cluster Manager | ||
|
||
The Cluster Manager commissions new clusters, and allows central | ||
services to encrypt secret information for transfer to the edge | ||
clusters. | ||
|
||
<OpenSourceExample buttonText={'ACS Cluster Manager Component'} | ||
repoUrl={'https://github.com/AMRC-FactoryPlus/acs-cluster-manager'}></OpenSourceExample> | ||
|
||
## Overview | ||
|
||
<CentralCluster hilite="cluster-manager"/> | ||
|
||
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 | ||
|
||
<OpenAPISpecRenderer url={useBaseUrl('/spec/cluster-manager.yaml')} | ||
text={'the Cluster Manager component'}/> | ||
|
||
## 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 | ||
|
||
<WellKnownUUID type='Service Function' name='Cluster Manager' | ||
uuid='2706aa43-a826-441e-9cec-cd3d4ce623c2' | ||
description='The Service UUID used for locating the Cluster Manager endpoints'/> | ||
|
||
<WellKnownUUID type="Class" name="Edge cluster" | ||
uuid="f24d354d-abc1-4e32-98e1-0667b3e40b61" | ||
description="Config Store Class used for edge cluster UUIDs"/> | ||
|
||
<WellKnownUUID type="Application" name="Edge cluster configuration" | ||
uuid="bdb13634-0b3d-4e38-a065-9d88c12ee78d" | ||
description="Requested configuration for an edge cluster"/> | ||
|
||
<WellKnownUUID type="Application" name="Edge cluster setup status" | ||
uuid="747a62c9-1b66-4a2e-8dd9-0b70a91b6b75" | ||
description="Private status entry used by the Cluster Manager"/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.