Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: updated the readme for ARM changes #26

Open
wants to merge 8 commits into
base: arm64
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .arg.template
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,4 @@ IMAGE_REPO=$OS_DISTRIBUTION
OS_VERSION=22
K8S_DISTRIBUTION=k3s
ISO_NAME=palette-edge-installer
PE_VERSION=v3.4.3
platform=linux/amd64
PE_VERSION=v3.4.3
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ variables.env.old
config.yaml
content-*/*
.arg
.DS_Store
55 changes: 33 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
# CanvOS

CanvOS is designed to leverage the Spectro Cloud Edge Forge architecture to build edge artifacts. These artifacts can then be used by Palette for building edge clusters with little to no touch by end users.
CanvOS is designed to leverage the Spectro Cloud Edge Forge architecture to build Edge artifacts. Edge artifacts are used by Palette when creating Edge clusters with little to no touch by end users.

With CanvOS, we leverage Earthly to build all of the artifacts required for edge deployments. From the installer iso to the Kubernetes Provider images, CanvOS makes it simple for you to build the images customized to your needs.
CanvOS, uses [Earthly](https://earthly.dev) to build all of the required artifacts for an Edge deployments. The Edge artifacts include the installer ISO to the Kubernetes Provider images.
CanvOS enables you to customize images to fit your needs.

The base image definitions reside in the Earthfile located in this repo. This defines all of the elements that are required for building the artifacts that can be used by Palette for edge deployments. If customized packages need to be added, simply add the reference to the Dockerfile as you would for any Docker image. When the build command is run, the Earthfile will merge those custom packages into the final image. For a quickstart tutorial see the Knowledgebase section of the Spectro Cloud Docs. There you will find a quickstart tutorial for building your first CanvOS artifacts.
To learn more about building Edge artifacts, checkout the [Build Edge Artifacts](https://docs.spectrocloud.com/clusters/edge/edgeforge-workflow/palette-canvos) guide.



## Image Build Architecture


The base image definitions reside in the Earthfile located in this repo. The [Earthfile](./Earthfile) defines all of the elements that are required for building the artifacts that can be used by Palette for Edge deployments.

If customized packages need to be added, add the pagekage to the [Dockerfile](./Dockerfile) as you would for any Docker image. When the build command is invoked, the Earthfile will merge the custom packages into the final image.

> Checkout the [Build Edge Artifacts](https://docs.spectrocloud.com/clusters/edge/edgeforge-workflow/palette-canvos) guide for detailed instructions.

<h1 align="center">
<br>
<img alt="Edge Components" src="https://raw.githubusercontent.com/spectrocloud/CanvOS/main/images/edge_components.png">
<img alt="Edge Components" src="./images/edge_components.png">
<br>
<br>

## Image Build Architecture

### Base Image

From the Kairos project, this is derived from the operating system distribution chosen (currently Ubuntu and OpenSuse-Leap supported). It is pulled down as the base image and some adjustments are made to better support Palette. Those adjustments are used to clean and update the image as well as install some required packages.
Expand Down Expand Up @@ -94,20 +104,18 @@ cp .arg.template .arg

6. Modify the `.arg` file as needed. Primarily, you must define the tag you want to use for your images. For example, if the operating system is `ubuntu` and the tag is `demo`, the image artefact will name as `ttl.sh/ubuntu:k3s-1.25.2-v3.4.3-demo`. The **.arg** file defines the following variables:

| Parameter | Description | Type | Default Value |
|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------|--------------------------|
| CUSTOM_TAG | Environment name for provider image tagging. The default value is `demo`. | String | `demo` |
| IMAGE_REGISTRY | Image registry name that will store the image artifacts. The default value points to the *ttl.sh* image registry, an anonymous and ephemeral Docker image registry where images live for a maximum of 24 hours by default. If you wish to make the images exist longer than 24 hours, you can use any other image registry to suit your needs. Do not add a '/' character at the end if image registry name. | String | `ttl.sh` |
| OS_DISTRIBUTION | OS distribution of your choice. For example, it can be `ubuntu` or `opensuse-leap` or `ubuntu-fips' | String | `ubuntu` |
| IMAGE_REPO | Image repository name in your chosen registry. | String | `$OS_DISTRIBUTION` |
| OS_VERSION | OS version. For Ubuntu, the possible values are `20`, and `22`. Whereas for openSUSE Leap, the possible value is `15.4`. This example uses `22` for Ubuntu. | String | `22` |
| K8S_DISTRIBUTION | Kubernetes distribution name. It can be one of these: `k3s`, `rke2`, or `kubeadm` or `kubeadm-fips` | String | `k3s` |
| ISO_NAME | Name of the Edge installer ISO image. In this example, the name is *palette-edge-installer*. | String | `palette-edge-installer` |
| PE_VERSION | Palette Edge Version. This should match the tag checked out from Git. Advanced setting. Do not modify unless told to do so. | String | `GH tag` |
| BASE_IMAGE | Base image to be used for building installer and provider images. | String | |
| ARCH | target architecture `amd64`, `arm64` | String | `amd64` |
| platform | Type of platform to use for the build. Used for Cross Platform Build (linux/arm64 to amd64 as example). | string | `linux/amd64` |
| FIPS_ENABLED | to generate FIPS compliant binaries. `true` or `false` | string | `false` |
| Parameter | Description | Type | Default Value |
|------------------|-----------------------------------------------------------------------------------------------------------------------------------------|--------|------------------------|
| CUSTOM_TAG | Environment name for provider image tagging. The default value is `demo`. | String | `demo` |
| IMAGE_REGISTRY | Image registry name that will store the image artifacts. The default value points to the *ttl.sh* image registry, an anonymous and ephemeral Docker image registry where images live for a maximum of 24 hours by default. If you wish to make the images exist longer than 24 hours, you can use any other image registry to suit your needs. | String | `ttl.sh` |
| OS_DISTRIBUTION | OS distribution of your choice. For example, it can be `ubuntu` or `opensuse-leap`. | String | `ubuntu` |
| IMAGE_REPO | Image repository name in your chosen registry. | String | `$OS_DISTRIBUTION` |
| OS_VERSION | OS version. For Ubuntu, the possible values are `20`, and `22`. Whereas for openSUSE Leap, the possible value is `15.4`. This example uses `22` for Ubuntu. | String | `22` |
| K8S_DISTRIBUTION | Kubernetes distribution name. It can be one of these: `k3s`, `rke2`, `kubeadm`, or `kubeadm-fips`. The value `kubeadm` refers to Palette eXtended Kubernetes - Edge (PXK-E). Check out the [PXK-E reference](https://docs.spectrocloud.com/integrations/kubernetes-edge) resource to learn more. | String | `k3s` |
| ISO_NAME | Name of the Edge installer ISO image. In this example, the name is *palette-edge-installer*. | String | `palette-edge-installer`|
| FIPS_ENABLED | Enable to generate FIPS compliant Edge artifacts. | String | `false` |
| ARCH | The type of platform architecture to use for the Edge artifacts build. Allowed values are: `adm64`, or `arm64`. | String | `amd64` |


7. Build the images with the following command. Use the `system.uri` output when creating the cluster profile for the Edge host.

Expand Down Expand Up @@ -180,7 +188,10 @@ docker push ttl.sh/ubuntu-demo:k3s-1.24.6-v3.4.3-demo

13. Build a cluster in [Palette](https://console.spectrocloud.com).

### How-Tos
### Learning Resources


* [Building Edge Native Artifacts](https://docs.spectrocloud.com/clusters/edge/edgeforge-workflow/palette-canvos) - A how-to guide for using CanvOS.

* [Building Edge Native Artifacts]([https://docs.spectrocloud.com/clusters/edge/edgeforge-workflow/palette-canvos](https://deploy-preview-1318--docs-spectrocloud.netlify.app/clusters/edge/edgeforge-workflow/palette-canvos))
* [Deploy Edge Cluster](https://docs.spectrocloud.com/clusters/edge/site-deployment/deploy-cluster) - An end-to-end tutorial for learning how to deploy an Edge cluster in VMware that simulates a bare metal environmet.