Skip to content

Commit 32fbdda

Browse files
committed
Adding Fast Model Actuation (FMA) to WVA's benchmarking framework
Signed-off-by: aavarghese <avarghese@us.ibm.com>
1 parent 8be94cd commit 32fbdda

File tree

17 files changed

+1577
-22
lines changed

17 files changed

+1577
-22
lines changed

.github/workflows/ci-benchmark.yaml

Lines changed: 105 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ jobs:
8181
const platform = context.payload.inputs.platform;
8282
const runUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;
8383
console.log(`Manual benchmark dispatch for ${platform}`);
84-
8584
core.setOutput('run_benchmark', 'true');
8685
core.setOutput('platform', platform);
8786
@@ -190,10 +189,8 @@ jobs:
190189
IMAGE_TAG="bench-$(printf '%s' "$GIT_REF" | cut -c1-8)"
191190
FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"
192191
echo "Building image: $FULL_IMAGE"
193-
194192
make docker-build IMG="$FULL_IMAGE"
195193
make docker-push IMG="$FULL_IMAGE"
196-
197194
echo "image_tag=${IMAGE_TAG}" >> $GITHUB_OUTPUT
198195
199196
benchmark-kind:
@@ -292,6 +289,90 @@ jobs:
292289
INSTALL_GRAFANA: "true"
293290
run: make deploy-e2e-infra
294291

292+
- name: Install ko for FMA image builds
293+
uses: ko-build/setup-ko@d006021bd0c28d1ce33a07e7943d48b079944c8d
294+
with:
295+
version: v0.15.2
296+
297+
- name: Clone FMA repository
298+
uses: actions/checkout@v4
299+
with:
300+
repository: llm-d-incubation/llm-d-fast-model-actuation
301+
path: fma-repo
302+
token: ${{ secrets.GITHUB_TOKEN }}
303+
304+
- name: Build and load FMA images into Kind
305+
id: fma-images
306+
run: |
307+
cd fma-repo
308+
# Build all FMA images locally and load into Kind
309+
make build-test-requester-local build-test-launcher-local build-controller-local build-populator-local
310+
make load-test-requester-local load-test-launcher-local load-controller-local load-populator-local CLUSTER_NAME=kind-wva-gpu-cluster
311+
# Export image names for the benchmark step
312+
echo "launcher=$(make echo-var VAR=TEST_LAUNCHER_IMG)" >> $GITHUB_OUTPUT
313+
echo "requester=$(make echo-var VAR=TEST_REQUESTER_IMG)" >> $GITHUB_OUTPUT
314+
315+
- name: Set up FMA prerequisites in Kind cluster
316+
env:
317+
FMA_NAMESPACE: llm-d-sim
318+
run: |
319+
# Label GPU nodes
320+
for node in $(kubectl get nodes -o name | sed 's%^node/%%'); do
321+
kubectl label node $node nvidia.com/gpu.present=true nvidia.com/gpu.product=NVIDIA-L40S nvidia.com/gpu.count=2 --overwrite=true
322+
done
323+
324+
# Create gpu-map ConfigMap with fake GPU mappings
325+
kubectl create cm gpu-map -n "$FMA_NAMESPACE" || true
326+
for node in $(kubectl get nodes -o name | sed 's%^node/%%'); do
327+
kubectl patch cm gpu-map -n "$FMA_NAMESPACE" --type=merge -p="{\"data\":{\"$node\":\"{\\\"GPU-0\\\": 0, \\\"GPU-1\\\": 1}\"}}"
328+
done
329+
330+
# Create service accounts and RBAC
331+
kubectl create sa testreq -n "$FMA_NAMESPACE" || true
332+
kubectl create sa testlauncher -n "$FMA_NAMESPACE" || true
333+
cd fma-repo
334+
kubectl apply -n "$FMA_NAMESPACE" -f - <<'EOF'
335+
apiVersion: rbac.authorization.k8s.io/v1
336+
kind: Role
337+
metadata:
338+
name: testreq
339+
rules:
340+
- apiGroups: ["fma.llm-d.ai"]
341+
resources: ["inferenceserverconfigs", "launcherconfigs"]
342+
verbs: ["get", "list", "watch"]
343+
- apiGroups: [""]
344+
resourceNames: ["gpu-map", "gpu-allocs"]
345+
resources: ["configmaps"]
346+
verbs: ["update", "patch", "get", "list", "watch"]
347+
- apiGroups: [""]
348+
resources: ["configmaps"]
349+
verbs: ["create"]
350+
- apiGroups: [""]
351+
resources: ["pods"]
352+
verbs: ["get", "list", "watch"]
353+
EOF
354+
kubectl create rolebinding testreq --role=testreq --serviceaccount="$FMA_NAMESPACE":testreq -n "$FMA_NAMESPACE" || true
355+
kubectl apply -n "$FMA_NAMESPACE" -f - <<'EOF'
356+
apiVersion: rbac.authorization.k8s.io/v1
357+
kind: Role
358+
metadata:
359+
name: testlauncher
360+
rules:
361+
- apiGroups: [""]
362+
resourceNames: ["gpu-map"]
363+
resources: ["configmaps"]
364+
verbs: ["get", "list", "watch"]
365+
- apiGroups: [""]
366+
resources: ["pods"]
367+
verbs: ["get", "patch"]
368+
EOF
369+
kubectl create rolebinding testlauncher --role=testlauncher --serviceaccount="$FMA_NAMESPACE":testlauncher -n "$FMA_NAMESPACE" || true
370+
371+
- name: Deploy FMA controllers
372+
env:
373+
FMA_REPO_PATH: ./fma-repo
374+
run: make deploy-fma
375+
295376
- name: Run benchmark
296377
env:
297378
ENVIRONMENT: kind-emulator
@@ -304,6 +385,9 @@ jobs:
304385
BENCHMARK_GRAFANA_PANEL_DIR: /tmp/benchmark-panels
305386
KV_SPARE_TRIGGER: "0.1"
306387
QUEUE_SPARE_TRIGGER: "3"
388+
FMA_LAUNCHER_IMAGE: ${{ steps.fma-images.outputs.launcher }}
389+
FMA_REQUESTER_IMAGE: ${{ steps.fma-images.outputs.requester }}
390+
FMA_BENCHMARK_RESULTS_FILE: /tmp/fma-benchmark-results.json
307391
run: make test-benchmark
308392

