Skip to content
Merged
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
8 changes: 6 additions & 2 deletions docs/user/container-images.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ A machine-readable **CycloneDX 1.6 JSON** companion to this page is produced by
## Summary

- Components: **44**
- Unique images: **97**
- Unique images: **101**
- Distinct registries: **11**

Registries: `602401143452.dkr.ecr.us-west-2.amazonaws.com`, `cr.agentgateway.dev`, `docker.io`, `gcr.io`, `ghcr.io`, `gke.gcr.io`, `nvcr.io`, `public.ecr.aws`, `quay.io`, `registry.k8s.io`, `us-docker.pkg.dev`
Expand Down Expand Up @@ -56,7 +56,7 @@ _Rendering fidelity:_ `catalog-parity: charts are rendered with the shared recip
| kueue | helm | kueue | 0.18.2 | 1 |
| mariadb-operator | helm | mariadb-operator | 26.6.0 | 1 |
| mariadb-operator-crds | helm | mariadb-operator-crds | 26.6.0 | 0 |
| network-operator | helm | nvidia/network-operator | 26.4.1 | 5 |
| network-operator | helm | nvidia/network-operator | 26.4.1 | 9 |
| network-operator-ocp | manifest | — | — | 0 |
| network-operator-ocp-olm | manifest | — | — | 0 |
| nfd | helm | node-feature-discovery | 0.19.0 | 1 |
Expand Down Expand Up @@ -238,6 +238,10 @@ _No images extracted._
### network-operator

- `docker.io/library/busybox:1.38.0@sha256:dc2d74b28e4cf8984fa52af1f39bc7c3d9c73760b41a74d629f5d11b1ab28616`
- `ghcr.io/k8snetworkplumbingwg/multus-cni:v4.2.1`
- `ghcr.io/k8snetworkplumbingwg/plugins:v1.6.2-update.1`
- `ghcr.io/k8snetworkplumbingwg/sriov-network-device-plugin:v3.9.0`
- `ghcr.io/mellanox/nvidia-k8s-ipam:v0.2.0`
- `nvcr.io/nvidia/cloud-native/network-operator:v26.4.1`
- `nvcr.io/nvidia/doca/doca_telemetry:1.22.5-doca3.1.0-host`
- `nvcr.io/nvidia/mellanox/doca-driver:doca3.2.0-25.10-1.2.8.0-2`
Expand Down
16 changes: 10 additions & 6 deletions docs/user/validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ ones) that match the target fabric:
| Check | Transport | Default applicability (from recipe criteria) |
|---|---|---|
| `nccl-all-reduce-bw` | Auto-detect (whatever NCCL picks) | H100/H200 on EKS, H100 on GKE, H100 on AKS (ND-series InfiniBand — NCCL's built-in IB/verbs transport over the `rdma/hca_shared_devices_a` shared device pool), and B200/GB200 on self-managed clusters (`service=any`). Preserves the pre-variant behavior. |
| `nccl-all-reduce-bw-net` | NET (EFA on EKS by default; ConnectX RoCE via `AICR_NCCL_FABRIC=roce`) | GB200 + EKS. Asserts EFA actually carried traffic — catches silent fallback to Socket when the NVIDIA driver is missing `NVreg_GrdmaPciTopoCheckOverride=1`. |
| `nccl-all-reduce-bw-nvls` | NVLS (MNNVL across an NVL72 IMEX domain) | GB200 + EKS, and GB200 + OKE. Asserts the NVLS communicator actually initialized — catches silent fallback to EFA (EKS) or Socket (OKE) when the IMEX domain is misconfigured. |
| `nccl-all-reduce-bw-net` | NET (EFA on EKS by default; ConnectX RoCE via `AICR_NCCL_FABRIC=roce`; built-in IB/verbs on OKE) | GB200 + EKS, and GB200 + OKE. Asserts the intended NET fabric actually carried traffic — EFA on EKS, the NVL72 InfiniBand east-west fabric (`nvidia.com/mlnxnics` shared HCAs) on OKE — catching silent fallback to Socket when the NVIDIA driver is missing `NVreg_GrdmaPciTopoCheckOverride=1`. |
| `nccl-all-reduce-bw-nvls` | NVLS (MNNVL across an NVL72 IMEX domain) | GB200 + EKS, and GB200 + OKE. Asserts the NVLS communicator actually initialized — catches silent fallback to the NET fabric (EFA on EKS, InfiniBand on OKE) when the IMEX domain is misconfigured. |

The applicability column is the *default*, derived from the recipe's
`criteria`. A recipe whose criteria fall outside it can still run these
Expand All @@ -61,7 +61,7 @@ whose fabric matches its hardware, or, for a private service whose fabric
matches no embedded template, by
[supplying its own benchmark runtime](#supplying-a-benchmark-runtime-for-a-private-service).

The `-net` check defaults to the AWS EFA fabric. On a ConnectX **RoCE** cluster
On EKS, the `-net` check defaults to the AWS EFA fabric. On a ConnectX **RoCE** cluster
(e.g. DGXC GB300 `p6e-gb300r`), set `AICR_NCCL_FABRIC=roce` in the `aicr
validate` environment to run the NET test over NCCL's built-in IB/verbs
transport across `roce.networking.k8s.aws` DRA devices instead. The value is
Expand All @@ -78,9 +78,13 @@ GB200/EKS recipes (both `training` and `inference` intents) enable `-net` and
expose two inter-node fabrics simultaneously and a single auto-detect test
would only exercise one of them.

GB200/OKE recipes enable `-nvls` only: OKE NET/RDMA stays out of the support
matrix until the OCI testbed proves a non-Socket NCCL transport end to end, so
OKE validates the NVL72 IMEX fabric without an EFA/NET counterpart.
GB200/OKE training recipes follow the same pattern and enable `-net` and
`-nvls` together, with the same `>= 40` / `>= 500` GB/s floors as GB200/EKS.
On OKE, `-net` exercises the NVL72 rack's InfiniBand east-west fabric
(`rdma0-3`, advertised as `nvidia.com/mlnxnics` by the recipe's
`rdmaSharedDevicePlugin` NicClusterPolicy) over NCCL's built-in IB/verbs
transport — no EFA or RoCE plumbing is involved. Both variants were validated
end to end on a `BM.GPU.GB200.4` NVL72 rack.

```bash
# Capture snapshot, generate training recipe, validate the performance phase.
Expand Down
4 changes: 2 additions & 2 deletions pkg/bundler/testdata/stock_render_golden.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ gb200-eks-ubuntu-inference-dynamo: 0cb8d348251d816706a3de33c3258cf7571d03fe9651c
gb200-eks-ubuntu-training-kubeflow: 9a9bebc7996647e0da42de05f30c7dd126c321fcf9e4642723a2fc1b9dc9aa43
gb200-eks-ubuntu-training-slurm: e0d0e22306d16edaaa61ac2d406bfeee13d3b8738a13500616a6258faba85d28
gb200-oke-ubuntu-inference-dynamo: 0678d70588d81be1ebffda2497075b7e237d73049f6881ecb2cffd34b6e1842d
gb200-oke-ubuntu-training-kubeflow: ac4fb9394bf3849e20413391d84c971daa87077e7311f7912d289fd84829ae3f
gb200-oke-ubuntu-training-kubeflow: b4cdebf0db1373bfe855f9fd80af212e0d9902bff7e3e4efe22d0c9a672887b2
gb300-any: 89784fc824cc7bed3c2af68b5e1d8858d471f9a3116a15e95a975f68747037e1
gb300-eks-ubuntu-inference-dynamo: beead8d2397289ec05ccf41397dac2866d7773cfaa3fc8d851556210fa14198d
gb300-eks-ubuntu-training-kubeflow: a56c6fe3dc703ff067b38bb7144aab91b5a4fda1c63e02d50b178a6d735be32f
Expand All @@ -43,7 +43,7 @@ h200-eks-training: c062ae91b06cd7d6a008269be3a79263b666c62a2407d9b4a5aaa5cc9c2f3
l40-any: d2c4703050a708256e4073721b73bd7fc6947c9af264166c179e78d9f1d36ac6
l40s-any: 37d3fefd82f7f69f77e5d5554600eb1af2b5113707a662823e39c5846a632ccd
l40s-oke-inference: c23425edf569c5fc98c6b3277cbe4f5a73a6ada607d760dd5e4d0d1daf516856
l40s-oke-training: fe534d483969dc6e8ae7f0d619b36b8dcf35fc82c37fcaf1502975551cc99fef
l40s-oke-training: 4274029777e2a396d00cbab17c1c6ee9f13c77325533fd6f5110f869d7508142
monitoring-hpa: 5269e14167c645177fce3d83b2f33d94a615b6ce9c099a84a8aa3f56ab3f00fd
ocp-inference-nim: bb3c7fa78c972241b47abedbff3069d4fad35ab0c64d5f0172c633d8ed610b27
ocp-training: 1f457d2c2aed921c2a3281cca1a55b1181d979cc99f07c1b51b9ce827379b401
Expand Down
9 changes: 6 additions & 3 deletions pkg/recipe/performance_goals_oke_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,22 +34,25 @@ func TestOKEPerformanceGoalsFollowTrainingInferencePattern(t *testing.T) {
}{
{
name: "gb200-oke-training",
wantChecks: []string{"nccl-all-reduce-bw-nvls"},
wantChecks: []string{"nccl-all-reduce-bw-net", "nccl-all-reduce-bw-nvls"},
wantConstraints: map[string]string{
"nccl-all-reduce-bw-net": ">= 40",
"nccl-all-reduce-bw-nvls": ">= 500",
},
},
{
name: "gb200-oke-ubuntu-training",
wantChecks: []string{"nccl-all-reduce-bw-nvls"},
wantChecks: []string{"nccl-all-reduce-bw-net", "nccl-all-reduce-bw-nvls"},
wantConstraints: map[string]string{
"nccl-all-reduce-bw-net": ">= 40",
"nccl-all-reduce-bw-nvls": ">= 500",
},
},
{
name: "gb200-oke-ubuntu-training-kubeflow",
wantChecks: []string{"nccl-all-reduce-bw-nvls"},
wantChecks: []string{"nccl-all-reduce-bw-net", "nccl-all-reduce-bw-nvls"},
wantConstraints: map[string]string{
"nccl-all-reduce-bw-net": ">= 40",
"nccl-all-reduce-bw-nvls": ">= 500",
},
},
Expand Down
4 changes: 2 additions & 2 deletions pkg/recipe/testdata/catalog_parity_golden.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ gb200-eks-ubuntu-inference-dynamo: d8fd0d57581a7c826b27eb6dc4ba63d3ee063aa58cf25
gb200-eks-ubuntu-training-kubeflow: 77a7f39257ac4a7abb8567386196949029c740dd910f9bfaa2e010946d3a8261
gb200-eks-ubuntu-training-slurm: cc54ba8b5ab6deb57a642abc8462360d3a8d854d6b9274b6f7f51a9c0b63f0cc
gb200-oke-ubuntu-inference-dynamo: 56955bb6fa6086b5d7c1431145c574f99b9550ac29c565006d65a3dacd1c1871
gb200-oke-ubuntu-training-kubeflow: a227c194b8eb1023b53d7fe52dbde14bcf5d45a90979317340f987e6ff331cbb
gb200-oke-ubuntu-training-kubeflow: 0bb6faa6b2bbd9de2dcf825e36ceca1789e98e9782115ed06575c775155c7f4b
gb300-any: 15930cf8c57d0d59b3493c4ec46e8455179d8d6a32c635315b32d89619904ff6
gb300-eks-ubuntu-inference-dynamo: fc61807bfc29c7fff199a6a1d07d7aa6f7be217ca8a7c6b671087567360539f3
gb300-eks-ubuntu-training-kubeflow: eb4ffd9bafec87bf85044d732864f3814937073edf919b5821373d4754dd99ba
Expand All @@ -43,7 +43,7 @@ h200-eks-training: 4b484e17c89074fa1322b54b5686cea3c1d862ffc3af04730ae760491296f
l40-any: 09de30af8e20c64a19f47afcbb0c70d67785e2ce99be20e3ce53a39e2a3abaf7
l40s-any: 66644f104b5b2f0129756763ad89db5deef008ecf1453a6abc9f950870788aca
l40s-oke-inference: a639160bec239422ce5f34d0b48674c10f4016e43d48260db07fc9f3f865eb6a
l40s-oke-training: 7395b51b4f8063c2b3fc86eb446dd1be2e3591fd018cc76a7cbd7c7c71463973
l40s-oke-training: 81a0d7ec5dd5e85cd01099ce44b30131122b3bbef11f39f1b271455030c6a3e6
monitoring-hpa: a9847bb17e9dbd73bd24e7282dcdc66aaa40716dfafc2a4b855af85facea5223
ocp-inference-nim: 1ce82c596d41ad8953eef488fdfddec7dd8f83c0114b1be63a975f59257e646d
ocp-training: 88fc2b45c7aabf66fc023c9ed40bf520b0d4e58831435963f19fe4c1b4001ac3
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NicClusterPolicy for GB200 OKE (OCI) — rdmaSharedDevicePlugin over InfiniBand.
Comment thread
yuanchen8911 marked this conversation as resolved.
#
# Mirrors the AOR OCI GB200 config validated on gb200-ew. No ofedDriver (host
# MOFED), no SR-IOV: the NVL72 east-west fabric is IB on the rdma0-3 netdevs
# (oci_hpc.rdma_device_names_mode=2 kernel cmdline names them deterministically).
#
# The IB devices are advertised as nvidia.com/mlnxnics — the same resource
# name the L40S SR-IOV path uses, so workloads request RDMA uniformly
# across OKE fabrics.
apiVersion: mellanox.com/v1alpha1
kind: NicClusterPolicy
metadata:
name: nic-cluster-policy
annotations:
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "5"
helm.sh/hook-delete-policy: before-hook-creation
labels:
app.kubernetes.io/managed-by: {{ .Release.Service }}
helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
spec:
rdmaSharedDevicePlugin:
image: k8s-rdma-shared-dev-plugin
repository: nvcr.io/nvidia/mellanox
version: network-operator-v26.4.1
config: |
{
"configList": [
{
"resourcePrefix": "nvidia.com",
"resourceName": "mlnxnics",
"rdmaHcaMax": 63,
"selectors": {
"linkTypes": ["infiniband"],
"ifNames": ["rdma0", "rdma1", "rdma2", "rdma3"]
}
}
]
}
deploymentTolerations:
- key: CriticalAddonsOnly
operator: Exists
tolerations:
# RDMA DaemonSets must land on tainted GPU nodes.
- key: nvidia.com/gpu
operator: Exists
- key: CriticalAddonsOnly
operator: Exists
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NicClusterPolicy for L40S OKE (OCI) SR-IOV RoCE.
Comment thread
yuanchen8911 marked this conversation as resolved.
#
# The network-operator Helm chart installs the operator + CRD but does not template
# a NicClusterPolicy CR (values-oke-l40s.yaml sets deployCR: false). This manifest
# creates it so the operator reconciles the RoCE fabric stack. Hand-rendered from
# AOR's network-operator/nicclusterpolicy.yaml.tmpl (provider: oci branch, with
# network.type == roce → nvIpam + secondaryNetwork included).
#
# OCI specifics (vs Forge IB): NO ofedDriver — OCI nodes carry host MOFED, consumed
# by the GPU Operator driver via driver.rdma.useHostMofed (l40s-oke-ubuntu leaf). One
# sriovDevicePlugin resource, nvidia.com/mlnxnics, selecting the OCI ConnectX VF
# device IDs (101a = ConnectX-5 Ex VF, 101e = mlx5Gen VF). RoCE also needs nv-ipam
# (VF IP allocation) + secondaryNetwork/multus (attach the VF into workload pods).
# vendor 15b3 = Mellanox.
apiVersion: mellanox.com/v1alpha1
kind: NicClusterPolicy
metadata:
name: nic-cluster-policy
annotations:
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "5"
helm.sh/hook-delete-policy: before-hook-creation
labels:
app.kubernetes.io/managed-by: {{ .Release.Service }}
helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
spec:
# RoCE: allocate IPs for the RDMA VFs and wire them into pods via multus.
nvIpam:
image: nvidia-k8s-ipam
repository: ghcr.io/mellanox
version: v0.2.0
enableWebhook: false
containerResources:
- name: nv-ipam-node
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: "1"
memory: 2Gi
secondaryNetwork:
cniPlugins:
image: plugins
repository: ghcr.io/k8snetworkplumbingwg
version: v1.6.2-update.1
multus:
image: multus-cni
repository: ghcr.io/k8snetworkplumbingwg
version: v4.2.1
sriovDevicePlugin:
image: sriov-network-device-plugin
repository: ghcr.io/k8snetworkplumbingwg
version: v3.9.0
config: |
{
"resourceList": [
{
"resourcePrefix": "nvidia.com",
"resourceName": "mlnxnics",
"selectors": {"isRdma":true,"vendors":["15b3"],"devices":["101a","101e"]}
}
]
}
# Operator DaemonSet placement: system/monitoring nodes only (matches AOR).
deploymentTolerations:
- key: CriticalAddonsOnly
operator: Exists
tolerations:
# RDMA DaemonSets must land on tainted GPU nodes.
- key: nvidia.com/gpu
operator: Exists
- key: CriticalAddonsOnly
operator: Exists
46 changes: 46 additions & 0 deletions recipes/components/network-operator/values-oke-gb200.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# network-operator Helm values for GB200 OKE (OCI) InfiniBand.
Comment thread
yuanchen8911 marked this conversation as resolved.
#
# OCI GB200 NVL72 model (vs L40S RoCE / Forge IB): NO ofedDriver — nodes carry host
# MOFED — and no SR-IOV/nv-ipam/multus either. East-west is InfiniBand (rdma0-3),
# served by rdmaSharedDevicePlugin from the post-install NicClusterPolicy manifest,
# NOT the chart. deployCR off so that manifest CR is authoritative.
# nfd.enabled: false — GPU Operator's NFD is used; no second NFD.
# deployNodeFeatureRules stays at the chart default (true): the chart's
# nvidia-nics-rules NodeFeatureRule labels vendor-15b3 class-0200/0207 nodes
# feature.node.kubernetes.io/pci-15b3.present=true, which the deployment
# validator's RDMA readiness gate uses as its node cohort. Do NOT copy AKS's
# deployNodeFeatureRules: false here — AKS disables it only because it ships
# its own targeted rule manifest; without either source the gate's cohort is
# empty and it fails closed on every deploy.
deployCR: false
nvIpam:
enabled: false
secondaryNetwork:
deploy: false
nfd:
enabled: false
# Operator placement comes from the bundler's system-node scheduling
# injection (registry nodeScheduling: operator.nodeSelector /
# operator.tolerations) — no hardcoded affinity here.
operator:
resources:
limits:
cpu: "1"
memory: 2Gi
requests:
cpu: 500m
memory: 2Gi
55 changes: 55 additions & 0 deletions recipes/components/network-operator/values-oke-l40s.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# network-operator Helm values for L40S OKE (OCI) SR-IOV RoCE.
Comment thread
yuanchen8911 marked this conversation as resolved.
# Hand-rendered from AOR's network-operator/values.yaml.tmpl (provider: oci) +
# nicclusterpolicy.yaml.tmpl (oci branch, network.type == roce).
#
# OCI model (vs Forge IB / Mistral DOCA): NO ofedDriver — OCI bare-metal nodes carry
# host MOFED, so the GPU Operator uses it via driver.rdma.useHostMofed (set on the
# l40s-oke-ubuntu leaf). network-operator's job here is the SR-IOV VF device plugin
# (advertises nvidia.com/mlnxnics RDMA VFs) plus nv-ipam + secondaryNetwork (multus)
# for RoCE — all supplied by the post-install NicClusterPolicy manifest, NOT the chart.
#
# deployCR/nvIpam/secondaryNetwork: AICR's wrapper defaults are on (deployCR: true,
# nvIpam.enabled: true, secondaryNetwork.deploy: true) — they template the wrapper's
# own NicClusterPolicy. Turn deployCR off so our manifest CR is authoritative (it is
# the only place the OCI VF selectors 101a/101e can be expressed); the operator
# reconciles nv-ipam + secondaryNetwork + sriovDevicePlugin from that CR regardless.
# nfd.enabled: false — GPU Operator's NFD is used; no second NFD.
# deployNodeFeatureRules stays at the chart default (true): the chart's
# nvidia-nics-rules NodeFeatureRule labels vendor-15b3 class-0200/0207 nodes
# feature.node.kubernetes.io/pci-15b3.present=true, which the deployment
# validator's RDMA readiness gate uses as its node cohort. Do NOT copy AKS's
# deployNodeFeatureRules: false here — AKS disables it only because it ships
# its own targeted rule manifest; without either source the gate's cohort is
# empty and it fails closed on every deploy.
deployCR: false
nvIpam:
enabled: false
secondaryNetwork:
deploy: false
nfd:
enabled: false
# Operator placement comes from the bundler's system-node scheduling
# injection (registry nodeScheduling: operator.nodeSelector /
# operator.tolerations) — no hardcoded affinity here.
operator:
resources:
limits:
cpu: "1"
memory: 2Gi
requests:
cpu: 500m
memory: 2Gi
Loading
Loading