Skip to content
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

rollouts: add package cluster matcher #3700

Merged

Conversation

ChristopherFry
Copy link
Contributor

This pull request adds package cluster matching to the rollouts proof of concept.

Copy link
Contributor

@droot droot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Minor comment.

env, err := cel.NewEnv(
cel.Declarations(
decls.NewVar("cluster", decls.Dyn),
decls.NewVar("rolloutPackage", decls.Dyn),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we rename rolloutPackage to just package ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately package is a resolved word in CEL. I'm up for other suggestions though. rolloutPackage is a little wordy.


allClusterPackages := []ClusterPackages{}

for _, cluster := range clusters {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I think we can constructs list of celCluster and list of celPackages separately and then loop over to run matchers. We can avoid costs of constructing celPackages for each clusters.

@ChristopherFry ChristopherFry merged commit 8e4315d into kptdev:feature-rollouts Dec 22, 2022
@ChristopherFry ChristopherFry deleted the cfry/rollouts-cel branch December 22, 2022 02:33
droot pushed a commit to droot/kpt that referenced this pull request Jan 24, 2023
droot added a commit that referenced this pull request Jan 24, 2023
* porch: don't save empty patches (#3695)

* docs: fixes for some minor documentation typos (#3699)

* docs: Update the kpt book with more details about namespaces and RBAC for porch (#3692)

* Log enabled controllers and warn if no controllers are enabled (#3710)

Because the default is to enable no controllers, it is easy to
mistakenly start a no-op controller.

* Extract out common parse-package logic (#3711)

We had this code duplicated in a few places also.

* refactor pod warmup to avoid vet warning (#3713)

By refactoring the parallel operation into a separate function, it
should be easier to read and we avoid a loop-closure go-tcha.

* Bump json5 from 2.2.0 to 2.2.3 in /site (#3717)

Bumps [json5](https://github.com/json5/json5) from 2.2.0 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](json5/json5@v2.2.0...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* tests: add more logging around problematic test timeout (#3718)

Trying to figure out why this test keeps timing out.

* Refactor controller logic for getting RESTConfig to a remote cluster (#3712)

We had two copies, rationalize and take the best of each.

Also remove the HACK_ENABLE_LOOPBACK hack now that we can target remote clusters.

* add a deletion approval flow with a validation webhook (#3678)

* PackageVariant controller: implement pruning, deletionPolicy, and adoptionPolicy (#3701)

* e2e: add delay after registering Repository (#3741)

I believe this will help avoid the "failed to list resources" error
immediately after registering a repository.

* licensescan: fix ignore handling (#3740)

The previous logic did not work correctly.

* licensescan: Add licenses for more libraries. (#3736)

Updating our database with the latest libraries, as needed by some
other projects sharing this DB!

* Docs: Updating 'Developing in Go' (#3715)

* licensescan: Fix missing pipe character in README (#3739)

The command is not correct without it.

* RemoteRootSyncSet: able to specify a packageRef to a package (#3734)

This makes it easy to apply packages we create.

* chore: Upgrade cli-utils to v0.34.0 (#3746)

Upgrades cli-utils to v0.34.0 which contains an upgrade
to Go v1.18 and Kubernetes v1.25 resources.

This PR was origininally authored by rquitales
#3642

* rollouts: added top level directory

* rollouts: scaffolded the project using kubebuilder (#3689)

* rollouts: added cluster discovery and selection (#3696)

* Rollouts package discovery (#3697)

* rollouts: added remoterootsync API (#3698)

* rollouts: add package cluster matcher (#3700)

* rollouts: add AllAtOnce strategy (#3703)

* rollouts: allow packages to be discovered from multiple repositories (#3702)

* rollouts: rename packages git source to github (#3708)

* rollouts: allow the root directory of a repository to be synced (#3709)

* rollouts: add caching for discovered packages (#3706)

* rollouts: add rolling update strategy (#3714)

* rollouts: added API for ProgressiveRolloutStrategy (#3716)

* rollouts: refine package to cluster matcher (#3720)

* rollouts: implement progressive strategy (#3719)

* rollouts: update progressive strategy to pause after wave (#3721)

* rollouts: added skeleton CLI (#3724)

* rollouts: added skeleton CLI

* added table display

* rollouts: add rollout summary status (#3725)

* rollouts: tidy up go.mod/sum (#3726)

* rollouts: duplicate target fix (#3727)

* rollouts: sort cluster status list (#3728)

* rollouts: conditionally show wave status (#3729)

* rollouts: CLI now supports displaying waves and progress counts (#3730)

* rollouts: cli can now advance waves on progressive rollouts (#3731)

* rollouts: enable server side throttling for cli (#3732)

* rollouts: add container cluster watch (#3738)

* rollouts: delete remote root sync when no longer needed (#3742)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Natasha Sarkar <[email protected]>
Co-authored-by: James Brook <[email protected]>
Co-authored-by: Morten Torkildsen <[email protected]>
Co-authored-by: Justin Santa Barbara <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: abangser <[email protected]>
Co-authored-by: Christopher Fry <[email protected]>
droot pushed a commit to droot/kpt that referenced this pull request Feb 8, 2023
droot added a commit to droot/kpt that referenced this pull request Feb 8, 2023
* porch: don't save empty patches (kptdev#3695)

* docs: fixes for some minor documentation typos (kptdev#3699)

* docs: Update the kpt book with more details about namespaces and RBAC for porch (kptdev#3692)

* Log enabled controllers and warn if no controllers are enabled (kptdev#3710)

Because the default is to enable no controllers, it is easy to
mistakenly start a no-op controller.

* Extract out common parse-package logic (kptdev#3711)

We had this code duplicated in a few places also.

* refactor pod warmup to avoid vet warning (kptdev#3713)

By refactoring the parallel operation into a separate function, it
should be easier to read and we avoid a loop-closure go-tcha.

* Bump json5 from 2.2.0 to 2.2.3 in /site (kptdev#3717)

Bumps [json5](https://github.com/json5/json5) from 2.2.0 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](json5/json5@v2.2.0...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* tests: add more logging around problematic test timeout (kptdev#3718)

Trying to figure out why this test keeps timing out.

* Refactor controller logic for getting RESTConfig to a remote cluster (kptdev#3712)

We had two copies, rationalize and take the best of each.

Also remove the HACK_ENABLE_LOOPBACK hack now that we can target remote clusters.

* add a deletion approval flow with a validation webhook (kptdev#3678)

* PackageVariant controller: implement pruning, deletionPolicy, and adoptionPolicy (kptdev#3701)

* e2e: add delay after registering Repository (kptdev#3741)

I believe this will help avoid the "failed to list resources" error
immediately after registering a repository.

* licensescan: fix ignore handling (kptdev#3740)

The previous logic did not work correctly.

* licensescan: Add licenses for more libraries. (kptdev#3736)

Updating our database with the latest libraries, as needed by some
other projects sharing this DB!

* Docs: Updating 'Developing in Go' (kptdev#3715)

* licensescan: Fix missing pipe character in README (kptdev#3739)

The command is not correct without it.

* RemoteRootSyncSet: able to specify a packageRef to a package (kptdev#3734)

This makes it easy to apply packages we create.

* chore: Upgrade cli-utils to v0.34.0 (kptdev#3746)

Upgrades cli-utils to v0.34.0 which contains an upgrade
to Go v1.18 and Kubernetes v1.25 resources.

This PR was origininally authored by rquitales
kptdev#3642

* rollouts: added top level directory

* rollouts: scaffolded the project using kubebuilder (kptdev#3689)

* rollouts: added cluster discovery and selection (kptdev#3696)

* Rollouts package discovery (kptdev#3697)

* rollouts: added remoterootsync API (kptdev#3698)

* rollouts: add package cluster matcher (kptdev#3700)

* rollouts: add AllAtOnce strategy (kptdev#3703)

* rollouts: allow packages to be discovered from multiple repositories (kptdev#3702)

* rollouts: rename packages git source to github (kptdev#3708)

* rollouts: allow the root directory of a repository to be synced (kptdev#3709)

* rollouts: add caching for discovered packages (kptdev#3706)

* rollouts: add rolling update strategy (kptdev#3714)

* rollouts: added API for ProgressiveRolloutStrategy (kptdev#3716)

* rollouts: refine package to cluster matcher (kptdev#3720)

* rollouts: implement progressive strategy (kptdev#3719)

* rollouts: update progressive strategy to pause after wave (kptdev#3721)

* rollouts: added skeleton CLI (kptdev#3724)

* rollouts: added skeleton CLI

* added table display

* rollouts: add rollout summary status (kptdev#3725)

* rollouts: tidy up go.mod/sum (kptdev#3726)

* rollouts: duplicate target fix (kptdev#3727)

* rollouts: sort cluster status list (kptdev#3728)

* rollouts: conditionally show wave status (kptdev#3729)

* rollouts: CLI now supports displaying waves and progress counts (kptdev#3730)

* rollouts: cli can now advance waves on progressive rollouts (kptdev#3731)

* rollouts: enable server side throttling for cli (kptdev#3732)

* rollouts: add container cluster watch (kptdev#3738)

* rollouts: delete remote root sync when no longer needed (kptdev#3742)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Natasha Sarkar <[email protected]>
Co-authored-by: James Brook <[email protected]>
Co-authored-by: Morten Torkildsen <[email protected]>
Co-authored-by: Justin Santa Barbara <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: abangser <[email protected]>
Co-authored-by: Christopher Fry <[email protected]>
droot added a commit that referenced this pull request Feb 9, 2023
* rollouts: added top level directory

* rollouts: scaffolded the project using kubebuilder (#3689)

* rollouts: added cluster discovery and selection (#3696)

* Rollouts package discovery (#3697)

* rollouts: added remoterootsync API (#3698)

* rollouts: add package cluster matcher (#3700)

* rollouts: add AllAtOnce strategy (#3703)

* rollouts: allow packages to be discovered from multiple repositories (#3702)

* rollouts: rename packages git source to github (#3708)

* rollouts: allow the root directory of a repository to be synced (#3709)

* rollouts: add caching for discovered packages (#3706)

* rollouts: add rolling update strategy (#3714)

* rollouts: added API for ProgressiveRolloutStrategy (#3716)

* rollouts: refine package to cluster matcher (#3720)

* rollouts: implement progressive strategy (#3719)

* rollouts: update progressive strategy to pause after wave (#3721)

* rollouts: added skeleton CLI (#3724)

* rollouts: added skeleton CLI

* added table display

* rollouts: add rollout summary status (#3725)

* rollouts: tidy up go.mod/sum (#3726)

* rollouts: duplicate target fix (#3727)

* rollouts: sort cluster status list (#3728)

* rollouts: conditionally show wave status (#3729)

* rollouts: CLI now supports displaying waves and progress counts (#3730)

* rollouts: cli can now advance waves on progressive rollouts (#3731)

* rollouts: enable server side throttling for cli (#3732)

* rollouts: add container cluster watch (#3738)

* rollouts: delete remote root sync when no longer needed (#3742)

* rollouts: added cluster discovery types (#3753)

* rollouts: added sync template to the rollout API (#3754)

* rollouts: refactor logic for generating cluster client (#3790)

* rollouts: update dockerfile (#3789)

* rollouts: update core logic to be agnostic of exact cluster type (#3791)

* rollouts: filter wave clusters in process (#3793)

* rollouts: implement cluster discovery for gcp fleet (#3792)

* rollouts: cache gcp fleet rest config host (#3798)

* rollouts: grant rollouts controller read access to container clusters (#3799)

---------

Co-authored-by: Christopher Fry <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants