Unicorn Delivery Service (UDS), Rancher Kubernetes Engine 2 (RKE2)
Important
This is an unofficial sandbox repository for developing and testing a UDS RKE2 capability. Please visit the defenseunicorns organization for the official UDS RKE2 capability.
This Zarf package provides an air-gapped production environment for deploying UDS Core, individual UDS Capabilities, and UDS capabilities aggregated (bundled) via the UDS CLI.
See the UDS RKE2 Mermaid diagram for visual representations of the tech stack's components and order of operations.
The following are requirements for an environment where a user is deploying UDS RKE2 and its custom components and applications.
- A base installation of Ubuntu 20.04 or 22.04 on the node's host system
- UDS CLI v0.10.4
- See the RKE2 documentation for host system pre-requisites
- See the Application-Specific and Flavor-Specific Infrastructure configuration sections for instructions on setup based on what is deployed atop UDS RKE2
Important
This entire repository assumes that you have root access, and all scripts and actions are run as root. Use sudo su to activate a root shell.
This section provides minimal context and instructions for quickly deploying the base UDS RKE2 capability. See DEVELOPMENT.md for instructions on how to further develop UDS RKE2.
Caution
Due to disk formatting, mount operations, networking, and STIG configurations that are applied to a node's host, it is highly recommended that the contents of this repository are not directly installed on a personal machine.
The best way to test UDS RKE2 is to spin up one or more nodes using a containerized method, such as virtual machines or networks.
LeapfrogAI, the main supported target of this bundle, requires GPU passthrough to all worker nodes that will have a taint for attracting pods with GPU resource and workload requirements.
Please see the VM setup documentation and VM setup scripts to learn more about manually creating a development VM.
There are three main "flavors" of the UDS RKE2 Core bundle, with four distinct flavors in total. Each flavor revolves around the storage and persistence layer of the cluster and comes with its own documentation on configuration and installation, as linked in the bulleted list below. Please refer to that documentation for more details on each bundle flavor's recommendations and capabilities.
- Local Path Provisioner + MinIO
- (WIP) Longhorn + MinIO
- (WIP) Rook-Ceph
The following are quick start instructions for the local-path flavored UDS RKE2 bundle. This does not include the optional NVIDIA GPU operator and LeapfrogAI workarounds Zarf packages.
- Change directory to the bundle and deploy the bundle:
# Use `ifconfig` to identify the NETWORK_INTERFACES for L2 advertisement
uds run uds-rke2-local-path-core --set NETWORK_INTERFACES="eth0" --set IP_ADDRESS_POOL="200, 201, 202, 203"- Modify your
/etc/hostsaccording to your base IP on the Istio Tenant gateway:
# /etc/hosts
192.168.0.200 keycloak.admin.uds.dev grafana.admin.uds.dev neuvector.admin.uds.dev
192.168.0.201 sso.uds.dev- Log in to GitHub Container Registry (GHCR) and DoD's Registry1:
# Login to GHCR
set +o history
export GHCR_USERNAME="YOUR-USERNAME-HERE"
export GHCR_PASSWORD="YOUR-PASSWORD-HERE"
echo $GHCR_PASSWORD | uds zarf tools registry login ghcr.io --username $GHCR_USERNAME --password-stdin
set -o history
# Login to Registry1
set +o history
export REGISTRY1_USERNAME="YOUR-USERNAME-HERE"
export REGISTRY1_PASSWORD="YOUR-PASSWORD-HERE"
echo $REGISTRY1_PASSWORD | uds zarf tools registry login registry1.dso.mil --username $REGISTRY1_USERNAME --password-stdin
set -o history- Build all necessary packages, then create and deploy the bundle:
# Use `ifconfig` to identify the NETWORK_INTERFACES for L2 advertisement
uds run uds-rke2-local-path-core-dev --set NETWORK_INTERFACES="eth0" --set IP_ADDRESS_POOL="200, 201, 202, 203"- Modify your
/etc/hostsaccording to your base IP on the Istio Tenant gateway:
# /etc/hosts
192.168.0.200 keycloak.admin.uds.local grafana.admin.uds.local neuvector.admin.uds.local
192.168.0.201 sso.uds.localThe following sub-sections outline all of the configuration documentation, which includes additional information, optional Zarf packages, and customization options for each component of UDS RKE2.