Skip to main content
Version: 0.7.0

Configuration Parameters

Introduction

This topic describes the configuration parameters used in creating a configuration or YAML files.

Configuration Tips

  • Specify the latest API version while defining the configurations.
  • Use only required values to create minimal and simple configurations.
  • Use YAML to create your configuration file, instead of JSON.

Controller Configuration Parameters

The following tables describe the configuration parameters used to install the KubeSlice Controller.

KubeSlice Parameters

This parameter contains the configuration object used in the KubeSlice Controller YAML file.

ParameterParameter TypeDescriptionRequired
controllerObjectThe cluster where the KubeSlice Controller is installed.Mandatory

Controller Parameters

This object contains the different parameters used in the KubeSlice Controller YAML file.

ParameterParameter TypeDescriptionRequired
loglevelStringThe log level of Controller. The default value is INFO. The other values are DEBUG or ERROR.Optional
rbacResourcePrefixStringThe RBAC resource prefix.Optional
projectnsPrefixStringThe project namespace prefix.Optional
endpointAlphaNumericThe URL of the Kubernetes control plane.Mandatory

Project Namespace Configuration Parameters

The following tables list the parameters in the configuration file used to create the project namespace.

ParameterParameter TypeDescriptionRequired
apiVersionStringThe KubeSlice Controller API version. The value must be controller.kubeslice.io/v1alpha1.Mandatory
kindStringThe name of a mandatory particular object schema. The value must be Project.Mandatory
metadataObjectThe metadata describes the parameters (names and types) and attributes that have been applied.Mandatory
specObjectThe specification of the desired state of an object.Mandatory

Project Metadata Parameters

These parameters are required for configuring the metadata in the project YAML file.

ParameterParameter TypeDescriptionRequired
nameStringThe name of the project. Each project should have a unique name.Mandatory
namespaceStringThe namespace on which you apply the project configuration file. The value must be kubeslice-controller.Mandatory

Project Specification Parameters

ParameterParameter TypeDescriptionRequired
serviceAccountObjectTo specify permissions on the Project namespace.Mandatory

Service Account Parameters

A service account provides an identity for running processes in application pods. It contains the list of users configured in the in the project YAML file.

ParameterParameter TypeDescriptionRequired
readOnlyList of StringsThe user to be created with read-only permission.Optional
readWriteList of StringsThe user to be created with read-write permission.Optional

Cluster Registration Configuration Parameters

The following tables describe the configuration parameters used to register the worker cluster with the controller cluster.

ParameterParameter TypeRequiredDescription
apiVersionStringThe KubeSlice Controller API version. The value must be controller.kubeslice.io/v1alpha1.Mandatory
kindStringThe name of a particular object schema. The value must be Cluster.Mandatory
metadataObjectThe meta data parameters (names and types) and attributes that have been applied.Mandatory
specObjectThe specification of the desired state of an object.Mandatory

Cluster Registration Metadata Parameters

The parameters are related to metadata configured in the worker cluster registration YAML file.

ParameterParameter TypeDescriptionRequired
nameStringThe given name of the cluster.Mandatory
namespaceStringThe project namespace on which you apply the project configuration file.Mandatory

Cluster Registration Specification Parameters

The parameters are related to the specification configured in the worker cluster registration YAML file.

ParameterParameter TypeDescriptionRequired
clusterPropertyObjectIt contains the worker cluster details.Mandatory
networkInterfaceStringThe name of the network interface for egress traffic on a gateway node. The QoS profile for a slice will be applied to this interface. Default Interface: eth0Deprecated
nodeIPsString ArrayThe IP addresses used for inter-cluster tunnel creation. (Supports IPv4 and IPv6 IP address). If a node IP is not provided, Kubeslice will auto detect it from the gateway nodes.Optional

Cluster Property Parameters

The parameters are related to the cluster property configured in the worker cluster registration YAML file.

ParameterParameter TypeDescriptionRequired
geoLocationObjectIt contains information on the geological location of the worker cluster.Optional

Geolocation Parameters

ParameterParameter TypeDescriptionRequired
cloudProviderStringThe name of your cloud providerOptional
cloudRegionStringThe cloud provider region where your cluster is located.Optional

