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