Skip to content

Update AppWrapper website for Kueue 0.7 enhancements #185

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 1, 2024
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
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@ designed to smoothly interoperate with
[Kueue](https://kueue.sigs.k8s.io). They provide a flexible and
workload-agnostic mechanism for enabling Kueue to manage a group of
Kubernetes resources as a single logical unit without requiring any
Kueue-specific support by the controllers of those resources. If the
operators for some of the contained resources are Kueue-aware, the
AppWrapper operator ensures that when Kueue admits an AppWrapper for
execution, all of the necessary information will be propagated
to cause the child's Kueue-enabled operator to admit it as well.
Kueue-specific support by the controllers of those resources.
Kueue can be configured to recognize AppWrappers as an
[externalFramework](https://kueue.sigs.k8s.io/docs/tasks/dev/integrate_a_custom_job/#building-an-external-integration),
thus ensuring that if you have enabled Kueue's `manageJobsWithoutQueueName`
option, admission decisions made for the AppWrapper will be properly
propagated to its contained resources.
For a more detailed description of the overall design, see the
[Architecture](https://project-codeflare.github.io/appwrapper/arch-controller/)
section of our website.
Expand Down Expand Up @@ -43,6 +44,10 @@ The controller runs in the `appwrapper-system` namespace.

Read the [Quick Start Guide](https://project-codeflare.github.io/appwrapper/quick-start/) to learn more.

If you have modified the default configuration of Kueue to set `manageJobsWithoutQueueName` to true,
then you must also apply [this patch](./hack/kueue-patches/02-aw-external-frameworks.txt) to your
Kueue installation.

## Usage

For example of AppWrapper usage, browse our [Samples](./samples) directory or
Expand Down
15 changes: 9 additions & 6 deletions site/_pages/arch-controller.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,16 @@ the status of the AppWrapper to the format expected by Kueue.
See [workload_controller.go]({{ site.gh_main_url }}/internal/controller/workload/workload_controller.go)
for the implementation.

A small additional piece of logic is currently needed to generalize
Kueue's ability to recognize parent/children relationships and ensure
that admission by Kueue of the parent AppWrapper will be propagated to
its immediate children.
To ensure smooth interoperation with all possible configurations of Kueue,
it is recommended to register AppWrappers as an
[externalFramework](https://kueue.sigs.k8s.io/docs/tasks/dev/integrate_a_custom_job/#building-an-external-integration)
with Kueue. Our script [deploy-kueue.sh]({{ site.gh_main_url }}/hack/deploy-kueue.sh) automates
this. The script accomplishes the following tasks:

1. Adds the ability to get, list, and watch AppWrappers to the RBACs for Kueue's manager role.
2. Adds `"AppWrapper.v1beta2.workload.codeflare.dev"` to the list of `externalFrameworks` in
Kueue's manager configuration.

See [child_admission_controller.go]({{ site.gh_main_url }}/internal/controller/workload/child_admission_controller.go)
for the implementation.

#### Framework Controller

Expand Down
2 changes: 1 addition & 1 deletion site/_pages/dev-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ classes: wide

### Prerequisites

You'll need `go` v1.21.0+ installed on your development machine.
You'll need `go` v1.22.0+ installed on your development machine.

You'll need a container runtime and cli (eg `docker` or `rancher-desktop`).

Expand Down