Slice Operator Configuration Parameters

The following tables describe the configuration parameters used to install the Slice Operator in the worker cluster.

ParameterParameter TypeDescriptionRequired
operatorObjectThis contains the Slice Operator information.Optional
controllerSecretObjectThis contains the secrets to connect to controller cluster.Optional
clusterObjectThis contains the information about the worker cluster.Optional
netopObjectThis contains the parameters related to network operations such as enforcing the QoS profile configured for a slice.Mandatory

Slice Operator Parameters

These parameters are related to the installation of the Slice Operator and they are configured in the Slice Operator YAML file.

ParameterParameter TypeDescriptionRequired
logLevelStringThe log level can be set to INFO or DEBUG. The default value is set to INFO.Optional

Controller Secret Parameters

These parameters are related to the KubeSlice Controller that are required to install the Slice Operator and they are configured in the Slice Operator YAML file.

ParameterParameter TypeDescriptionRequired
namespaceStringThe namespace that you get from the secret.Mandatory
endpointStringThe controllerEndpoint that you get from the secret.Mandatory
ca.crtStringThe ca.crt that you get from the secret.Mandatory
tokenStringThe token that you get from the secret.Mandatory

Cluster Parameters

These parameters are related to the worker cluster that are configured in the Slice Operator YAML file.

ParameterParameter TypeDescriptionRequired
nameStringThe name of the cluster that is registered with the KubeSlice controller. The cluster name must be unique in the project.Mandatory
nodeIpStringThe Node IP address of the registered worker cluster (Required for Kind cluster only).(deprecated)

Network Operator Parameters

This parameter is related to network operations such as enforcing the QoS profile configured for a slice and is configured in the Slice Operator YAML file.

ParameterParameter TypeDescriptionRequired
networkInterfaceAlphaNumericThe name of the network interface on the gateway nodes that is the egress interface for external traffic. It may be obtained by doing a route lookup on a well-known public IP address like the Google public DNS IP address 8.8.8.8.Mandatory

Slice Configuration Parameters

The following tables describe the configuration parameters used to create the Slice with registered worker cluster.

ParameterParameter TypeDescriptionRequired
apiVersionStringThe KubeSlice Controller API version. A set of resources that are exposed together, along with the version. The value must be controller.kubeslice.io/v1alpha1.Mandatory
kindStringThe name of a particular object schema. The value must be SliceConfig.Mandatory
metadataObjectThe metadata describes parameters (names and types) and attributes that have been applied.Mandatory
specObjectThe specification of the desired state of an object.Mandatory

Slice Metadata Parameters

These parameters are related to the metadata configured in the slice configuration YAML file.

ParameterParameter TypeDescriptionRequired
nameStringThe name of the Slice. The name of the slice you are creating. Each slice must have a unique name within a project namespace.Mandatory
namespaceStringThe project namespace on which you apply the slice configuration file.Mandatory

Slice Spec Parameters

These parameters are related to the spec configured in the slice configuration YAML file.

ParameterParameter TypeDescriptionRequired
sliceSubnetString (IP/16 Subnet) (RFC 1918 addresses)This subnet would be used to assign IP addresses to pods that connect to the slice overlay network. The CIDR range can be re-used for each slice or can be modified as required. Example: 192.168.0.0/16Mandatory
maxClustersIntegerThe maximum number of clusters that are allowed to connect a slice. The value of maxClusters can only be set during the slice creation. The maxClusters value is immutable after the slice creation. The minimum value is 2, and the maximum value is 32. The default value is 16. Example: 5. The maxClusters affect the subnetting across the clusters. For example, If the slice subnet is 10.1.0.0/16 and the maxClusters=16, then each cluster would get a subnet of 10.1.x.0/20, where x=0,16,32.Optional
sliceTypeStringDenotes the type of the slice. The value must be set to Application.Mandatory
sliceGatewayProviderObjectIt is the type of slice gateway created for inter cluster communication.Mandatory
sliceIpamTypeStringIt is the type of the IP address management for the slice subnet. The value must be always set to Local.Mandatory
clustersList of StringsThe names of the worker clusters that would be part of the slice. You can provide the list of worker clusters.Mandatory
qosProfileDetailsObjectQoS profile for the slice inter cluster traffic. Note that qosProfileDetails and standardQosProfileName are mutually exclusive parameters.Mandatory
standardQosProfileNameStringThis name of the external QoS profile that you can apply for multiple slices. Note that qosProfileDetails and standardQosProfileName are mutually exclusive parameters.Mandatory
namespaceIsolationProfileObjectIt is the configuration to onboard namespaces and/or isolate namespaces with the network policy.Mandatory
externalGatewayConfigObjectIt is the slice ingress/egress gateway configuration. It is an optional configuration.Optional

