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

Merge v2.0.x to main #9117

Merged
merged 129 commits into from
Feb 1, 2024
Merged

Merge v2.0.x to main #9117

merged 129 commits into from
Feb 1, 2024

Conversation

jenshu
Copy link
Contributor

@jenshu jenshu commented Jan 30, 2024

Description

Initially, everything for Gloo Gateway v2 was developed separately against the v2.0.x branch. This PR merges all of it back into main. Roughly, this merge involved:

  • pulling all the changes from last few months from main into the v2.0.x branch, resolving conflicts, and adding back deleted code (mostly in glooctl)
  • fix function signatures and typos to get make generated-code working
  • fixing all the lint errors in the v2 code (since we recently added a linter to main)
  • re-enabling CI checks and ensure all checks pass for both GE and GGv2

Notes for reviewers

The goal of this PR is to merge all work from v2.0.x into main and ensure CI is passing for both Gloo Edge and Gloo Gateway v2 (with the minimal changes necessary), so that further GGv2 development can be done against main. Not currently looking for thorough review of the PRs that are being pulled directly from v2.0.x (as they had already gotten reviewed when they were initially merged).

As long as regression tests / build-bot pass, I'm confident we didn't break anything in GE. GG is likely broken in some places (e.g. glooctl) but will be handled in follow-up PRs (along with cleanup and deduping of GE/GG code).

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix is effective or that my feature works

yuval-k and others added 30 commits October 11, 2023 13:05
* controller sketch

* controllers

* helper functions, indexers

* maincompile

* main

* wip

* query

* gen-cli

* query secrets

* example-code

* git mv edge2/ gateway2

* cleanup

* cleanup2

* cleanup3
* rename .github to disable github actions

* change cloudbuild.yaml to prevent build-bot running
* change query to have object in the args

To confirm that we use the right "from" field, ask for the whole object in the query args, and not just the ns

* use obj and infer gk

* fix comment

comments are bad

* singular
* some tests for query

* more tests and pr comments

* more tests and fixes

* mroe test
* ability to deploy to kind so we can run conformance

not yet working

* helming around, accepting status for gw class

* set observed generation on condition

* don't create gw for conformance test

* minor changes

* cleanup

* separate cp and dp

* cleanup

* allow more than one ports

* pr comments

* controlPlane.enabled

* fix makefile
* solo gw stubs

* wip: translator

* wip: http gwv2 translation

* wip: listener tx complete, ready for vhost + validation

* merge http filter chain

* finish core listener tx; stub vhost tx

* remove unused
* initial code to create GW

* auto provision by default
add ports to deployer

* fixes and some PR comments

* fix event filtering

* write addresses to gw; need to add tests

* only reconcile gw when generation changes

* support provisioning with different releases

* try approach 2 for statues

* env test for status setting

* pr comments
* fix gw route query to make sure the http routes match

* add and pass ci

* more ci

* make in g2 dir

* naming

* naming
Co-authored-by: Eitan Yarmush <eitan.yarmush@solo.io>
* solo gw stubs

* wip: translator

* wip: http gwv2 translation

* wip: listener tx complete, ready for vhost + validation

* merge http filter chain

* wip: initial impl of GW/Listener validation

* wip: working sketch of reporter; passing tests

* wip: begin testing for conditions

* simplify condition type on reporter

* add status checks to tests

* move listener validation back to listener package

* add gateway structure to report impl

* use ListenerStatus api type

* add support for allowedRoutes

* cleaup

* add tests for explicit allowedRoutes

* cleanup and reorg

* correctly track invalid listeners & routes

* more cleanup

* todo

---------

Co-authored-by: Scott Weiss <sdw35@cornell.edu>
* solo gw stubs

* wip: translator

* wip: http gwv2 translation

* wip: listener tx complete, ready for vhost + validation

* merge http filter chain

* finish core listener tx; stub vhost tx

* remove unused

* wip: route translator

* http route translator, fixes for http listener

* clean up todos
* Add simple uds transslator

* goimports -w .

* format plugin

* update kube plugin to export a function that our new discvoery can rely on

