Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
73ce834
KEP-766: Add DisaggregatedSet controller implementation
hasB4K Mar 9, 2026
33e4098
feat(disaggregatedset): propagate user labels/annotations to LWS and …
hasB4K Mar 10, 2026
94c29d1
feat(disaggregatedset): Replace ServiceTemplate with automatic headle…
hasB4K Mar 14, 2026
979e274
feat(disaggregatedset): Rename "side" terminology to "phase" througho…
hasB4K Mar 14, 2026
681ab32
feat(disaggregatedset): Refactor API from hardcoded prefill/decode to…
hasB4K Mar 15, 2026
a9e569c
feat(disaggregatedset): Add phasePolicy field and progressive rollout…
hasB4K Mar 15, 2026
81cfa97
feat(disaggregatedset): Refactor e2e tests with kubectl fluent builde…
hasB4K Mar 16, 2026
233b6ad
feat(disaggregatedset): Port planner fix: source-aware surge baseline…
hasB4K Mar 16, 2026
4b675dc
feat(disaggregatedset): Verify labels and annotations propagate to pods
hasB4K Mar 16, 2026
91cf793
feat(disaggregatedset): Add Metadata field for Kueue/exclusive-topolo…
hasB4K Mar 17, 2026
b81f2e5
feat(disaggregatedset): Add disaggregatedset tests to make test and t…
hasB4K Mar 17, 2026
c769464
feat(disaggregatedset)!: Remove PhasePolicy field
hasB4K Mar 17, 2026
08611ad
fix(disaggregatedset): Fix Kind not found in e2e tests
hasB4K Mar 17, 2026
89cc3e9
feat(disaggregatedset): Add hack/e2e-test.sh for Prow CI compatibility
hasB4K Mar 17, 2026
54bc9e7
feat(disaggregatedset): Embed LeaderWorkerSetSpec in DisaggregatedPha…
hasB4K Mar 18, 2026
6d028a3
feat(disaggregatedset): Refactor RollingUpdateConfig and split Comput…
hasB4K Mar 18, 2026
e1be1ea
chore(disaggregatedset): Move plan-steps utility to hack/
hasB4K Mar 18, 2026
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
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ vet: ## Run go vet against code.
test: manifests fmt vet envtest gotestsum ## Run tests.
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" \
$(GOTESTSUM) --junitfile $(ARTIFACTS)/junit.xml -- ./api/... ./pkg/... ./cmd/... -coverprofile $(ARTIFACTS)/cover.out
$(MAKE) -C disaggregatedset test

KIND = $(shell pwd)/bin/kind
.PHONY: kind
Expand All @@ -175,6 +176,7 @@ test-integration: manifests fmt vet envtest ginkgo ## Run integration tests.
.PHONY: test-e2e
test-e2e: kustomize manifests fmt vet envtest ginkgo kind-image-build
E2E_KIND_VERSION=$(E2E_KIND_VERSION) KIND_CLUSTER_NAME=$(KIND_CLUSTER_NAME) KIND=$(KIND) KUBECTL=$(KUBECTL) KUSTOMIZE=$(KUSTOMIZE) GINKGO=$(GINKGO) USE_EXISTING_CLUSTER=$(USE_EXISTING_CLUSTER) IMAGE_TAG=$(IMG) ARTIFACTS=$(ARTIFACTS) ./hack/e2e-test.sh
$(MAKE) -C disaggregatedset test-e2e KIND=$(KIND) KUBECTL=$(KUBECTL) E2E_KIND_VERSION=$(E2E_KIND_VERSION) ARTIFACTS=$(ARTIFACTS)

.PHONY: test-e2e-cert-manager
test-e2e-cert-manager: kustomize manifests fmt vet envtest ginkgo kind-image-build
Expand Down
35 changes: 35 additions & 0 deletions disaggregatedset/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file
# Ignore test files
*_test.go

# Ignore test directories
test/

# Ignore build output
bin/

# Ignore git
.git/
.gitignore

# Ignore IDE
.idea/
.vscode/

# Ignore Docker
Dockerfile
.dockerignore

# Ignore CI
.github/

# Ignore docs
*.md
LICENSE

# Ignore other non-essential files
Makefile
*.yaml
*.yml
config/
hack/
30 changes: 30 additions & 0 deletions disaggregatedset/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
bin/*
Dockerfile.cross

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Go workspace file
go.work

# Kubernetes Generated files - skip generated files, except for vendored files
!vendor/**/zz_generated.*

# editor and IDE paraphernalia
.idea
.vscode
*.swp
*.swo
*~

# Kubeconfig might contain secrets
*.kubeconfig
52 changes: 52 additions & 0 deletions disaggregatedset/.golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
version: "2"
run:
allow-parallel-runners: true
linters:
default: none
enable:
- copyloopvar
- dupl
- errcheck
- ginkgolinter
- goconst
- gocyclo
- govet
- ineffassign
- lll
- misspell
- nakedret
- prealloc
- revive
- staticcheck
- unconvert
- unparam
- unused
settings:
revive:
rules:
- name: comment-spacings
- name: import-shadowing
exclusions:
generated: lax
rules:
- linters:
- lll
path: api/*
- linters:
- dupl
- lll
path: internal/*
paths:
- third_party$
- builtin$
- examples$
formatters:
enable:
- gofmt
- goimports
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$
31 changes: 31 additions & 0 deletions disaggregatedset/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Build the manager binary
FROM golang:1.25 AS builder
ARG TARGETOS
ARG TARGETARCH

WORKDIR /workspace
# Copy the Go Modules manifests
COPY go.mod go.mod
COPY go.sum go.sum
# cache deps before building and copying source so that we don't need to re-download as much
# and so that source changes don't invalidate our downloaded layer
RUN go mod download

# Copy the Go source (relies on .dockerignore to filter)
COPY . .

# Build
# the GOARCH has no default value to allow the binary to be built according to the host where the command
# was called. For example, if we call make docker-build in a local env which has the Apple Silicon M1 SO
# the docker BUILDPLATFORM arg will be linux/arm64 when for Apple x86 it will be linux/amd64. Therefore,
# by leaving it empty we can ensure that the container and binary shipped on it will have the same platform.
RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager cmd/main.go

# Use distroless as minimal base image to package the manager binary
# Refer to https://github.com/GoogleContainerTools/distroless for more details
FROM gcr.io/distroless/static:nonroot
WORKDIR /
COPY --from=builder /workspace/manager .
USER 65532:65532

ENTRYPOINT ["/manager"]
Loading