309393
- name: Upload benchmark results
@@ -314,6 +398,7 @@ jobs:
314398
path: |
315399
/tmp/benchmark-results.json
316400
/tmp/prefill-benchmark-results.json
401+
/tmp/fma-benchmark-results.json
317402
/tmp/benchmark-grafana-snapshot.txt
318403
/tmp/benchmark-grafana-snapshot.json
319404
/tmp/benchmark-panels/
@@ -353,6 +438,22 @@ jobs:
353438
const data = JSON.parse(fs.readFileSync('/tmp/benchmark-results.json', 'utf8'));
354439
355440
const fmtTime = (v) => v < 0 ? 'N/A' : `${v.toFixed(1)}s`;
441+
const fmtMs = (v) => v > 0 ? `${v.toFixed(0)}ms` : 'N/A';
442+
443+
let fmaRows = '';
444+
try {
445+
const fmaData = JSON.parse(fs.readFileSync('/tmp/fma-benchmark-results.json', 'utf8'));
446+
fmaRows = `
447+
| **FMA Actuation** | |
448+
| Cold starts | ${fmaData.coldStarts} |
449+
| Avg cold actuation | ${fmtMs(fmaData.avgColdActuationMs)} |
450+
| Warm hits (sleeping woken) | ${fmaData.warmHits} |
451+
| Avg warm actuation | ${fmtMs(fmaData.avgWarmActuationMs)} |
452+
| Hit rate | ${(fmaData.hitRate * 100).toFixed(1)}% |
453+
| Total iterations | ${fmaData.totalIterations} |`;
454+
} catch (e) {
455+
console.log(`Could not read FMA results: ${e.message}`);
456+
}
356457
357458
resultsTable = `| Metric | Value |
358459
|--------|-------|
@@ -362,7 +463,7 @@ jobs:
362463
| Avg KV cache usage | ${data.avgKVCacheUsage.toFixed(3)} |
363464
| Avg queue depth | ${data.avgQueueDepth.toFixed(1)} |
364465
| Replica oscillation (σ) | ${data.replicaOscillation.toFixed(2)} |
365-
| Total duration | ${data.totalDurationSec.toFixed(0)}s |`;
466+
| Total duration | ${data.totalDurationSec.toFixed(0)}s |${fmaRows}`;
366467
} catch (e) {
367468
console.log(`Could not read results: ${e.message}`);
368469
}
@@ -1204,7 +1305,6 @@ jobs:
12041305
script: |
12051306
const prHeadSha = '${{ needs.gate.outputs.pr_head_sha }}';
12061307
const platform = '${{ needs.gate.outputs.platform }}';
1207-
12081308
let benchResult;
12091309
if (platform === 'openshift') {
12101310
benchResult = '${{ needs.benchmark-openshift.result }}';

Makefile

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ test-benchmark: manifests generate fmt vet ## Run benchmark tests (scale-up-late
282282
SCALER_BACKEND=$(SCALER_BACKEND) \
283283
MODEL_ID=$(MODEL_ID) \
284284
go test ./test/benchmark/ -timeout 75m -v -ginkgo.v \
285-
-ginkgo.label-filter="phase3a"; \
285+
-ginkgo.label-filter="phase3a || fma"; \
286286
TEST_EXIT_CODE=$$?; \
287287
echo ""; \
288288
echo "=========================================="; \
@@ -311,6 +311,41 @@ nightly-deploy-wva-guide: ## Nightly: full WVA+llm-d stack from job env (WVA_NS
311311
else \
312312
LLM_D_NIGHTLY_PLATFORM=cks bash "$(CURDIR)/deploy/lib/llm_d_nightly_install.sh" "$(CURDIR)"; \
313313
fi
314+
# FMA benchmark targets
315+
FMA_REPO_PATH ?=
316+
FMA_IMAGE_REGISTRY ?= ghcr.io/llm-d-incubation/llm-d-fast-model-actuation
317+
FMA_IMAGE_TAG ?= v0.5.1-alpha.6
318+
319+
.PHONY: deploy-fma
320+
deploy-fma: ## Deploy FMA controllers (requires FMA_REPO_PATH)
321+
@echo "Deploying FMA controllers..."
322+
cd $(FMA_REPO_PATH) && \
323+
FMA_NAMESPACE=$(E2E_EMULATED_LLMD_NAMESPACE) \
324+
FMA_CHART_INSTANCE_NAME=fma \
325+
CONTAINER_IMG_REG=$(FMA_IMAGE_REGISTRY) \
326+
IMAGE_TAG=$(FMA_IMAGE_TAG) \
327+
NODE_VIEW_CLUSTER_ROLE=create/please \
328+
bash test/e2e/deploy_fma.sh
329+
330+
.PHONY: test-benchmark-fma
331+
test-benchmark-fma: manifests generate fmt vet ## Run FMA actuation benchmark (requires FMA controllers deployed)
332+
@echo "Running FMA actuation benchmark..."
333+
KUBECONFIG=$(KUBECONFIG) \
334+
ENVIRONMENT=$(ENVIRONMENT) \
335+
WVA_NAMESPACE=$(CONTROLLER_NAMESPACE) \
336+
LLMD_NAMESPACE=$(E2E_EMULATED_LLMD_NAMESPACE) \
337+
MONITORING_NAMESPACE=$(E2E_MONITORING_NAMESPACE) \
338+
USE_SIMULATOR=$(USE_SIMULATOR) \
339+
SCALER_BACKEND=$(SCALER_BACKEND) \
340+
MODEL_ID=$(MODEL_ID) \
341+
go test ./test/benchmark/ -timeout 30m -v -ginkgo.v \
342+
-ginkgo.label-filter="benchmark && fma"; \
343+
TEST_EXIT_CODE=$$?; \
344+
echo ""; \
345+
echo "=========================================="; \
346+
echo "FMA benchmark execution completed. Exit code: $$TEST_EXIT_CODE"; \
347+
echo "=========================================="; \
348+
exit $$TEST_EXIT_CODE
314349

315350
.PHONY: lint
316351
lint: golangci-lint ## Run golangci-lint linter

deploy/install.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ DEPLOY_PROMETHEUS_ADAPTER=${DEPLOY_PROMETHEUS_ADAPTER:-true}
8686
# typically create their own CRs). Set DEPLOY_VA=true and DEPLOY_HPA=true for a demo stack.
8787
DEPLOY_VA=${DEPLOY_VA:-false}
8888
DEPLOY_HPA=${DEPLOY_HPA:-false}
89+
DEPLOY_FMA=${DEPLOY_FMA:-false}
90+
FMA_REPO_PATH=${FMA_REPO_PATH:-""}
91+
FMA_NAMESPACE=${FMA_NAMESPACE:-${LLMD_NS:-llm-d-inference-scheduler}}
92+
FMA_CHART_INSTANCE_NAME=${FMA_CHART_INSTANCE_NAME:-"fma"}
93+
FMA_IMAGE_REGISTRY=${FMA_IMAGE_REGISTRY:-"ghcr.io/llm-d-incubation/llm-d-fast-model-actuation"}
94+
FMA_IMAGE_TAG=${FMA_IMAGE_TAG:-"v0.5.1-alpha.6"}
8995
HPA_STABILIZATION_SECONDS=${HPA_STABILIZATION_SECONDS:-240}
9096
# HPA minReplicas: 0 enables scale-to-zero (requires HPAScaleToZero feature gate)
9197
# Default to 1 for safety; set to 0 for scale-to-zero testing
@@ -157,6 +163,8 @@ source "$DEPLOY_LIB_DIR/scaler_runtime.sh"
157163
source "$DEPLOY_LIB_DIR/infra_llmd.sh"
158164
# shellcheck source=lib/infra_wva.sh
159165
source "$DEPLOY_LIB_DIR/infra_wva.sh"
166+
# shellcheck source=lib/infra_fma.sh
167+
source "$DEPLOY_LIB_DIR/infra_fma.sh"
160168
# shellcheck source=lib/infra_monitoring.sh
161169
source "$DEPLOY_LIB_DIR/infra_monitoring.sh"
162170
# shellcheck source=lib/cleanup.sh

deploy/lib/cleanup.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@ cleanup() {
119119
undeploy_prometheus_adapter
120120
fi
121121

122+
if [ "$DEPLOY_FMA" = "true" ]; then
123+
undeploy_fma_controllers
124+
fi
125+
122126
if [ "$DEPLOY_LLM_D" = "true" ]; then
123127
undeploy_llm_d_infrastructure
124128
fi
@@ -149,6 +153,7 @@ cleanup() {
149153
echo "Removed components:"
150154
[ "$SCALER_BACKEND" = "keda" ] && echo "✓ KEDA"
151155
[ "$DEPLOY_PROMETHEUS_ADAPTER" = "true" ] && echo "✓ Prometheus Adapter"
156+
[ "$DEPLOY_FMA" = "true" ] && echo "✓ FMA Controllers"
152157
[ "$DEPLOY_LLM_D" = "true" ] && echo "✓ llm-d Infrastructure"
153158
[ "$DEPLOY_WVA" = "true" ] && echo "✓ WVA Controller"
154159
[ "$DEPLOY_PROMETHEUS" = "true" ] && echo "✓ Prometheus Stack"

deploy/lib/infra_fma.sh

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env bash
2+
#
3+
# FMA (Fast Model Actuation) deployment functions.
4+
# Deploys FMA CRDs and controllers by calling FMA's own deploy_fma.sh script.
5+
#
6+
# Requires vars: FMA_REPO_PATH, FMA_NAMESPACE, FMA_CHART_INSTANCE_NAME,
7+
# FMA_IMAGE_REGISTRY, FMA_IMAGE_TAG
8+
9+
deploy_fma_controllers() {
10+
log_info "Deploying FMA (Fast Model Actuation) controllers..."
11+
12+
if [ -z "$FMA_REPO_PATH" ]; then
13+
log_error "FMA_REPO_PATH must be set when DEPLOY_FMA=true"
14+
exit 1
15+
fi
16+
if [ ! -f "$FMA_REPO_PATH/test/e2e/deploy_fma.sh" ]; then
17+
log_error "FMA deploy script not found at $FMA_REPO_PATH/test/e2e/deploy_fma.sh"
18+
exit 1
19+
fi
20+
21+
pushd "$FMA_REPO_PATH" > /dev/null
22+
FMA_NAMESPACE="$FMA_NAMESPACE" \
23+
FMA_CHART_INSTANCE_NAME="$FMA_CHART_INSTANCE_NAME" \
24+
CONTAINER_IMG_REG="$FMA_IMAGE_REGISTRY" \
25+
IMAGE_TAG="$FMA_IMAGE_TAG" \
26+
NODE_VIEW_CLUSTER_ROLE="${FMA_NODE_VIEW_CLUSTER_ROLE:-create/please}" \
27+
HELM_EXTRA_ARGS="${FMA_HELM_EXTRA_ARGS:-}" \
28+
bash test/e2e/deploy_fma.sh
29+
popd > /dev/null
30+
31+
log_success "FMA controllers deployed successfully"
32+
}
33+
34+
undeploy_fma_controllers() {
35+
log_info "Uninstalling FMA controllers..."
36+
37+
helm uninstall "$FMA_CHART_INSTANCE_NAME" -n "$FMA_NAMESPACE" 2>/dev/null || \
38+
log_warning "FMA not found or already uninstalled"
39+
40+
# Remove FMA CRDs
41+
kubectl delete crd inferenceserverconfigs.fma.llm-d.ai --ignore-not-found 2>/dev/null || true
42+
kubectl delete crd launcherconfigs.fma.llm-d.ai --ignore-not-found 2>/dev/null || true
43+
kubectl delete crd launcherpopulationpolicies.fma.llm-d.ai --ignore-not-found 2>/dev/null || true
44+
45+
log_success "FMA controllers uninstalled"
46+
}

deploy/lib/install_core.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,13 @@ main() {
136136
log_info "Skipping llm-d deployment (DEPLOY_LLM_D=false)"
137137
fi
138138

139+
# Deploy FMA controllers
140+
if [ "$DEPLOY_FMA" = "true" ]; then
141+
deploy_fma_controllers
142+
else
143+
log_info "Skipping FMA deployment (DEPLOY_FMA=false)"
144+
fi
145+
139146
deploy_scaler_backend
140147

141148
# Verify deployment

go.mod

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@ module github.com/llm-d/llm-d-workload-variant-autoscaler
33
go 1.25.0
44

55
require (
6+
github.com/llm-d-incubation/llm-d-fast-model-actuation v0.5.1-alpha.6
67
github.com/onsi/ginkgo/v2 v2.28.1
78
github.com/onsi/gomega v1.39.0
89
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.89.0
910
github.com/spf13/viper v1.21.0
1011
github.com/stretchr/testify v1.11.1
1112
gonum.org/v1/gonum v0.17.0
12-
k8s.io/apimachinery v0.34.5
13-
k8s.io/client-go v0.34.5
13+
k8s.io/apimachinery v0.34.6
14+
k8s.io/client-go v0.34.6
1415
sigs.k8s.io/controller-runtime v0.22.5
1516
sigs.k8s.io/gateway-api-inference-extension v1.2.1
1617
sigs.k8s.io/lws v0.8.0
@@ -34,7 +35,7 @@ require (
3435
go.yaml.in/yaml/v3 v3.0.4 // indirect
3536
golang.org/x/mod v0.32.0 // indirect
3637
sigs.k8s.io/randfill v1.0.0 // indirect
37-
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 // indirect
38+
sigs.k8s.io/structured-merge-diff/v6 v6.3.2 // indirect
3839
)
3940

4041
require (
@@ -106,7 +107,7 @@ require (
106107
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
107108
gopkg.in/inf.v0 v0.9.1 // indirect
108109
gopkg.in/yaml.v3 v3.0.1
109-
k8s.io/api v0.34.5
110+
k8s.io/api v0.34.6
110111
k8s.io/apiextensions-apiserver v0.34.3 // indirect
111112
k8s.io/apiserver v0.34.3 // indirect
112113
k8s.io/component-base v0.34.3 // indirect

go.sum

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
9999
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
100100
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
101101
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
102+
github.com/llm-d-incubation/llm-d-fast-model-actuation v0.5.1-alpha.6 h1:8Ka2/iz3tdWjMHN5QD32eW9Q9qYT6YEgMWwxHgR9oCg=
103+
github.com/llm-d-incubation/llm-d-fast-model-actuation v0.5.1-alpha.6/go.mod h1:YfZTyPDAJz+j5ZaCVw0WLN+wf8u0md12d3+YlTimdsE=
102104
github.com/llm-inferno/kalman-filter v0.1.2 h1:ALAs+ubQwyYAPBnkhMPC/QPd/p/Zo2LU+zYaGKCC49g=
103105
github.com/llm-inferno/kalman-filter v0.1.2/go.mod h1:dMqmiUHAJch+UvgnAROf1j3Wlw0t7Flgy3uXsUwHmVk=
104106
github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
@@ -282,16 +284,16 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
282284
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
283285
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
284286
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
285-
k8s.io/api v0.34.5 h1:+cFkROLIixuQqUZhxizqJKfoT4iwAJneG7NQwqWYyIU=
286-
k8s.io/api v0.34.5/go.mod h1:0RmYc0hpIHEA5s7AyzcPp6j62Z0tRZ+Y7mFFZeXPBuI=
287+
k8s.io/api v0.34.6 h1:0ReeOHQfV9SwQ8CMOHkPbM/GscIT3gN2qh463TOEEk4=
288+
k8s.io/api v0.34.6/go.mod h1:u6eOg5ckbO2DUKiyVp7mUMVIA+qZZdW2oyKDhs8nXec=
287289
k8s.io/apiextensions-apiserver v0.34.3 h1:p10fGlkDY09eWKOTeUSioxwLukJnm+KuDZdrW71y40g=
288290
k8s.io/apiextensions-apiserver v0.34.3/go.mod h1:aujxvqGFRdb/cmXYfcRTeppN7S2XV/t7WMEc64zB5A0=
289-
k8s.io/apimachinery v0.34.5 h1:vXJoeBDaW4D9mayqjP1CrKH8kHyucNRvaLjDJaJOc08=
290-
k8s.io/apimachinery v0.34.5/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
291+
k8s.io/apimachinery v0.34.6 h1:Y/ZNX0Mf1E+CT8clgFzLIkOhkbRLTSHqv6+eJnMJaoQ=
292+
k8s.io/apimachinery v0.34.6/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
291293
k8s.io/apiserver v0.34.3 h1:uGH1qpDvSiYG4HVFqc6A3L4CKiX+aBWDrrsxHYK0Bdo=
292294
k8s.io/apiserver v0.34.3/go.mod h1:QPnnahMO5C2m3lm6fPW3+JmyQbvHZQ8uudAu/493P2w=
293-
k8s.io/client-go v0.34.5 h1:eZiO7gq+FfrB8hR7/Z5erA+QEbShtp4DMgJdboEzwhY=
294-
k8s.io/client-go v0.34.5/go.mod h1:olcW68aK21BJeIWNXrreRNeZJJfyIbxJ98FYNN/WC5Y=
295+
k8s.io/client-go v0.34.6 h1:8aF4tJiZolSdliT5nhJnBx49Om2ET3Tn3/JKKpJk4gI=
296+
k8s.io/client-go v0.34.6/go.mod h1:ZntANq4HsaiOD0rIhLHTdZT/aLkv4NVyI/glqocESTQ=
295297
k8s.io/component-base v0.34.3 h1:zsEgw6ELqK0XncCQomgO9DpUIzlrYuZYA0Cgo+JWpVk=
296298
k8s.io/component-base v0.34.3/go.mod h1:5iIlD8wPfWE/xSHTRfbjuvUul2WZbI2nOUK65XL0E/c=
297299
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
@@ -312,7 +314,7 @@ sigs.k8s.io/lws v0.8.0 h1:DdhJ8QabwTfWgbgaHH2gdf8twliioHaoSfmDXRYEVU0=
312314
sigs.k8s.io/lws v0.8.0/go.mod h1:NEZk0ujEAzmDMys8HBh6aRVVK3tOIay/gv2qlU6HJdQ=
313315
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
314316
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
315-
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 h1:2WOzJpHUBVrrkDjU4KBT8n5LDcj824eX0I5UKcgeRUs=
316-
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
317+
sigs.k8s.io/structured-merge-diff/v6 v6.3.2 h1:kwVWMx5yS1CrnFWA/2QHyRVJ8jM6dBA80uLmm0wJkk8=
318+
sigs.k8s.io/structured-merge-diff/v6 v6.3.2/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
317319
sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
318320
sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=

0 commit comments

Comments
 (0)