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

Adds Support for GatewayClass SupportedVersion Condition #10140

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from
Draft
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
7 changes: 5 additions & 2 deletions .github/workflows/pr-unit-tests.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
name: Unit Tests

# This workflow invokes unit tests for the Gloo Gateway project
# This workflow invokes unit tests for the k8sgateway project
# It was introduced during the 1.17 quarter, where we added a new project (projects/gateway2)
# and therefore we only run those new tests here
#
# Our historical unit tests are run via CloudBuild
# Overtime, it would be valuable to consolidate these approaches
env:
VERSION: '1.0.0-ci1'
GITHUB_TOKEN: ${{ github.token }}

on:
pull_request:
Expand All @@ -26,7 +29,7 @@ jobs:
with:
go-version-file: go.mod
- name: Build
run: go build -v ./projects/gateway2/... ./projects/gloo/cli/cmd
run: go build -v ./projects/gateway2/... ./projects/controller/cli/cmd
- name: Install Test Utils
shell: bash
run: make -C ./projects/gateway2/ install-go-tools
Expand Down
10 changes: 5 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ go-generate-mocks: clean-vendor-any ## Runs all generate directives for mockgen

.PHONY: generate-cli-docs
generate-cli-docs: clean-cli-docs ## Removes existing CLI docs and re-generates them
GO111MODULE=on go run projects/gloo/cli/cmd/docs/main.go
GO111MODULE=on go run projects/controller/cli/cmd/docs/main.go

# Ensures that accesses for fields which have "getter" functions are exclusively done via said "getter" functions
.PHONY: getter-check
Expand All @@ -426,7 +426,7 @@ mod-tidy:
.PHONY: verify-enterprise-protos
verify-enterprise-protos:
@echo Verifying validity of generated enterprise files...
$(GO_BUILD_FLAGS) GOOS=linux go build projects/gloo/pkg/api/v1/enterprise/verify.go
$(GO_BUILD_FLAGS) GOOS=linux go build projects/controller/pkg/api/v1/enterprise/verify.go

# Validates that local Go version matches go.mod
.PHONY: check-go-version
Expand Down Expand Up @@ -640,7 +640,7 @@ discovery-distroless-docker: $(DISCOVERY_OUTPUT_DIR)/discovery-linux-$(GOARCH) $
# Gloo
#----------------------------------------------------------------------------------

