Skip to content

oxidecomputer/omni-infra-provider-oxide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oxide Omni Infrastructure Provider

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.

Usage

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.

  1. Create the infrastructure provider in Omni.

    omnictl --omniconfig omniconfig.yaml infraprovider create oxide
  2. Export the OMNI_ENDPOINT and OMNI_SERVICE_ACCOUNT_KEY environment variables.

    export OMNI_ENDPOINT=https://example.na-west-1.omni.siderolabs.io:443
    export OMNI_SERVICE_ACCOUNT_KEY=ZXhhbXBsZQ==
  3. Export the OXIDE_HOST and OXIDE_TOKEN environment variables.

    export OXIDE_HOST='https://oxide.sys.example.com'
    export OXIDE_TOKEN='oxide-token-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
  4. Run the infrastructure provider. Update ${TAG} to use the latest stable Oxide infrastructure provider, without the v prefix, 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}

Development

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.

Running Locally

  1. 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'
  2. Run the infrastructure provider.

    make dev

Release Process

The release process is manual and runs from a developer’s workstation for now.

  1. Check out the revision to be released. Ensure the working copy is clean.

  2. Build the container image.

    RELEASE=true make build
  3. Push the container image.

    RELEASE=true make push
  4. Create a GitHub release.

    1. Create and push a Git tag with the v-prefixed VERSION (e.g., v0.1.0).

    2. Create the GitHub release for the newly pushed tag. Automatically generate the release notes.

  5. Open a pull request with the following changes.

    1. Update the VERSION within the Makefile to the next version.

About

Sidero Omni infrastructure provider for Oxide.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •