Generate Workflow
Use this when: you have a cluster-config.yaml (from Discover Workflow) or a known hardware preset and want to render Kubernetes manifests for a specific deployment profile.
Specify the deployment profile using --fabric, --deployment-type, and --multirail:
l8k generate --user-config ./cluster-config.yaml \
--fabric ethernet --deployment-type sriov --multirail \
--save-deployment-files ./deployments
For Spectrum-X, the --spectrum-x flag automatically sets --fabric ethernet, --deployment-type sriov, and --multirail true.
If the configuration file already contains a profile section, CLI flags are optional. CLI flags override configuration file values when both are provided.
When a flag is unset on both the CLI and in the configuration file, l8k generate fills it from the discovered cluster:
Flag | Default | Trigger |
|---|---|---|
--fabric |
the cluster’s fabric (ethernet or infiniband) |
every group’s linkType (Unit 5 fabric probe) agrees; skipped+warned otherwise |
--deployment-type |
sriov |
always |
--multirail |
true |
always; opt out via --multirail=false (YAML cannot express explicit-false) |
--multiplane-mode |
uniplane (CX7 / BF3 SuperNIC), swplb (CX8), hwplb (CX9) |
only when --spectrum-x is set; per east-west PF deviceID, skipped+warned when groups have mixed deviceIDs |
--number-of-planes |
1 (CX7 / BF3 SuperNIC), 2 (CX8), 4 (CX9) | only when --spectrum-x is set |
--network-operator-release |
matching release for the chosen RA (RA2.1 → 26.1, RA2.2 → 26.4) | only when --spectrum-x is set |
Each applied default is logged at info level (Defaulted --multiplane-mode=swplb (ConnectX-8 (deviceID 1023))); the full reasoning trail is at debug level (--log-level debug).
Resolution precedence (lowest → highest): hardware default < config-file < CLI flag. The Spectrum-X cohort rules (RA-to-release pairing, multiplane-mode=none requiring number-of-planes=1, etc.) are enforced after defaults run, so a partial CLI input plus defaults must still resolve to a consistent whole.
For the full profile decision matrix, see Deployment Profiles.
For Spectrum-X profiles — and recommended for all deployments — pin the Network Operator release line:
l8k generate --user-config ./cluster-config.yaml \
--network-operator-release 26.4 \
--fabric ethernet --deployment-type sriov --multirail \
--save-deployment-files ./deployments
Supported release lines: 26.1 and 26.4. The release auto-fills versions and image tags from an embedded catalog. RA2.1 Spectrum-X requires --network-operator-release 26.1; RA2.2 Spectrum-X requires 26.4.
To generate manifests for a known machine type without running discovery, use --for <preset>:
l8k generate --for ThinkSystem-SR680a-V3 \
--node-selector "nvidia.com/gpu.product=NVIDIA-H200" \
--fabric ethernet --deployment-type sriov --multirail \
--save-deployment-files ./deployments
See Cluster Topology Presets for available presets and how to add new ones.
Generated files follow a numbered naming convention that determines deployment order:
File pattern | Contents |
|---|---|
10-nicclusterpolicy.yaml |
Cluster-wide components: Multus, CNI plugins, NV-IPAM, NIC Configuration Operator, Spectrum-X Operator. |
11-nicnodepolicy.yaml |
Per-node-group components: OFED driver and device plugins. Rendered once per group with the group’s nodeSelector. |
20-ippool.yaml |
NV-IPAM IP pools. |
30-*.yaml |
Network resources (SriovNetworkNodePolicy, SriovNetwork, HostDeviceNetwork, MacvlanNetwork, IPoIBNetwork). |
35-nicinterfacenametemplate.yaml |
NIC rename templates (only when needed — see Heterogeneous Clusters). |
40-*.yaml / 50-*.yaml |
Example workload DaemonSets. |
overview.html |
Human-readable deployment summary. |
In heterogeneous clusters, per-group files include the group identifier in the filename (e.g., 30-sriovnetworknodepolicy-group-0.yaml).
In heterogeneous clusters, two flags scope the output to a subset of source groups:
# By identifier (comma-separated; case-sensitive match against
# cluster-config.yaml's clusterConfig[].identifier):
l8k generate --user-config ./cluster-config.yaml \
--fabric infiniband --deployment-type sriov --multirail \
--groups dgx-b200-nvidia-h100-nvl,poweredge-xe9680-nvidia-h200 \
--save-deployment-files ./deployments
# By GPU type (case-insensitive match against gpuType):
l8k generate --user-config ./cluster-config.yaml \
--fabric ethernet --deployment-type sriov --multirail \
--gpu-type NVIDIA-H200 \
--save-deployment-files ./deployments
--groups and --gpu-type are mutually exclusive. An empty match is a validation error. --gpu-type is best for declarative pipelines; --groups is best for staged rollouts where the cohort is enumerated explicitly. See Heterogeneous Clusters for the per-Kind rendering rules under filter.
By default, Launch Kit generates example DaemonSet workloads for each profile. To use your own workload manifest instead:
l8k generate --user-config ./cluster-config.yaml \
--fabric ethernet --deployment-type sriov \
--workload-manifest /path/to/my-workload.yaml \
--save-deployment-files ./deployments
Launch Kit patches the workload manifest with the correct network annotations, resource requests, and node affinity based on the cluster configuration. Supported workload kinds: Pod, Deployment, DaemonSet, StatefulSet, Job, ReplicaSet.
Before — input manifest:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-rdma-workload
namespace: default
spec:
selector:
matchLabels:
app: my-rdma-workload
template:
metadata:
labels:
app: my-rdma-workload
spec:
containers:
- name: rdma-app
image: my-registry/my-rdma-app:latest
securityContext:
capabilities:
add: ["IPC_LOCK"]
After — patched by Launch Kit for an SR-IOV deployment with 2 rails:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-rdma-workload
namespace: default
spec:
selector:
matchLabels:
app: my-rdma-workload
template:
metadata:
labels:
app: my-rdma-workload
annotations:
k8s.v1.cni.cncf.io/networks: sriov-network-rail-0,sriov-network-rail-1
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: nvidia.com/gpu.machine
operator: In
values:
- DGX-B200
containers:
- name: rdma-app
image: my-registry/my-rdma-app:latest
securityContext:
capabilities:
add: ["IPC_LOCK"]
resources:
requests:
nvidia.com/sriov_resource_rail_0: "1"
nvidia.com/sriov_resource_rail_1: "1"
limits:
nvidia.com/sriov_resource_rail_0: "1"
nvidia.com/sriov_resource_rail_1: "1"
Deploy Workflow — apply the generated manifests
Deployment Profiles — profile decision matrix
Heterogeneous Clusters — per-group manifests
Cluster Topology Presets — offline generation with
--forCLI Reference —
l8k generateflags