Slice Gateway Provider Parameters

These parameters are related to the slice gateway created for the inter-cluster communication and they are configured in the slice configuration YAML file.

ParameterParameter TypeDescriptionRequired
sliceGatewayTypeStringThe slice gateway type for inter cluster communication. The value must be OpenVPN.Mandatory
sliceCaTypeStringThe slice gateway certificate authority type that provides certificates to secure inter-cluster traffic. The value must be always set to Local.Mandatory

QOS Profile Parameters

These parameters are related to the QoS profile for the slice inter-cluster traffic configured in the slice configuration YAML file.

ParameterParameter TypeDescriptionRequired
queueTypeStringIt is the slice traffic control queue type. The value must be Hierarchical Token Bucket (HTB). HTB facilitates guaranteed bandwidth for the slice traffic.Mandatory
priorityIntegerQoS profiles allows traffic management within a slice as well as prioritization across slices. The value range is 0-3. 0 represents the highest priority and 3 represents the lowest priority.Mandatory
tcTypeStringIt is the traffic control type. The value must be BANDWIDTH_CONTROL.Mandatory
bandwidthCeilingKbpsIntegerThe maximum bandwidth in Kbps that is allowed for the slice traffic.Mandatory
bandwidthGuaranteedKbpsIntegerThe guaranteed bandwidth in Kbps for the slice traffic.Mandatory
dscpClassAlphanumericDSCP marking code for the slice inter-cluster traffic.Mandatory

Namespace Isolation Profile Parameters

These parameters are related to onboarding namespaces, isolating the slice, and allowing external namespaces to communicate with the slice. They are configured in the slice configuration YAML file.

ParameterParameter TypeDescriptionRequired
applicationNamespacesArray objectDefines the namespaces that will be onboarded to the slice and their corresponding worker clusters.Mandatory
allowedNamespacesArray objectContains the list of namespaces from which the traffic flow is allowed to the slice. By default, native kubernetes namespaces such as kube-system are allowed. If isolationEnabled is set to true, then you must include namespaces that you want to allow traffic from.Optional
isolationEnabledBooleanDefines if the namespace isolation is enabled. By default, it is set to false. The isolation policy only applies to the traffic from the application and allowed namespaces to the same slice.Optional

Application Namespaces Parameters

These parameters are related to onboarding namespaces onto a slice, which are configured in the slice configuration YAML file.

ParameterParameter TypeDescriptionRequired
namespaceStringThe namespace that you want to onboard to the slice. These namespaces can be isolated using the namespace isolation feature.Mandatory
clustersList of StringsCorresponding cluster names for the namespaces listed above. To onboard the namespace on all clusters, specify the asterisk * as this parameter's value.Mandatory

Allowed Namespaces Parameters

These parameters are related to allowing external namespaces to communicated with the slice, which are configured in the slice configuration YAML file.

ParameterParameter TypeDescriptionRequired
namespaceStringsList of external namespaces that are not a part of the slice from which traffic is allowed into the slice.Optional
clustersList of StringsCorresponding cluster names for the namespaces listed above. To onboard the namespace on all clusters, specify the asterisk * as this parameter's value.Optional

External Gateway Configuration Parameters

These parameters are related to external gateways, which are configured in the slice configuration YAML file.