* add stubs for translator for discovery

* add placeholder for legacy impl

* formatting

* simplify code

* add changelog
* query part 2

* add parentref

* add conditions

* compile fix

* compile fix after merge
* create ListenerCondition type

* fix unnecessary guard on map access (go-static)

* add initial route validation

* handle empty/nil hostnames on listeners
* testing and fixes for http translation

* get test passing

* nit

* fix import cycle, gofmt

* remove workaround
* add a server to tie everything together

* more wiring

* enabled devmode

* de-pike
* single translation spot

* compiles and runs

* fix compile issue in tests
* initial route-sorting

* tests are passing

* update golden

* swapped it all to use the httpRoute and idx as fallbacks

* also check NS/NAME

* oops

* move sortable to separate package
* first drop working listener status

* handle gateway top-level conditions
* make xds work
main bug is there were 2 caches

* use envoy-gloo; use unprivileged port

* use rc2 for conformance to work

* pr comments

* tidy
* add no conflicts to healthy listeners

* add resolvedrefs to healthy listeners

* add per-conditionType logic for missing conditions
* ssl termination

* add ssl secret validation

* add ssl secret validation
* gateway checking is done

* compiles

* route status code

* with v1 changes

* a couple more changes

* remove ingress/knative

* also apply CRDs with glooctl

* pike

* install/uninstall work

* oops

* fix conditions for Gateway Class

* change back protocol on svc

* removed default gateway from the chart

* default to LB

* oops

* fix env tests with svc status hack due to LB

* naming

* use index func logic

* check for existence of the CRDs

* upped template to v1, changed logic to be more permissinve

* gatewayName
* init route report

* cleanup

* switch to per-parentRef reporting on routes

* report on route-parent relationship errors

* sync route status

* cleanup
* don't checkout gw repo for tests

* add conformance build tag; simplify kind

* fmt
* rename helm-chart

* rename folder

* change dir name

* updated values/versions

* add labels so that glooctl version works

* make new commands more flexible

* file for CRDs, add programmed condition

* bad comment

* change version to alpha1 instead

* comments

* rename the gateway class name

* use standar

* use relative dir
Copy link
Contributor

@lgadban lgadban left a comment

Choose a reason for hiding this comment

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

really great work, this is exciting to see!
gave a 1st pass and left a few comments/questions

projects/gloo/api/v1/proxy.proto Outdated Show resolved Hide resolved
projects/gloo/pkg/plugins/kubernetes/eds.go Outdated Show resolved Hide resolved
projects/gloo/pkg/translator/route_config.go Show resolved Hide resolved
Copy link
Contributor

@bewebi bewebi left a comment

Choose a reason for hiding this comment

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

I don't have a lot of context and not clear exactly what was/is worth reviewing
I ignored files in projects/gateway2, assuming most or all of that was brought from previous PRs

I left a few comments, mainly looking to better understand what's going

docs/content/reference/cli/glooctl.md Show resolved Hide resolved
projects/gloo/api/v1/proxy.proto Show resolved Hide resolved
projects/gloo/cli/pkg/cmd/check/root.go Show resolved Hide resolved
projects/gloo/cli/pkg/cmd/install/v2/root.go Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Show resolved Hide resolved
Copy link
Contributor

@bewebi bewebi left a comment

Choose a reason for hiding this comment

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

All of my comments have been addressed
I'll let other reviewers officially approve

Copy link
Contributor

@nfuden nfuden left a comment

Choose a reason for hiding this comment

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

🚀

Copy link
Contributor

@lgadban lgadban left a comment

Choose a reason for hiding this comment

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

LGTM, excellent work!

@jenshu jenshu removed the work in progress signals bulldozer to keep pr open (don't auto-merge) label Feb 1, 2024
@jenshu jenshu merged commit 0f20220 into main Feb 1, 2024
17 checks passed
@jenshu jenshu deleted the merge-v2-to-main branch February 1, 2024 23:58
@jenshu jenshu mentioned this pull request Feb 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
keep pr updated signals bulldozer to keep pr up to date with base branch
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants