Providers Profiles#
Setting Up Cloud Providers#
A provider is identified by its platform name and region and primary zone. To integrate a provider, you need to create a ProviderProfile resource in the SkyCluster system. The following examples show how to configure the a ProfileProvider
for the major cloud providers: AWS, GCP, and Azure.
apiVersion: core.skycluster.io/v1alpha1
kind: ProviderProfile
metadata:
name: aws-us-east-1
spec:
platform: aws # Platform can be aws, azure, gcp
region: us-east-1 # Region identifier
regionAlias: us-east
continent: north-america
enabled: true
zones:
- name: us-east-1a # Zone identifier
locationName: us-east-1a
defaultZone: true # Only one zone can be default
enabled: true
type: cloud # Optional
- name: us-east-1b # Zone identifier
locationName: us-east-1b
defaultZone: false
enabled: true
type: cloud # Optional
apiVersion: core.skycluster.io/v1alpha1
kind: ProviderProfile
metadata:
name: gcp-us-east1
spec:
platform: gcp # Platform can be aws, azure, gcp
region: us-east1 # Region identifier
regionAlias: us-east
continent: north-america
enabled: true
zones:
- name: us-east1-b # Zone identifier
locationName: us-east1-b
defaultZone: true # Only one zone can be default
enabled: true
type: cloud # Optional
- name: us-east1-c # Zone identifier
locationName: us-east1-c
defaultZone: false
enabled: true
type: cloud # Optional
apiVersion: core.skycluster.io/v1alpha1
kind: ProviderProfile
metadata:
name: azure-eastus
spec:
platform: azure # Platform can be aws, azure, gcp
region: eastus # Region identifier
regionAlias: eastus
continent: north-america
enabled: true
zones:
- name: "1" # Zone identifier
locationName: eastus-1
defaultZone: true # Only one zone can be default
enabled: true
type: cloud # Optional
- name: "2" # Zone identifier
locationName: eastus-2
defaultZone: false
enabled: true
type: cloud # Optional
SkyCluster automatically detects available images and instance types for major cloud providers such as AWS
, Azure
, and GCP
. For OpenStack
and baremetal
, these services must be configured manually
After creating a ProfileProvider
resource, the SkyCluster operator generates a ConfigMap in the skycluster-system
namespace containing the available images and instance types for that provider. Verify that the provider profile is ready by checking its status:
kubectl get providerprofile
# NAME REGION READY
# aws-us-east-1 us-east-1 Ready
Setting Up On-premises Providers#
OpenStack#
Similar to cloud provider, a edge or private provider is identified by its platform name and region
and primary zone. In addition to ProfileProvider
resource, you also need to create dependency
resources to for the provider. The following example shows how to configure the OpenStack
provider for the on-premises savi
edge cluster with scinet
region with primary zone default
.
Provider Profiles#
apiVersion: core.skycluster.io/v1alpha1
kind: ProviderProfile
metadata:
name: savi-scinet-default
spec:
platform: openstack
region: scinet
regionAlias: scinet # Optional
continent: north-america # Optional
enabled: true
zones:
- name: default
locationName: default # Optional
defaultZone: true
enabled: true
type: edge
Note
ProviderProfile
status becomes Ready
when the dependency resources are created for the provider. Check out
the status of the ProviderProfile
resource by running the following command. You should see the Ready
status set to False
when you create the object for the first time. It will change to True
once the
dependency objects are created.
kubectl get providerprofile
# NAME REGION READY
# savi-scinet-default scinet False
The operator creates a config map for each provider profile that constains offerings by the provider. You can verify the config map by running the following command:
kubectl get configmap -n skycluster-system \
-l skycluster.io/provider-profile=savi-scinet-default
Dependency Resources#
The following dependency resources are needed to
ensure ProviderProfile
becomes ready and can be used:
Images#
You need to configure the available images manually for on-premises providers.
The following example shows how to configure images including ubuntu-20.04
, ubuntu-22.04
and ubuntu-24.04
for the savi-scinet-default
provider profile for the scinet
region.
apiVersion: core.skycluster.io/v1alpha1
kind: Image
metadata:
name: savi-scinet-default-images
spec:
providerRef: savi-scinet-default
# Must match the provider profile name in the Provider resource
images:
- zone: default
nameLabel: ubuntu-20.04
name: ubuntu-20.04 # Local identifier corresponding to the image
- zone: default
nameLabel: ubuntu-22.04
name: ubuntu-22.04 # Local identifier corresponding to the image
- zone: default
nameLabel: ubuntu-24.04
name: ubuntu-24.04 # Local identifier corresponding to the image
Check the status of Image
resource by running the following command:
kubectl get images.core.skycluster.io
# NAME REGION READY
# savi-scinet-default-images scinet True
Instance Type#
To configure the instance types, you need to create an InstanceType
resource. The following example shows how to introduce available instance types.
apiVersion: core.skycluster.io/v1alpha1
kind: InstanceType
metadata:
name: savi-scinet-default-instance-types
spec:
providerRef: savi-scinet-default
# Must match the provider name in the Provider resource
offerings:
- zone: default
zoneOfferings:
- name: m1.small
nameLabel: 1vCPU-2GB
price: "0.0015"
ram: 2GB
vcpus: 1
- name: n1.small
nameLabel: 1vCPU-4GB
vcpus: 1
ram: 4GB
price: "0.02"
Check the status of the InstanceType
resource by running the following command:
kubectl get instancetype.core.skycluster.io
# NAME REGION READY
# savi-scinet-default-instance-types scinet True
Once all dependency resources are created and ready, the ProviderProfile
status changes to Ready
. At this point, you can use the provider profile to create resources in your cluster. To verify its status, run:
kubectl get providerprofile
# NAME REGION READY
# savi-scinet-default scinet True
On-premises Custom Providers#
On-premises providers can be registered similarly to cloud providers. The key difference is that you must supply additional configuration specific to your on-premises environment, such as the gateway node address, required keys, and details about the edge devices.
Provider Profiles#
apiVersion: core.skycluster.io/v1alpha1
kind: ProviderProfile
metadata:
name: savi-toronto-default
spec:
platform: baremetal
region: toronto
regionAlias: toronto # Optional
continent: north-america # Optional
enabled: true
zones:
- name: default
locationName: BahenBuilding # Optional
defaultZone: true
enabled: true
type: edge
The baremetal
type requires specifying gateway connection and access details, along with worker node data and their capabilities.
Device Nodes#
The DeviceNode
API represents an edge device that can run workloads. A DeviceNode resource can be defined as either a gateway or a worker node by setting its type
field.
apiVersion: core.skycluster.io/v1alpha1
kind: DeviceNode
metadata:
name: savi-toronto-gw
spec:
providerRef: savi-toronto-default
deviceSpec:
type: gateway
zone: default
cores: 4
ram: 2GB
storage: 100GB
gpu:
- enabled: True
manufacturer: NVIDIA
model: JetsonNano
memory: 8GB
apiVersion: core.skycluster.io/v1alpha1
kind: DeviceNode
metadata:
name: savi-toronto-worker1
spec:
providerRef: savi-toronto-default
deviceSpec:
type: worker
zone: default
cpus: 4
ram: 2GB
storage: 100GB
gpu:
- enabled: True
manufacturer: NVIDIA
model: JetsonNano
memory: 8GB