ParameterParameter TypeDescriptionRequired
ingressBooleanTo use the ingress gateway for E-W traffic on your slice, set the value to true.Optional
egressBooleanTo use the egress gateway for E-W traffic on your slice, set the value to true.Optional
gatewayTypeStringThe type of ingress/egress gateways that need to be provisioned for the slice. It can either be none or istio.If set to istio, - The ingress gateway is created for a slice when ingress is enabled. - The egress gateway is created for a slice when egress is enabled. If set to istio, and ingress and egress are set to false then Istio gateways are not created.Mandatory
clustersList of StringsNames of the clusters to which the externalGateway configuration should be applied.Optional

Standard QOS Profile Parameters

These parameters are related to the QoS profile for the slice inter-cluster traffic configured in the standard QoS profile configuration YAML file.

ParameterParameter TypeDescriptionRequired
apiVersionStringThe KubeSlice Controller API version. A set of resources that are exposed together, along with the version. The value must be networking.kubeslice.io/v1beta1.Mandatory
kindStringThe name of a particular object schema. The value must be SliceQoSConfig.Mandatory
metadataObjectThe metadata describes parameters (names and types) and attributes that have been applied.Mandatory
specObjectThe specification of the desired state of an object.Mandatory

Standard QoS Profile Metadata Parameters

ParameterParameter TypeDescriptionRequired
nameStringIt is the name of the QoS profile.Mandatory

Standard QoS Profile Specification Parameters

ParameterParameter TypeDescriptionRequired
queueTypeStringIt is the slice traffic control queue type. The value must be Hierarchical Token Bucket (HTB). HTB facilitates guaranteed bandwidth for the slice traffic.Mandatory
priorityIntegerQoS profiles allows traffic management within a slice as well as prioritization across slices. The value range is 0-3. 0 represents the highest priority and 3 represents the lowest priority.Mandatory
tcTypeStringIt is the traffic control type. The value must be BANDWIDTH_CONTROL.Mandatory
bandwidthCeilingKbpsIntegerThe maximum bandwidth in Kbps that is allowed for the slice traffic.Mandatory
bandwidthGuaranteedKbpsIntegerThe guaranteed bandwidth in Kbps for the slice traffic.Mandatory
dscpClassAlphanumericDSCP marking code for the slice inter-cluster traffic.Mandatory

Service Export Configuration Parameters

The following tables describe the configuration parameters used to create Service Export.

ParameterParameter TypeDescriptionRequired
apiVersionStringThe KubeSlice Controller API version. A set of resources that are exposed together, along with the version. The value must be networking.kubeslice.io/v1beta1.Mandatory
kindStringThe name of a particular object schema. The value must be ServiceExport.Mandatory
metadataObjectThe metadata describes parameters (names and types) and attributes that have been applied.Mandatory
specObjectThe specification of the desired state of an object.Mandatory

ServiceExport Metadata Parameters

These parameters are related to metadata for exporting a service, which are configured in the ServiceExport YAML file.

ParameterParameter TypeDescriptionRequired
nameStringThe name of the service export.Mandatory
namespaceStringThe application namespace.Mandatory

ServiceExport Specification Parameters

These parameters are related to the exporting service specification configured in the ServiceExport YAML file.

ParameterParameter TypeDescriptionRequired
sliceStringThe name of the slice on which the service should be exported.Mandatory
aliasesString ArrayOne or more aliases can be provided for the service being exported from a worker cluster. This parameter is required when the exported services have arbitrary names instead of the slice.local name.Optional
selectorObjectThe labels used to select the endpoints.Mandatory
portObjectThe details of the port for the service.Mandatory

Service Selector Parameters

These parameters are related to the labels for selecting the endpoints in a service export, which are configured in the ServiceExport YAML file.

ParameterParameter TypeDescriptionRequired
matchLabelsMapThe labels used to select the endpoints.Mandatory

Service Ports Parameters

These parameters contains the details of the port for the export service, which are configured in the ServiceExport YAML file.

ParameterParameter TypeDescriptionRequired
nameStringIt is a unique identifier for the port. It must be prefixed with http for HTTP services or tcp for TCP services.Mandatory
containerPortIntegerThe port number for the service.Mandatory
ProtocolStringThe protocol type for the service. For example: TCP.Mandatory