The Oxide Omni infrastructure provider is used to provision Talos Linux instances on Oxide and connect those instances to Omni where they will be configured as nodes in a Kubernetes cluster.
Please note the following before using the Oxide Omni infrastructure provider.
-
The infrastructure provider is a dynamic provider, meaning it provisions and deprovisions Oxide instances on demand as Omni users create and scale Kubernetes clusters.
-
The infrastructure provider is designed to manage resources within a single Oxide silo. To support multiple Oxide silos, run a separate instance of the infrastructure provider using a different provider ID. The infrastructure provider uses machine classes to specify the Oxide project instances are provisioned within.
With the above noted, let’s run the Oxide Omni infrastructure provider.
-
Create the infrastructure provider in Omni.
omnictl --omniconfig omniconfig.yaml infraprovider create oxide
-
Export the
OMNI_ENDPOINTandOMNI_SERVICE_ACCOUNT_KEYenvironment variables.export OMNI_ENDPOINT=https://example.na-west-1.omni.siderolabs.io:443 export OMNI_SERVICE_ACCOUNT_KEY=ZXhhbXBsZQ==
-
Export the
OXIDE_HOSTandOXIDE_TOKENenvironment variables.export OXIDE_HOST='https://oxide.sys.example.com' export OXIDE_TOKEN='oxide-token-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
-
Run the infrastructure provider. Update
${TAG}to use the latest stable Oxide infrastructure provider, without thevprefix, which can be found on GitHub releases.docker run --rm \ --env OMNI_ENDPOINT \ --env OMNI_SERVICE_ACCOUNT_KEY \ --env OXIDE_HOST \ --env OXIDE_TOKEN \ ghcr.io/oxidecomputer/omni-infra-provider-oxide:${TAG}
The Makefile is the primary method of interfacing with this project. Refer to
its targets for more information. The build artifact is a container image to be
run wherever it’ll have access to the Oxide silo it’s configured to connect to.
-
Export the necessary environment variables.
export OMNI_ENDPOINT=https://example.na-west-1.omni.siderolabs.io:443 export OMNI_SERVICE_ACCOUNT_KEY=ZXhhbXBsZQ== export OXIDE_HOST='https://oxide.sys.example.com' export OXIDE_TOKEN='oxide-token-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
-
Run the infrastructure provider.
make dev
The release process is manual and runs from a developer’s workstation for now.
-
Check out the revision to be released. Ensure the working copy is clean.
-
Build the container image.
RELEASE=true make build
-
Push the container image.
RELEASE=true make push
-
Create a GitHub release.
-
Create and push a Git tag with the v-prefixed
VERSION(e.g., v0.1.0). -
Create the GitHub release for the newly pushed tag. Automatically generate the release notes.
-
-
Open a pull request with the following changes.
-
Update the
VERSIONwithin theMakefileto the next version.
-