Skip to main content

Bring Your Own Operating System (BYOOS)

The Bring Your Own Operating System (BYOOS) enables you to use a custom Operating System (OS) with Palette. Palette comes with several operating systems out-of-the-box, but the existing OS list may not meet all users' needs.

Using your custom OS provides several benefits, including the ability to control your own dependencies, improve performance, and ensure compatibility with your existing applications. With BYOOS, you can choose the OS that best fits your needs, whether it's a commercial or open-source distribution, and integrate it with your Kubernetes clusters. The BYOOS pack can be used with both Edge and non-Edge environments.

Versions Supported

Prerequisites

  • The Edge Provider images you have created and uploaded to a container registry. Refer to the Build Edge Artifacts guide for steps on how to create the Edge artifacts and how to upload your custom OS to a registry.

  • Palette 3.3.0 or greater.

Parameters

The BYOS Edge OS pack supports the following parameters.

Parameters

ParameterDescriptionType
pack:content:Specifies the content of the BYOS Edge OS pack.map
pack.content.imagesSpecifies a list of OS images to use with the pack.list
pack.content.images.imageAn OS image to use with the pack.string
system.uriSpecifies the location of BYOOS image.string
providerCredentials.registrySpecifies the private registry for the cluster from which to pull images. If you are using a Harbor registry, provide the Harbor domain and the project's name. For example, harbor.spectrocloud.com/default. If you are using a Docker registry, provide the domain of the registry. For example, registry-1.docker.io.string
providerCredentials.usernameSpecifies the username used for authentication with a private registry.string
providerCredentials.passwordSpecifies the password used for authentication with a private registry.string
providerCredentials.certificateSpecifies the X509 certificate used for authentication and encryption with a private registrystring
providerCredentials.encodedPasswordSpecifies whether the password as given is base64 encoded.true means that the provided password is base64 encoded and that when using the password to authenticate, the password must be decoded first. false means the password is not encoded and must be used as is to authenticate with the registry. Default is false.bool
pack:
content:
images:
- image: '{{.spectro.pack.edge-native-byoi.options.system.uri}}'
# - image: example.io/my-other-images/example:v1.0.0
# - image: example.io/my-super-other-images/example:v1.0.0
providerCredentials:
registry: registry-1.docker.io
user: user
password: ******
certificates: |
-----BEGIN CERTIFICATE-----
MIIDVzCCAj+gAwIBAgIRANtGPo/hFkZtYRNw0KaeW54wDQYJKoZIhvcNAQELBQAw
----------------------------------------------------------------
7OicCaV35lje5FSl0owu74ghAlCgMyAdKsJf615g1kKO4V5E2BMErd9Ibw==
-----END CERTIFICATE-----


options:
system.uri: example.io/my-images/example-custom-os:v1.4.5

Usage

BYOOS enables you to use a custom OS for your Edge host. You can use this feature to customize the desired specifications of your OS layer in the Edge host. You can reference the custom OS through the BYOOS pack.

To use a custom OS, you must include all the Edge artifacts and provider images required by the Edge Installer in the custom OS. Refer to the Build Edge Artifacts guide for steps on how to create a custom OS that includes all the required components for the Edge Installer.

Select the BYOOS pack and fill out the required parameters during the cluster profile creation process. The system.uri parameter specifies the location of the BYOOS image. Refer to the Build Edge Artifacts guide to learn how to create Edge Artifacts.

A view of the Kubernetes pack editor with a YAML configuration

Terraform

You can retrieve details about the BYOOS Edge OS agent pack using the following Terraform code.

data "spectrocloud_registry" "public_registry" {
name = "Public Repo"
}

data "spectrocloud_pack_simple" "byoos" {
name = "edge-native-byoi"
version = "1.0.0"
type = "helm"
registry_uid = data.spectrocloud_registry.public_registry.id
}

References