Skip to content

Commit

Permalink
Merge v2.0.x to main (#9117)
Browse files Browse the repository at this point in the history
* Sketch controller (#45)

* controller sketch

* controllers

* helper functions, indexers

* maincompile

* main

* wip

* query

* gen-cli

* query secrets

* example-code

* git mv edge2/ gateway2

* cleanup

* cleanup2

* cleanup3

* Improve CI for gateway-main (#46)

* rename .github to disable github actions

* change cloudbuild.yaml to prevent build-bot running

* change query to have object in the args (#47)

* 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 (#49)

* some tests for query

* more tests and pr comments

* more tests and fixes

* mroe test

* build + docker +helm + comformance (#51)

* 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

* Gw main/ listener translation (#61)

* 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

* Auto provision gateway resources (#62)

* 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

* update to v1 (#63)

* fix gw route query to make sure the http routes match (#64)

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

* add and pass ci

* more ci

* make in g2 dir

* naming

* naming

* xds syncer (#60)

Co-authored-by: Eitan Yarmush <eitan.yarmush@solo.io>

* Initial validate (#67)

* 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>

* Gw main/translation httproute (#65)

* 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

* Stub Out Endpoints and Upstream Discovery (#59)

* 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 (#66)

* query part 2

* add parentref

* add conditions

* compile fix

* compile fix after merge

* simple secrets reconciler (#68)

* first pass route validation, handle nil hostnames on listeners (#70)

* create ListenerCondition type

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

* add initial route validation

* handle empty/nil hostnames on listeners

* Gw main/translation yaml test (#72)

* testing and fixes for http translation

* get test passing

* nit

* fix import cycle, gofmt

* remove workaround

* add a server to tie everything together (#71)

* add a server to tie everything together

* more wiring

* enabled devmode

* de-pike

* Eitanya/single translation (#74)

* single translation spot

* compiles and runs

* fix compile issue in tests

* Eitanya/route sorting (#75)

* 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

* initial sync status (#78)

* first drop working listener status

* handle gateway top-level conditions

* make xds work (#77)

* 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 (#79)

* add no conflicts to healthy listeners

* add resolvedrefs to healthy listeners

* add per-conditionType logic for missing conditions

* ssl termination (#76)

* ssl termination

* add ssl secret validation

* add ssl secret validation

* Eitanya/check v2 (#73)

* 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

* simple version of port translation (#83)

* Sync route status (#82)

* 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 (#84)

* don't checkout gw repo for tests

* add conformance build tag; simplify kind

* fmt

* rename helm-chart (#80)

* 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

* attached routes (#87)

* Fixes statuses temporarily (#88)

* re-add glooctl proxy commands

* various status fixes

* report tls errors on listeners (#86)

* report tls errors on listeners

* check specific errors on cert validation

* fix make (#89)

* more ci (#90)

* dont pre-check secret ref (#91)

* first translator plugin: header modifier (#85)

* implement plugin arch, w/ header modifier

* fix compile

* fix test

* redirect plugin

* add plugin

* add unit tests

* whoops

* rename compoenents to official naming scheme (#92)

* rename compoenents to official naming scheme

* fix unit tests

---------

Co-authored-by: Yuval Kohavi <yuval.kohavi@gmail.com>

* make conformance-GatewayWithAttachedRoutes passing (#93)

* make conformance-GatewayWithAttachedRoutes passing

* set status for listener with meta

* fix reason

* update to ghcr (#94)

* set gwNs for ML and reverse cert/key for TLS validation (#96)

* Revert "rename compoenents to official naming scheme (#92)" (#97)

This reverts commit b79b0e2.

* fix header order and match type (#102)

* support all hostnames (#98)

* i think this was a bad merge (#99)

* i think this was a bad merge

* fix test

* fix conformance-HTTPRouteInvalidNonExistentBackendRef (#100)

* listeners with more than one port are working now (#101)

* add unknown kind error if kind not in scheme (#103)

Co-authored-by: Lawrence G <lawrence.gadban@solo.io>

* gw semantics (#104)

* fix edge case (#106)

* fix empty backedRef with filters (#107)

* testing release on tag (#105)

* update release-1.0.0 (that includes kubernetes-sigs/gateway-api#2548) (#108)

* version fixes (#109)

* release glooctl

* oops

* Makefile

* no windows

* add https redirect hopefully

* url rewrite basic

* fix redirect and run conformnce

* add more conformance tests

* upload SHA

* use proper rewrite

* change regex

* works

* fix Makefile phony targets

* Gloo Gateway v2 readme (#8866)

* Gloo Gateway v2 readme

* added quickstart instructions

* added notes

* Update README.md

* some fixes

* Add files via upload

* Update README.md

* Update README.md

* fixed the ordering and added local HTTPBIN

* switched to local file

* Update README.md

---------

Co-authored-by: Eitan Yarmush <eitan.yarmush@solo.io>

* make README even simpler

* Logo and description update (#8872)

* Add files via upload

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* remove old flags from glooctl (#8871)

* Logo update (#8878)

* Add files via upload

* Add files via upload

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Revert to proxy ir (#8945)

* Adding quickstart for Helm (#8884)

* Adding quickstart for Helm

* Update README.md

* add logs

patch modified off PR (#8886) as we no longer want the native translation
updates.

Co-authored-by: Eitan Yarmush <eitan.yarmush@solo.io>
Co-authored-by: Lawrence Gadban <lawrence.gadban@solo.io>

* fix no match (#8879)

* Add Request Mirror Gateway API Filter (#8890)

Updated for Gloo Edge Proxy IR

---------

Co-authored-by: Yuval Kohavi <yuval.kohavi@gmail.com>

* add logs from previous PR #8892

* first drop of status cleanup (#8889)

* use types.NN for GatewayReports

* consolidate report creation

* reduce visibility of GatewayReport fields

* extract status building from syncer

* more narrowing viz, add Getters, first unit test for status building

* factor out condition boilerplate, more tests

* fix missed compile issue in translator tests

* add basic test for LastTransitionTime

* better testing

* cleanup

* Update projects/gateway2/reports/status.go

Co-authored-by: Eitan Yarmush <eitan.yarmush@solo.io>

* consolidate reporting components

---------

Co-authored-by: Eitan Yarmush <eitan.yarmush@solo.io>
Co-authored-by: Yuval Kohavi <yuval.kohavi@gmail.com>

* add label helper to helm templates

extracted from previous PR: make go test ./... work again (#8907)
above PR also fixed the CLI tests (e.g. glooctl check) to work with
GGv2. TODO has been added to add this back in later, but did not want to
take this on as the existing patches remove the v1 tests.

* refactor route status

cherry-pick of refactor route status (#8912)

* add missed conformance args from orig. PR (#8890)

* kick ci

---------

Co-authored-by: Nadine Spies <17709352+Nadine2016@users.noreply.github.com>
Co-authored-by: Yuval Kohavi <yuval.kohavi@gmail.com>
Co-authored-by: Eitan Yarmush <eitan.yarmush@solo.io>

* add RoutePlugins (#9021)

* wip: working RouteOptions as ExtensionRef

* add new format for extensionplugins

* extract extensionplugins to a discrete registry

* review feedback

* cleaup

* cleanup

* condense filter/plugin apply

* move routeoptions extension plugin to correct package structure

* cleanup

* introduce RoutePlugins with the impl for HTTPFilterPlugins

* remove extensionRef for now

* package structure re-org

* remove RouteOptions work for now

* localize httpfilterpluginregistry

* convert filterplugins to RoutePlugins

* generalize PluginRegistry (#9025)

* generalize PluginRegistry

* commentary

* add compile-time type assertions for plugins

* update name of RoutePlugin method

* use full type definition for base plugin interface

* track generation at report time (#8996)

* cleanup

* track generation at report time

* use common buildRoutesPerHost() for http & https

* enforce reports must be initialized for translated object

* handle missing reports gracefully

* commentary

* chore: reduce plugins visibility

* add RouteOption route plugin (#9040)

* add RouteOption route plugin

* cleanup

* commentary

* graceful & correct error handling

* reenable gh workflows

* add back some files

* remove changelogs

* revert changelogs

* remove changelogs for now

* add back cli stuff

* add back deleted stuff

* fix lint errors

* add back ingress

* docs gen

* v1 vs v2

* skip gateway2 for now

* fix?

* try reverting

* remove cl

* add back portredirect

* only set port redirect if not 0

* merge from main

* add translation mode

* more descriptive

* use new flag

* add field to test proxy

* remove new field from Proxy

* use label

* remove cl

* delete file

* add labels to test

* revert changelogs

* try again

* fix changelogs

* Adding changelog file to new location

* Deleting changelog file from old location

* codegen

* add back knative delete func

* change port_redirect to UInt32Value

* Adding changelog file to new location

* Deleting changelog file from old location

* some cleanup

* use context

* Update README.md

---------

Co-authored-by: Yuval Kohavi <yuval.kohavi@gmail.com>
Co-authored-by: Sam Heilbron <SamHeilbron@gmail.com>
Co-authored-by: ilackarms <sdw35@cornell.edu>
Co-authored-by: Eitan Yarmush <eitan.yarmush@solo.io>
Co-authored-by: Lawrence G <lawrence.gadban@solo.io>
Co-authored-by: Nadine Spies <17709352+Nadine2016@users.noreply.github.com>
Co-authored-by: soloio-bulldozer[bot] <48420018+soloio-bulldozer[bot]@users.noreply.github.com>
Co-authored-by: changelog-bot <changelog-bot>
  • Loading branch information
8 people authored Feb 1, 2024
1 parent 2bc4f6e commit 0f20220
Show file tree
Hide file tree
Showing 198 changed files with 20,131 additions and 404 deletions.
40 changes: 40 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: GGII Tests
on: pull_request

jobs:
test_gloo_gateway2:
name: Build and Test Gloo Gateway 2
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Setup Go 1.21
uses: actions/setup-go@v4
with:
go-version: "1.21"
- name: Build
run: go build -v ./projects/gateway2/... ./projects/gloo/cli/cmd
- name: Install utils for env tests
run: make -C ./projects/gateway2/ install-go-tools
- name: Test with the Go CLI
run: go test ./projects/gateway2/...

conformance:
name: Run Gateway api conformance tests
runs-on: ubuntu-22.04
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- name: Setup Go 1.21
uses: actions/setup-go@v4
with:
go-version: "1.21"
- name: Install kind
uses: helm/kind-action@v1.5.0
with:
install_only: true
version: v0.20.0
- name: Setup Env in KinD
run: make -C ./projects/gateway2/ build docker kind
- name: Test Conformance
run: make -C ./projects/gateway2/ conformance
58 changes: 58 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Deploy Images to GHCR

on:
push:
tags:
- v2.** # Push events to v2.x tags
workflow_dispatch:

jobs:
push-images:
name: Release images
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go 1.21
uses: actions/setup-go@v4
with:
go-version: "1.21"
- name: "Login to GitHub Container Registry"
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{github.actor}}
password: ${{secrets.GITHUB_TOKEN}}
- name: Build and Push images
run: make -C ./projects/gateway2/ push TAGGED_VERSION=${{ github.ref_name }}
release-helm:
name: Release Helm Chart
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go 1.21
uses: actions/setup-go@v4
with:
go-version: "1.21"
- name: "Login to GitHub Container Registry"
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{github.actor}}
password: ${{secrets.GITHUB_TOKEN}}
- name: Package Helm Chart
run: make -C ./projects/gateway2/ helm TAGGED_VERSION=${{ github.ref_name }}
release-artifacts :
name: Release Glooctl
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go 1.21
uses: actions/setup-go@v4
with:
go-version: "1.21"
- name: "Build glooctl"
run: make glooctl-linux-amd64.sha256 glooctl-linux-arm64.sha256 glooctl-darwin-amd64.sha256 glooctl-darwin-arm64.sha256 TAGGED_VERSION=${{ github.ref_name }}
- name: Release
uses: softprops/action-gh-release@v1
with:
files: _output/glooctl-*
5 changes: 2 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,7 @@ install-go-tools: mod-download ## Download and install Go dependencies
go install github.com/golang/protobuf/protoc-gen-go
go install golang.org/x/tools/cmd/goimports
go install github.com/cratonica/2goarray
go install github.com/golang/mock/gomock
go install github.com/golang/mock/mockgen
go install go.uber.org/mock/mockgen
go install github.com/saiskee/gettercheck
# This version must stay in sync with the version used in CI: .github/workflows/static-analysis.yaml
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2
Expand Down Expand Up @@ -187,7 +186,7 @@ test-with-coverage: test
go tool cover -html $(OUTPUT_DIR)/coverage.cov

.PHONY: run-tests
run-tests: GINKGO_FLAGS += -skip-package=e2e ## Run all non E2E tests, or only run the test package at {TEST_PKG} if it is specified
run-tests: GINKGO_FLAGS += -skip-package=e2e,gateway2 ## Run all non E2E tests, or only run the test package at {TEST_PKG} if it is specified
run-tests: GINKGO_FLAGS += --label-filter="!end-to-end && !performance"
run-tests: test

Expand Down
127 changes: 95 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,126 @@


<h1 align="center">
<img src="https://github.com/solo-io/gloo/blob/main/docs/content/img/logo-gloo-gateway-horizontal.svg" alt="Gloo Gateway v1 (Gloo Edge)" width="800">
<br>
An Envoy-Powered API Gateway
<img src="https://github.com/solo-io/gloo/blob/v2.0.x/docs/content/img/logo-gloo-gateway-horizontal.svg" alt="Gloo Gateway v2" width="800">
<br>
An Envoy-Powered API Gateway
</h1>

# Important update
## Important Update

> **Important**
> Gloo Edge was renamed to Gloo Gateway to align with Solo's support for the Kubernetes Gateway API. The existing Gloo Edge v1 APIs were not changed and continue to be fully supported. To find out more about the new Gloo Gateway v2 API that is based on the Kubernetes Gateway API, see the [v2.0.x branch](https://github.com/solo-io/gloo/tree/v2.0.x).
> Gloo Gateway is now a fully conformant Kubernetes Gateway API implementation!
>
> The existing Gloo Edge v1 APIs were not changed and continue to be fully supported.
## About Gloo Gateway
Gloo Gateway is a powerful Kubernetes-native ingress controller and API gateway that is based on the Kubernetes Gateway API. It excels in function-level routing, supports legacy apps, microservices and serverless, offers robust discovery capabilities, integrates seamlessly with open-source projects, and is designed to support hybrid applications with various technologies, architectures, protocols, and clouds.

Gloo Gateway is a powerful Kubernetes-native ingress controller and API gateway. It excels in function-level routing, supports legacy apps, microservices and serverless, offers robust discovery capabilities, integrates seamlessly with open-source projects, and is designed to support hybrid applications with various technologies, architectures, protocols, and clouds.

[**Installation**](https://gloo.solo.io/installation/) &nbsp; |
&nbsp; [**Documentation**](https://gloo.solo.io) &nbsp; |
[**Installation**](https://docs.solo.io/gloo-gateway/v2/quickstart) &nbsp; |
&nbsp; [**Documentation**](https://docs.solo.io/gloo-gateway/v2) &nbsp; |
&nbsp; [**Blog**](https://www.solo.io/blog/?category=gloo) &nbsp; |
&nbsp; [**Slack**](https://slack.solo.io) &nbsp; |
&nbsp; [**Twitter**](https://twitter.com/soloio_inc) |
&nbsp; [**Enterprise Trial**](https://www.solo.io/products/gloo/#enterprise-trial)
&nbsp; [**Enterprise Trial**](https://www.solo.io/free-trial/)

<BR><center><img src="https://docs.solo.io/gloo-edge/main/img/gloo-architecture-envoys.png" alt="Gloo Gateway v2 Architecture" width="906"></center>

## Quickstart with `glooctl`
Install Gloo Gateway and set up routing to the httpbin sample app.

1. Install `glooctl`, the Gloo Gateway command line tool.
```sh
curl -sL https://run.solo.io/gloo/install | GLOO_VERSION=v2.0.0-beta1 sh
export PATH=$HOME/.gloo/bin:$PATH
```

2. Install the Gloo Gateway v2 control plane, and wait for it to come up.
```sh
glooctl install
```

3. Deploy the httpbin sample app, along with a Gateway and HTTPRoute to access it.
```sh
kubectl -n httpbin apply -f https://raw.githubusercontent.com/solo-io/gloo/v2.0.x/projects/gateway2/examples/httpbin.yaml
```

4. Port-forward the Gateway.
```sh
kubectl port-forward deployment/gloo-proxy-http -n httpbin 8080:8080
```

5. Send a request through our new Gateway.
```sh
curl -I localhost:8080/status/200 -H "host: www.example.com" -v
```

Congratulations! You successfully installed Gloo Gateway and used an HTTP gateway to expose the httpbin sample app.

> **Note**
> To learn more about Gloo Gateway's support for the Kubernetes Gateway API, see the [docs](https://docs.solo.io/gloo-gateway/v2/).
## Quickstart with Helm
1. Install the custom resources of the Kubernetes Gateway API.
```sh
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
```
2. Install Gloo Gateway v2. This command creates the `gloo-system` namespace and installs the Gloo Gateway v2 control plane into it.
```sh
helm install default -n gloo-system --create-namespace oci://ghcr.io/solo-io/helm-charts/gloo-gateway --version 2.0.0-beta1
```
3. Verify that the Gloo Gateway v2 control plane is up and running and that the `gloo-gateway` GatewayClass is created.
```sh
kubectl get pods -n gloo-system
kubectl get gatewayclass gloo-gateway
```
<BR><center><img src="https://docs.solo.io/gloo-edge/main/img/gloo-architecture-envoys.png" alt="Gloo Gateway Architecture" width="906"></center>
4. Deploy the httpbin sample app, along with a Gateway and HTTPRoute to access it.
```sh
kubectl -n httpbin apply -f https://raw.githubusercontent.com/solo-io/gloo/v2.0.x/projects/gateway2/examples/httpbin.yaml
```
## Summary
5. Port-forward the Gateway.
```sh
kubectl port-forward deployment/gloo-proxy-http -n httpbin 8080:8080
```
- [**Using Gloo Gateway**](#using-gloo-gateway)
- [**What makes Gloo Gateway unique**](#what-makes-gloo-gateway-unique)
6. Send a request through our new Gateway.
```sh
curl -I localhost:8080/status/200 -H "host: www.example.com" -v
```
> **Note**
> To learn more about Gloo Gateway's support for the Kubernetes Gateway API, see the [docs](https://docs.solo.io/gloo-gateway/v2/).

## Using Gloo Gateway
- **Kubernetes ingress controller** : Gloo Gateway can function as a feature-rich ingress controller, built on top of the Envoy Proxy.
- **Next-generation API gateway** : Gloo Gateway provides a long list of API gateway features including rate limiting, circuit breaking, retries, caching, transformation, service-mesh integration, security, external authentication and authorization.
- **Hybrid apps** : Gloo Gateway creates applications that route to backends implemented as microservices, serverless functions and legacy apps. This feature can help users to -
- A) Gradually migrate from their legacy code to microservices and serverless.
- B) Add new functionalities using cloud-native technologies while maintaining their legacy codebase.
- C) Allow different teams in an organization choose different architectures.
See [here](https://www.solo.io/hybrid-app) for more on the Hybrid App paradigm.
### Using Gloo Gateway
- **Kubernetes Gateway API**: Gloo Gateway is a feature-rich ingress controller, built on top of the Envoy Proxy and fully conformant with the Kubernetes Gateway API.
- **Next-generation API gateway**: Gloo Gateway provides a long list of API gateway features including rate limiting, circuit breaking, retries, caching, transformation, service-mesh integration, security, external authentication and authorization.
- **Hybrid apps**: Gloo Gateway creates applications that route to backends implemented as microservices, serverless functions and legacy apps. This feature can help users to -
A) Gradually migrate from their legacy code to microservices and serverless.
B) Add new functionalities using cloud-native technologies while maintaining their legacy codebase.
C) Allow different teams in an organization choose different architectures. See here for more on the Hybrid App paradigm.


## What makes Gloo Gateway unique
- **Function-level routing allows integration of legacy applications, microservices and serverless** : Gloo Gateway can route requests directly to _functions_. Request to Function can be a serverless function call (e.g. Lambda, Google Cloud Function, OpenFaaS Function, etc.), an API call on a microservice or a legacy service (e.g. a REST API call, OpenAPI operation, XML/SOAP request etc.), or publishing to a message queue (e.g. NATS, AMQP, etc.). This unique ability is what makes Gloo Gateway the only API gateway that supports hybrid apps as well as the only one that does not tie the user to a specific paradigm.
- **Gloo Gateway incorporates vetted open-source projects to provide broad functionality** : Gloo Gateway support high-quality features by integrating with top open-source projects, including gRPC, GraphQL, OpenTracing, NATS and more. Gloo Gateway's architecture allows rapid integration of future popular open-source projects as they emerge.
- **Full automated discovery lets users move fast** : Upon launch, Gloo Gateway creates a catalog of all available destinations and continuously maintains it up to date. This takes the responsibility for 'bookkeeping' away from the developers and guarantees that new feature become available as soon as they are ready. Gloo Gateway discovers across IaaS, PaaS and FaaS providers as well as Swagger, gRPC, and GraphQL.
- **Gloo Gateway integrates intimately with the user's environment** : with Gloo Gateway, users are free to choose their favorite tools for scheduling (such as K8s, Nomad, OpenShift, etc), persistence (K8s, Consul, etcd, etc) and security (K8s, Vault).
### What makes Gloo Gateway unique
- **Function-level routing allows integration of legacy applications, microservices and serverless**: Gloo Gateway can route requests directly to functions. Request to Function can be a serverless function call (e.g. Lambda, Google Cloud Function, OpenFaaS Function, etc.), an API call on a microservice or a legacy service (e.g. a REST API call, OpenAPI operation, XML/SOAP request etc.), or publishing to a message queue (e.g. NATS, AMQP, etc.). This unique ability is what makes Gloo Gateway the only API gateway that supports hybrid apps as well as the only one that does not tie the user to a specific paradigm.
- **Gloo Gateway incorporates vetted open-source projects to provide broad functionality**: Gloo Gateway supports high-quality features by integrating with top open-source projects, including gRPC, GraphQL, OpenTracing, NATS and more. Gloo Gateway's architecture allows rapid integration of future popular open-source projects as they emerge.
**Full automated discovery lets users move fast**: Upon launch, Gloo Gateway creates a catalog of all available destinations and continuously keeps them up to date. This takes the responsibility for 'bookkeeping' away from the developers and guarantees that new features become available as soon as they are ready. Gloo Gateway discovers across IaaS, PaaS and FaaS providers as well as Swagger, gRPC, and GraphQL.
## Next Steps
- Join us on our Slack channel: [https://slack.solo.io/](https://slack.solo.io/)
- Follow us on Twitter: [https://twitter.com/soloio_inc](https://twitter.com/soloio_inc)
- Check out the docs: [https://gloo.solo.io](https://gloo.solo.io)
- Check out the docs: [https://docs.solo.io/gloo-gateway/v2](https://docs.solo.io/gloo-gateway/v2)
- Check out the code and contribute: [Contribution Guides](/devel/contributing)
- Contribute to the [Docs](docs/)
### Thanks
## Thanks
**Gloo Gateway** would not be possible without the valuable open-source work of projects in the community. We would like to extend a special thank-you to [Envoy](https://www.envoyproxy.io).
# Security
## Security
*Reporting security issues* : We take Gloo Edge's security very seriously. If you've found a security issue or a potential security issue in Gloo Edge, please DO NOT file a public Github issue, instead send your report privately to [security@solo.io](mailto:security@solo.io).
*Reporting security issues* : We take Gloo Gateway's security very seriously. If you've found a security issue or a potential security issue in Gloo Gateway, please DO NOT file a public Github issue, instead send your report privately to [security@solo.io](mailto:security@solo.io).
3 changes: 3 additions & 0 deletions changelog/v1.17.0-beta7/merge-ggv2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
changelog:
- type: NON_USER_FACING
description: Merge v2.0.x Gloo Gateway branch into main
2 changes: 1 addition & 1 deletion ci/tools.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ package tools
import (
_ "github.com/cratonica/2goarray"
_ "github.com/envoyproxy/protoc-gen-validate"
_ "github.com/golang/mock/mockgen"
_ "github.com/saiskee/gettercheck"
_ "github.com/solo-io/protoc-gen-ext"
_ "github.com/solo-io/protoc-gen-openapi"
_ "go.uber.org/mock/mockgen"
_ "golang.org/x/tools/cmd/goimports"
_ "k8s.io/code-generator"
)
Binary file added docs/content/img/logo-gloo-gateway.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 0f20220

Please sign in to comment.