SkyCluster Configuration#
SkyCluster Secret#
You need to create a secret containing a public key and a private key for the skycluster
to authenticate itself with its components.
The secret should be created in the skycluster
namespace.
First export your public and private keys (adjust the paths to your keys):
export PUBLIC_KEY=$(cat ~/.ssh/id_rsa.pub)
export PRIVATE_KEY=$(cat ~/.ssh/id_rsa | base64 -w0)
And then run the following command to generate the secret:
curl -s https://skycluster.io/configs/skysecret-cfg.sh | bash
Alternatively, you can create a secret using a YAML file below:
skysecret-example.yaml
1apiVersion: v1
2kind: Secret
3metadata:
4 namespace: skycluster
5 name: public-private-key
6 labels:
7 skycluster.io/managed-by: skycluster
8 skycluster.io/secret-type: keypair
9type: Opaque
10stringData:
11 config: |
12 {
13 "publicKey": "ssh-rsa AAAAB3NzaC1yc...fKEgCExt6YjE= ubuntu@cluster-dev1",
14 "privateKey": "LS0tLS1CRUdJTiBPUEVOU1..gS0VZLS0tLS0K"
15 }
SkyCluster Post-installation Configuration#
After installing SkyCluster, you need to configure the providers you want to use. This includes setting up OpenStack providers and setting the latencies between registered regions and zones.
SkyCluster OpenStack Provider Configuration#
Note
This step is only required if you are using OpenStack and have enalbed it during the installation of SkyCluster.
For each OpenStack provider, you need to create a YAML file containing the essential mapping information for the provider. Use the YAML template below and provide the appropriate values for each field:
os-provider-setting.yaml
1providerMappings:
2 openstack:
3 regions:
4 - name: # Name of the region
5 region: # Name of the region
6 regionAlias: # Alias of the region
7 subnetCidr: x.y.z.0/24
8 gatewayIp: x.y.z.1
9 zones:
10 # There should be at least one zone specified as default
11 # for each region
12 - name: default
13 locationName:
14 # the default zone is identified by setting
15 # the defaultZone to true
16 defaultZone: true
17 type: cloud # Type of the zone (cloud, nte, edge)
18 # flavors specifies the mapping between the flavor names
19 # and the actual machine types in the OpenStack provider
20 # within this <zone>.
21 flavors:
22 small: n1.small
23 medium: o1.medium
24 large: p1.medium
25 xlarge: p3.large
26 x.8G: n1.medium
27 x.16G: o1.medium
28 x.32G: p1.medium
29 # iamges specifies the mapping between the image names
30 # and the actual image names in the OpenStack provider
31 # within this <region>. We assume images are available
32 # in all zones within the region.
33 images:
34 ubuntu-22.04: Ubuntu-22-04-Jammy
35 ubuntu-20.04: Ubuntu-20-04-focal
36 ubuntu-18.04: Ubuntu-18-04-bionic
We use the following settings for the SAVI testbed.
os-provider-setting.yaml
1providerMappings:
2 openstack:
3 regions:
4 - name: SCINET
5 region: SCINET
6 regionAlias: SCINET
7 subnetCidr: 10.30.10.0/24
8 gatewayIp: 10.30.10.1
9 zones:
10 - name: default
11 locationName: Toronto
12 defaultZone: true
13 type: cloud
14 flavors:
15 small: n1.small
16 medium: o1.medium
17 large: p1.medium
18 xlarge: p3.large
19 x.8G: n1.medium
20 x.16G: o1.medium
21 x.32G: p1.medium
22 images:
23 ubuntu-22.04: Ubuntu-22-04-Jammy
24 ubuntu-20.04: Ubuntu-20-04-focal
25 ubuntu-18.04: Ubuntu-18-04-bionic
26 - name: VAUGHAN
27 region: VAUGHAN
28 regionAlias: VAUGHAN
29 subnetCidr: 10.29.10.0/24
30 gatewayIp: 10.29.10.1
31 zones:
32 - name: default
33 locationName: Toronto
34 defaultZone: true
35 type: cloud
36 flavors:
37 small: n1.small
38 medium: o1.medium
39 large: p1.medium
40 xlarge: p1.medium
41 x.8G: n1.medium
42 x.16G: o1.medium
43 x.32G: p1.medium
44 images:
45 ubuntu-22.04: Ubuntu-22-04-Jammy
46 ubuntu-20.04: Ubuntu-20-04-focal
47 ubuntu-18.04: Ubuntu-18-04-bionic
After creating the YAML file above, run the following command to configure the OpenStack provider:
helm install skycluster skycluster/skycluster \
--set postInstall=true -f os-provider-setting.yaml
Latency Configuration#
Currently, SkyCluster automatically configures the latencies between regions and zones. The calculated latencies depends on the type and location of the provider. Table below summarizes how the latencies is calculated between different regions and zones based on our experiments and measurements from AWS. We will introduce automatic latency measurement in future releases.
Latency Calculations
Same Continents:
Source |
Destination |
Latency |
---|---|---|
Cloud |
Cloud |
100ms |
Cloud |
NTE |
25ms |
NTE |
Edge |
15ms |
Edge |
Edge |
6ms |
NTE |
NTE |
10ms |
NTE |
Edge |
8ms |
Different Continents, traffic between different continents is routed through the Cloud region.
Source |
Destination |
Latency |
---|---|---|
Cloud |
Cloud |
200ms |
Crossplane Configuration#
SkyCluster utilizes Crossplane to manage the cloud resources. We create a series of composition and XRDs and use them to build our abstraction system on top of them. To install all required compositions and XRDs, run the following command:
curl -s http://skycluster.io:8000/crossplane/lists.txt | \
while read url; do \
curl -s "$url" | kubectl apply -f - ; done