GLOO_DIR=projects/gloo
GLOO_DIR=projects/controller
EDGE_GATEWAY_DIR=projects/gateway
K8S_GATEWAY_DIR=projects/gateway2
GLOO_SOURCES=$(call get_sources,$(GLOO_DIR))
Expand Down Expand Up @@ -728,7 +728,7 @@ $(GLOO_RACE_OUT_DIR)/.gloo-race-docker: $(GLOO_RACE_OUT_DIR)/gloo-linux-amd64 $(
touch $@

#----------------------------------------------------------------------------------
# SDS Server - gRPC server for serving Secret Discovery Service config for Gloo Edge MTLS
# SDS Server - gRPC server for serving Secret Discovery Service config for k8sgateway MTLS
#----------------------------------------------------------------------------------

SDS_DIR=projects/sds
Expand Down Expand Up @@ -1091,7 +1091,7 @@ endif # distroless images
#----------------------------------------------------------------------------------
#
# The following targets are used to generate the assets on which the kube2e tests rely upon.
# The Kube2e tests will use the generated Gloo Edge Chart to install Gloo Edge to the KinD test cluster.
# The Kube2e tests will use the generated k8sgateway Chart to install k8sgateway to the KinD test cluster.

CLUSTER_NAME ?= kind
INSTALL_NAMESPACE ?= gloo-system
Expand Down
2 changes: 1 addition & 1 deletion Makefile.ci
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# glooctl
#----------------------------------------------------------------------------------

CLI_DIR=projects/gloo/cli
CLI_DIR=projects/controller/cli

$(OUTPUT_DIR)/glooctl: $(SOURCES)
GO111MODULE=on go build -ldflags=$(LDFLAGS) -gcflags=$(GCFLAGS) -o $@ $(CLI_DIR)/cmd/main.go $(STDERR_SILENCE_REDIRECT)
Expand Down
64 changes: 30 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,52 @@


<h1 align="center">
<img src="https://github.com/solo-io/gloo/blob/main/docs/content/img/logo.svg" alt="Gloo Gateway" width="800">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/docs/content/img/k8sgateway/logo-dark.svg" alt="K8sGateway" width="800">
<source media="(prefers-color-scheme: light)" srcset="/docs/content/img/k8sgateway/logo.svg" alt="K8sGateway" width="800">
<img alt="K8sGateway" src="/docs/content/img/k8sgateway/logo.svg">
</picture>
<br>
An Envoy-Powered API Gateway
An Envoy-Powered Kubernetes-Native API Gateway
</h1>

## Important Update

> **Important**
> Gloo Gateway is now a fully conformant Kubernetes Gateway API implementation!
>
> The existing Gloo Edge APIs were not changed and continue to be fully supported.

## About Gloo Gateway
Gloo Gateway is a feature-rich, fast, and flexible Kubernetes-native ingress controller and next-generation API gateway that is built on top of [Envoy proxy](https://www.envoyproxy.io) and 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.
## About K8sGateway
K8sGateway is a feature-rich, fast, and flexible Kubernetes-native ingress controller and next-generation API gateway that is built on top of [Envoy proxy](https://www.envoyproxy.io) and 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.

[**Installation**](https://docs.solo.io/gateway/latest/quickstart/) &nbsp; |
&nbsp; [**Documentation**](https://docs.solo.io/gateway/latest/) &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/free-trial/)
[**Installation**](https://k8sgateway.io/docs/quickstart/) &nbsp; |
&nbsp; [**Documentation**](https://k8sgateway.io/docs) &nbsp; |
&nbsp; [**Blog**](https://k8sgateway.io/docs/) &nbsp; |
&nbsp; [**Slack**](https://cloud-native.slack.com/archives/C080D3PJMS4) &nbsp; |

<BR><center><img src="https://github.com/solo-io/gloo/blob/main/docs/content/img/gloo-gateway-architecture.svg" alt="Gloo Gateway Architecture" width="700"></center>
<BR><center><img src="/docs/content/img/k8sgateway/component-architecture.svg" alt="K8sGateway Architecture" width="700"></center>

### 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
### Using K8sGateway
- **Kubernetes Gateway API**: K8sGateway 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**: K8sGateway 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**: K8sGateway creates applications that route to backends implemented as microservices, serverless functions and legacy apps. This feature can help users to
* Gradually migrate from their legacy code to microservices and serverless.
* Add new functionalities using cloud-native technologies while maintaining their legacy codebase.
* Allow different teams in an organization choose different architectures.


### 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.
<!---
PLEASE DO NOT RENAME THIS SECTION
This header is used as an anchor in our CNCF Donation Issue
-->
### What makes K8sGateway unique
- **Function-level routing allows integration of legacy applications, microservices and serverless**: K8sGateway 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 K8sGateway the only API gateway that supports hybrid apps as well as the only one that does not tie the user to a specific paradigm.
- **K8sGateway incorporates vetted open-source projects to provide broad functionality**: K8sGateway supports high-quality features by integrating with top open-source projects, including gRPC, OpenTracing, NATS and more. K8sGateway's architecture allows rapid integration of future popular open-source projects as they emerge.
- **Full automated discovery lets users move fast**: Upon launch, K8sGateway 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. K8sGateway discovers across IaaS, PaaS and FaaS providers as well as Swagger, and gRPC.


## 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://docs.solo.io/gateway/latest/](https://docs.solo.io/gateway/latest/)
- Join us on our Slack channel: [#k8sgateway](https://cloud-native.slack.com/archives/C080D3PJMS4)
- Check out the docs: [https://k8sgateway.io/docs](https://k8sgateway.io/docs)

## Contributing to Gloo Gateway
## Contributing to K8sGateway
The [devel](devel) folder should be the starting point for understanding the code, and contributing to the product.

## 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).
**K8sGateway** 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
*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).
*Reporting security issues* : We take K8sGateway's security very seriously. If you've found a security issue or a potential security issue in K8sGateway, please DO NOT file a public Github issue, instead follow the directions laid out in the [k8sgateway/community respository](https://github.com/k8sgateway/community/blob/main/CVE.md).
4 changes: 2 additions & 2 deletions changelog/v0.18.0/summary.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
In Gloo Edge 0.18.0, we added support for TCP proxying, which required a breaking change to the gateway API.
Please check out https://gloo.solo.io/operations/upgrading/0.18.1/ for details on how to seamlessly upgrade Gloo Edge,
In k8sgateway 0.18.0, we added support for TCP proxying, which required a breaking change to the gateway API.
Please check out https://gloo.solo.io/operations/upgrading/0.18.1/ for details on how to seamlessly upgrade k8sgateway,
automatically convert existing configuration, and migrate traffic while avoiding downtime.
2 changes: 1 addition & 1 deletion changelog/v1.10.0-beta1/update-docker-consul.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
changelog:
- type: NON_USER_FACING
description: Update docker-compose and consul tutorials for Gloo Edge 1.9.0
description: Update docker-compose and consul tutorials for k8sgateway 1.9.0
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ changelog:
- type: NEW_FEATURE
issueLink: https://github.com/solo-io/gloo/issues/5646
description: >
Adds extensible discovery component to OSS Gloo Edge to allow for enterprise Graphql Openapi spec discovery.
Adds extensible discovery component to OSS k8sgateway to allow for enterprise Graphql Openapi spec discovery.
resolvesIssue: false
2 changes: 1 addition & 1 deletion changelog/v1.10.0-beta12/deprecate-knative.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ changelog:
- type: FIX
issueLink: https://github.com/solo-io/gloo/issues/5707
description: |
Gloo Edge Knative Ingress is deprecated in Gloo Edge 1.10. It will be removed in Gloo Edge 1.11.
k8sgateway Knative Ingress is deprecated in k8sgateway 1.10. It will be removed in k8sgateway 1.11.
This PR adds warnings into our internal and external facing docs and tools.
2 changes: 1 addition & 1 deletion changelog/v1.10.0-beta3/graphql.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ changelog:
resolvesIssue: true
description: >-
Enterprise-Only: Introduce a new `GraphQLSchema` CR (k8s custom resource) and API that allows users to send
GraphQL requests to the Gloo Edge API gateway and resolves those requests according to schemas and resolvers
GraphQL requests to the k8sgateway API gateway and resolves those requests according to schemas and resolvers
defined on the CR. Add a new `Route` type called `graphql_schema_ref` that refers routs to the graphql
configuration necessary to resolve the request. The API introduced here is only implemented in enterprise.
2 changes: 1 addition & 1 deletion changelog/v1.10.0-beta4/graphql-docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ changelog:
issueLink: https://github.com/solo-io/gloo/issues/5509
resolvesIssue: false
description: >-
Add docs for GraphQL in Gloo Edge, after testing locally. Update a handful of lines of code in e2e test utils
Add docs for GraphQL in k8sgateway, after testing locally. Update a handful of lines of code in e2e test utils
to be used in enterprise e2e tests. This includes adding headers to `ReceivedRequest` struct as well as a small
bug fix to the test util for setting the body on the received request.
2 changes: 1 addition & 1 deletion changelog/v1.10.0-beta8/docs-gcp-lbs.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
changelog:
- type: NON_USER_FACING
description: Explain how to integrate gloo edge with Load Balancers in provisioned on GCP.
description: Explain how to integrate k8sgateway with Load Balancers in provisioned on GCP.
2 changes: 1 addition & 1 deletion changelog/v1.10.0-beta9/docs-airgap.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
changelog:
- type: NON_USER_FACING
description: Adding air-gapped installation steps for Gloo Edge Enterprise.
description: Adding air-gapped installation steps for k8sgateway Enterprise.
2 changes: 1 addition & 1 deletion changelog/v1.11.0-beta13/graphql-caching-api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ changelog:
resolvesIssue: false
description: >-
Add API for persisted queries, safelists, `Cache-Control` header CDN caching, and response template setters to
the Gloo Edge envoy GraphQL filter, to be implemented in enterprise.
the k8sgateway envoy GraphQL filter, to be implemented in enterprise.
2 changes: 1 addition & 1 deletion changelog/v1.11.0-rc2/doc-instruqt.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
changelog:
- type: NON_USER_FACING
description: Embeds an Instruqt demo track into the Gloo Edge getting started section.
description: Embeds an Instruqt demo track into the k8sgateway getting started section.
2 changes: 1 addition & 1 deletion changelog/v1.11.0-rc6/doc-upgrade-guide.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
changelog:
- type: NON_USER_FACING
description: Adds the upgrade notice for Gloo Edge 1.11.x.
description: Adds the upgrade notice for k8sgateway 1.11.x.
issueLink: https://github.com/solo-io/gloo/issues/6109
- type: NON_USER_FACING
description: Adds more info about installing CRDs before upgrading and upgrading glooctl.
Expand Down
2 changes: 1 addition & 1 deletion changelog/v1.11.0-rc6/http2_protocol_options_update.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
changelog:
- type: FIX
issueLink: https://github.com/solo-io/gloo/issues/5472
description: Removed references to deprecated envoy.config.cluster.v3.Cluster.http2_protocol_options in gloo/projects/gloo/pkg/plugins/protocoloptions/plugin.go. These references have been replaced with envoy.config.cluster.v3.Cluster.typed_extension_protocol_options.
description: Removed references to deprecated envoy.config.cluster.v3.Cluster.http2_protocol_options in gloo/projects/controller/pkg/plugins/protocoloptions/plugin.go. These references have been replaced with envoy.config.cluster.v3.Cluster.typed_extension_protocol_options.
2 changes: 1 addition & 1 deletion changelog/v1.12.0-beta15/remote-executor-graphql.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
changelog:
- type: NON_USER_FACING
issueLink: https://github.com/solo-io/gloo/issues/3541
description: Bringing support for remote graphql executors in gloo edge.
description: Bringing support for remote graphql executors in k8sgateway.
2 changes: 1 addition & 1 deletion changelog/v1.12.0-beta31/rate-limit-counters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ CHANGELOG:
issueLink: https://github.com/solo-io/gloo/issues/2785
description: |
Add API options for enabling Envoy's X-RateLimit headers. Breaking calls to
projects/gloo/pkg/plugins/ratelimit.GenerateEnvoyConfigForFilterWith which
projects/controller/pkg/plugins/ratelimit.GenerateEnvoyConfigForFilterWith which
now requires a boolean parameter specifying whether these headers should be enabled
resolvesIssue: false

2 changes: 1 addition & 1 deletion changelog/v1.12.0-beta9/failure-policy-fail.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ changelog:
issueLink: https://github.com/solo-io/gloo/issues/6213
resolvesIssue: false
description: |
Ensure that Gloo Edge can be installed successfully when the validation webhook failure policy is set to Fail.
Ensure that k8sgateway can be installed successfully when the validation webhook failure policy is set to Fail.
- type: FIX
issueLink: https://github.com/solo-io/gloo/issues/6403
description: Fix certgen job to make sure service name from cert is correct.
2 changes: 1 addition & 1 deletion changelog/v1.13.0-beta10/graphql-go-cve.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ changelog:
Update the CLI command used to run scans to not create Github issues by default,
which makes it easier for developers to run scans locally.
Add `CVE-2022-37315` to our .trivyignore since it is a vulnerability that does not
affect Gloo Edge and does not have a fix yet. This will ensure that it does not appear
affect k8sgateway and does not have a fix yet. This will ensure that it does not appear
in the scan results that are published to the docs.
- type: NON_USER_FACING
description: >
Expand Down
2 changes: 1 addition & 1 deletion changelog/v1.13.0-beta13/cleanup-ignore-crd-errors.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ changelog:
- type: FIX
issueLink: https://github.com/solo-io/gloo/issues/7109
resolvesIssue: false
description: Exit early from the `gloo-resource-cleanup` job (instead of erroring) if the Gloo Edge CRDs have already been deleted.
description: Exit early from the `gloo-resource-cleanup` job (instead of erroring) if the k8sgateway CRDs have already been deleted.
2 changes: 1 addition & 1 deletion changelog/v1.13.0-beta15/doc-fixes.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
changelog:
- type: NON_USER_FACING
description: Updates Gloo Edge logo.
description: Updates k8sgateway logo.
2 changes: 1 addition & 1 deletion changelog/v1.13.0-beta22/developer-documentation.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
changelog:
- type: NON_USER_FACING
issueLink: https://github.com/solo-io/gloo/issues/7301
description: Implement the "Building and Deploying Gloo Edge from Source" as developer documentation
description: Implement the "Building and Deploying k8sgateway from Source" as developer documentation
Loading
Loading