Skip to content

Commit

Permalink
AppWrapper integration (kubernetes-sigs#3953)
Browse files Browse the repository at this point in the history
* bare bones appwrapper integration (no tests)

* basic appwrapper_controller tests

* appwrapper integration tests

* appwrapper documentation

* linter fixes

* update appwrapper rbacs

* review comment: log error and add TODO with issue link

* simple e2e test for appwrapper integration

* fix typo in addition to run-test-e2e target

* enable appwrapper framework in e2e tests

* add appwrapper to scheme for e2e tests

* improve assertions in appwrapper e2e test

* work around creationTimestamp serialization issue

* add assert that appwrapper reaches running state

* wrapped job needs suspend to be false

* review comment: simplify/shorten appwrapper e2e test
  • Loading branch information
dgrove-oss authored and FillZpp committed Feb 5, 2025
1 parent c5700b3 commit e86b990
Show file tree
Hide file tree
Showing 115 changed files with 6,193 additions and 17,187 deletions.
22 changes: 20 additions & 2 deletions Makefile-deps.mk
Original file line number Diff line number Diff line change
Expand Up @@ -143,10 +143,28 @@ cluster-autoscaler-crd: ## Copy the CRDs from the cluster-autoscaler to the dep-
mkdir -p $(EXTERNAL_CRDS_DIR)/cluster-autoscaler/
cp -f $(CLUSTER_AUTOSCALER_ROOT)/config/crd/* $(EXTERNAL_CRDS_DIR)/cluster-autoscaler/

APPWRAPPER_ROOT = $(shell $(GO_CMD) list -m -mod=readonly -f "{{.Dir}}" github.com/project-codeflare/appwrapper)
APPWRAPPER_VERSION = $(shell $(GO_CMD) list -m -f "{{.Version}}" github.com/project-codeflare/appwrapper)
.PHONY: appwrapper-crd
appwrapper-crd: ## Copy the CRDs from the appwrapper to the dep-crds directory.
mkdir -p $(EXTERNAL_CRDS_DIR)/appwrapper-crds/
cp -f $(APPWRAPPER_ROOT)/config/crd/bases/* $(EXTERNAL_CRDS_DIR)/appwrapper-crds/

.PHONY: appwrapper-manifests
appwrapper-manifests: kustomize ## Copy whole manifests folder from the appwrapper controller to the dep-crds directory.
## Full version of the manifest required for e2e tests.
if [ -d "$(EXTERNAL_CRDS_DIR)/appwrapper" ]; then \
chmod -R u+w "$(EXTERNAL_CRDS_DIR)/appwrapper" && \
rm -rf "$(EXTERNAL_CRDS_DIR)/appwrapper"; \
fi
mkdir -p "$(EXTERNAL_CRDS_DIR)/appwrapper"
cp -rf "$(APPWRAPPER_ROOT)/config" "$(EXTERNAL_CRDS_DIR)/appwrapper"
cd "$(EXTERNAL_CRDS_DIR)/appwrapper/config/manager" && chmod u+w kustomization.yaml && $(KUSTOMIZE) edit set image controller=quay.io/ibm/appwrapper:${APPWRAPPER_VERSION} && chmod u-w kustomization.yaml

.PHONY: dep-crds
dep-crds: mpi-operator-crd kf-training-operator-crd ray-operator-crd jobset-operator-crd cluster-autoscaler-crd kf-training-operator-manifests ## Copy the CRDs from the external operators to the dep-crds directory.
dep-crds: mpi-operator-crd kf-training-operator-crd ray-operator-crd jobset-operator-crd cluster-autoscaler-crd appwrapper-crd appwrapper-manifests kf-training-operator-manifests ## Copy the CRDs from the external operators to the dep-crds directory.
@echo "Copying CRDs from external operators to dep-crds directory"

.PHONY: kueuectl-docs
kueuectl-docs:
$(GO_BUILD_ENV) $(GO_CMD) build -ldflags="$(LD_FLAGS)" -o $(PROJECT_DIR)/bin/kueuectl-docs ./cmd/kueuectl-docs/main.go
$(GO_BUILD_ENV) $(GO_CMD) build -ldflags="$(LD_FLAGS)" -o $(PROJECT_DIR)/bin/kueuectl-docs ./cmd/kueuectl-docs/main.go
4 changes: 3 additions & 1 deletion Makefile-test.mk
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ IMAGE_NAME := kueue
IMAGE_REPO ?= $(IMAGE_REGISTRY)/$(IMAGE_NAME)
IMAGE_TAG ?= $(IMAGE_REPO):$(GIT_TAG)

# JobSet Version
# Versions for external controllers
APPWRAPPER_VERSION = $(shell $(GO_CMD) list -m -f "{{.Version}}" github.com/project-codeflare/appwrapper)
JOBSET_VERSION = $(shell $(GO_CMD) list -m -f "{{.Version}}" sigs.k8s.io/jobset)
KUBEFLOW_VERSION = $(shell $(GO_CMD) list -m -f "{{.Version}}" github.com/kubeflow/training-operator)
KUBEFLOW_MPI_VERSION = $(shell $(GO_CMD) list -m -f "{{.Version}}" github.com/kubeflow/mpi-operator)
Expand Down Expand Up @@ -108,6 +109,7 @@ run-test-e2e-%: FORCE
@echo Running e2e for k8s ${K8S_VERSION}
E2E_KIND_VERSION="kindest/node:v$(K8S_VERSION)" KIND_CLUSTER_NAME=$(KIND_CLUSTER_NAME) CREATE_KIND_CLUSTER=$(CREATE_KIND_CLUSTER) \
ARTIFACTS="$(ARTIFACTS)/$@" IMAGE_TAG=$(IMAGE_TAG) GINKGO_ARGS="$(GINKGO_ARGS)" \
APPWRAPPER_VERSION=$(APPWRAPPER_VERSION) \
JOBSET_VERSION=$(JOBSET_VERSION) \
KIND_CLUSTER_FILE="kind-cluster.yaml" E2E_TARGET_FOLDER="singlecluster" \
./hack/e2e-test.sh
Expand Down
25 changes: 25 additions & 0 deletions charts/kueue/templates/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -310,3 +310,28 @@ rules:
- get
- list
- watch
- apiGroups:
- workload.codeflare.dev
resources:
- appwrappers
verbs:
- get
- list
- patch
- update
- watch
- apiGroups:
- workload.codeflare.dev
resources:
- appwrappers/finalizers
verbs:
- get
- update
- apiGroups:
- workload.codeflare.dev
resources:
- appwrappers/status
verbs:
- get
- patch
- update
1 change: 1 addition & 0 deletions config/components/manager/controller_manager_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ integrations:
- "kubeflow.org/pytorchjob"
- "kubeflow.org/tfjob"
- "kubeflow.org/xgboostjob"
- "codeflare.dev/appwrapper"
# - "pod"
# - "deployment" # requires enabling pod integration
# - "statefulset" # requires enabling pod integration
Expand Down
25 changes: 25 additions & 0 deletions config/components/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -309,3 +309,28 @@ rules:
- get
- list
- watch
- apiGroups:
- workload.codeflare.dev
resources:
- appwrappers
verbs:
- get
- list
- patch
- update
- watch
- apiGroups:
- workload.codeflare.dev
resources:
- appwrappers/finalizers
verbs:
- get
- update
- apiGroups:
- workload.codeflare.dev
resources:
- appwrappers/status
verbs:
- get
- patch
- update
9 changes: 5 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ require (
github.com/onsi/ginkgo/v2 v2.22.2
github.com/onsi/gomega v1.36.2
github.com/open-policy-agent/cert-controller v0.12.0
github.com/project-codeflare/appwrapper v1.0.0
github.com/prometheus/client_golang v1.20.5
github.com/prometheus/client_model v0.6.1
github.com/ray-project/kuberay/ray-operator v1.2.2
Expand Down Expand Up @@ -52,6 +53,7 @@ require (
github.com/coreos/go-semver v0.3.1 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/distribution/reference v0.5.0 // indirect
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect
Expand Down Expand Up @@ -93,14 +95,14 @@ require (
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/common v0.57.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/stoewer/go-strcase v1.3.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xlab/treeprint v1.2.0 // indirect
go.etcd.io/etcd/api/v3 v3.5.14 // indirect
Expand All @@ -115,7 +117,6 @@ require (
go.opentelemetry.io/otel/sdk v1.28.0 // indirect
go.opentelemetry.io/otel/trace v1.28.0 // indirect
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.31.0 // indirect
Expand Down Expand Up @@ -145,6 +146,6 @@ require (
k8s.io/kms v0.31.4 // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/kustomize/api v0.17.3 // indirect
sigs.k8s.io/kustomize/kyaml v0.17.2 // indirect
sigs.k8s.io/kustomize/api v0.18.0 // indirect
sigs.k8s.io/kustomize/kyaml v0.18.1 // indirect
)
Loading

0 comments on commit e86b990

Please sign in to comment.