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

cherry-pick: commits from main to v0.3.0 #1027

Merged
merged 30 commits into from
Feb 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e587a50
fix: incorrect command in release schedule (#973)
Xunzhuo Feb 3, 2023
8bbe1b9
xds: Deprecated http2_protocol_options (#974)
zirain Feb 3, 2023
c7cbef0
Use HTTP1.1 to connect to upstream jwks endpoint (#977)
arkodg Feb 4, 2023
25b24cc
Add status in HTTPRoute when Ratelimit is disabled (#982)
arkodg Feb 4, 2023
47b26eb
build(deps): bump actions/deploy-pages from 1.2.3 to 1.2.4 (#984)
dependabot[bot] Feb 6, 2023
b791c25
build(deps): bump sigs.k8s.io/controller-runtime from 0.14.2 to 0.14.…
dependabot[bot] Feb 6, 2023
228ecf5
fix function names for RL Infra (#976)
arkodg Feb 6, 2023
8658b44
Add docs for GRPCRoute (#969)
arkodg Feb 7, 2023
8cebf79
align wellknown package (#981)
zirain Feb 7, 2023
842619d
Plug in rate limit service URL into xds cluster (#983)
arkodg Feb 7, 2023
007e753
Adds JWT Authn User Docs (#991)
danehans Feb 8, 2023
e7f18fc
user docs for global rate limit (#989)
arkodg Feb 8, 2023
9ee4d1c
docs: add ref to global ratelimit (#999)
Xunzhuo Feb 8, 2023
22d3171
Update gateway-api to v0.6.1 (#1003)
arkodg Feb 8, 2023
93121df
Add GRPCRoute to SupportedKinds (#990)
arkodg Feb 8, 2023
20cb50c
Use `path_separated_prefix` Route match (#1004)
arkodg Feb 9, 2023
fedf160
Adds API Docs Tooling (#980)
danehans Feb 9, 2023
24a7c7a
Updates API godocs for improved markdown rendering (#1010)
danehans Feb 9, 2023
0370f34
chore: bump testdata to gwapi v0.6.1 (#1011)
Xunzhuo Feb 9, 2023
c881581
conformance: enable GatewayClassObservedGenerationBump (#896)
Xunzhuo Feb 9, 2023
7632328
Run all conformance tests except redirect tests (#1014)
arkodg Feb 9, 2023
aea3076
remove empty route error check in auth xds logic (#1019)
arkodg Feb 9, 2023
bff3382
Removes GatewayObservedGenerationBump and HTTPRouteObservedGeneration…
danehans Feb 9, 2023
31a5507
Add Gateway API support doc (#1017)
AliceProxy Feb 9, 2023
4362ea2
Adds Cherry-Pick Steps to Release Doc (#1018)
danehans Feb 9, 2023
4bffa42
update to validate 1.26 (#1020)
jcheld Feb 9, 2023
7ed11c9
Bumps Compatibility Matrix for v0.3 (#1002)
danehans Feb 9, 2023
cce25bb
update gateway api support doc (#1022)
arkodg Feb 10, 2023
4c3838c
release(v0.3.0): add release notes and release announcement (#1013)
Xunzhuo Feb 10, 2023
e09db42
release: cut v0.3.0 versioned docs (#1025)
Xunzhuo Feb 10, 2023
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
2 changes: 1 addition & 1 deletion .github/workflows/build_and_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
needs: [build]
strategy:
matrix:
version: [ v1.23.6, v1.24.0, v1.25.3 ]
version: [ v1.24.0, v1.25.3, v1.26.0 ]
steps:
- uses: actions/checkout@v3
- uses: ./tools/github-actions/setup-deps
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1.2.3
uses: actions/deploy-pages@v1.2.4
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v0.3.0-rc.1
v0.3.0
6 changes: 6 additions & 0 deletions api/config/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Copyright Envoy Gateway Authors
// SPDX-License-Identifier: Apache-2.0
// The full text of the Apache license is available in the LICENSE file at
// the root of the repo.

package config
11 changes: 11 additions & 0 deletions api/config/v1alpha1/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Copyright Envoy Gateway Authors
// SPDX-License-Identifier: Apache-2.0
// The full text of the Apache license is available in the LICENSE file at
// the root of the repo.

// Package v1alpha1 contains API schema definitions for the config.gateway.envoyproxy.io
// API group.
//
// +kubebuilder:object:generate=true
// +groupName=config.gateway.envoyproxy.io
package v1alpha1
17 changes: 8 additions & 9 deletions api/config/v1alpha1/envoygateway_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ const (

//+kubebuilder:object:root=true

// EnvoyGateway is the Schema for the envoygateways API.
// EnvoyGateway is the schema for the envoygateways API.
type EnvoyGateway struct {
metav1.TypeMeta `json:",inline"`

// EnvoyGatewaySpec defines the desired state of Envoy Gateway.
// EnvoyGatewaySpec defines the desired state of EnvoyGateway.
EnvoyGatewaySpec `json:",inline"`
}

Expand All @@ -45,7 +45,7 @@ type EnvoyGatewaySpec struct {
// deployed by Envoy Gateway required to implement the Global Rate limiting
// functionality. The specific rate limit service used here is the reference
// implementation in Envoy. For more details visit https://github.com/envoyproxy/ratelimit.
// This configuration will not be needed to enable Local Rate limiitng.
// This configuration is unneeded for "Local" rate limiting.
//
// +optional
RateLimit *RateLimit `json:"rateLimit,omitempty"`
Expand All @@ -56,8 +56,7 @@ type Gateway struct {
// ControllerName defines the name of the Gateway API controller. If unspecified,
// defaults to "gateway.envoyproxy.io/gatewayclass-controller". See the following
// for additional details:
//
// https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1alpha2.GatewayClass
// https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1alpha2.GatewayClass
//
// +optional
ControllerName string `json:"controllerName,omitempty"`
Expand All @@ -66,20 +65,20 @@ type Gateway struct {
// Provider defines the desired configuration of a provider.
// +union
type Provider struct {
// Type is the type of provider to use. Supported types are:
//
// * Kubernetes: A provider that provides runtime configuration via the Kubernetes API.
// Type is the type of provider to use. Supported types are "Kubernetes".
//
// +unionDiscriminator
Type ProviderType `json:"type"`

// Kubernetes defines the configuration of the Kubernetes provider. Kubernetes
// provides runtime configuration via the Kubernetes API.
//
// +optional
Kubernetes *KubernetesProvider `json:"kubernetes,omitempty"`

// File defines the configuration of the File provider. File provides runtime
// configuration defined by one or more files.
// configuration defined by one or more files. This type is not implemented
// until https://github.com/envoyproxy/gateway/issues/1001 is fixed.
//
// +optional
File *FileProvider `json:"file,omitempty"`
Expand Down
27 changes: 15 additions & 12 deletions api/config/v1alpha1/envoyproxy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ const (
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status

// EnvoyProxy is the Schema for the envoyproxies API
// EnvoyProxy is the schema for the envoyproxies API.
type EnvoyProxy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec EnvoyProxySpec `json:"spec,omitempty"`
// EnvoyProxySpec defines the desired state of EnvoyProxy.
Spec EnvoyProxySpec `json:"spec,omitempty"`
// EnvoyProxyStatus defines the actual state of EnvoyProxy.
Status EnvoyProxyStatus `json:"status,omitempty"`
}

Expand All @@ -36,7 +38,8 @@ type EnvoyProxySpec struct {
Provider *ResourceProvider `json:"provider,omitempty"`

// Logging defines logging parameters for managed proxies. If unspecified,
// default settings apply.
// default settings apply. This type is not implemented until
// https://github.com/envoyproxy/gateway/issues/280 is fixed.
//
// +kubebuilder:default={level: {system: info}}
Logging ProxyLogging `json:"logging,omitempty"`
Expand All @@ -47,10 +50,7 @@ type EnvoyProxySpec struct {
type ResourceProvider struct {
// Type is the type of resource provider to use. A resource provider provides
// infrastructure resources for running the data plane, e.g. Envoy proxy, and
// optional auxiliary control planes. Supported types are:
//
// * Kubernetes: Provides infrastructure resources for running the data plane,
// e.g. Envoy proxy.
// optional auxiliary control planes. Supported types are "Kubernetes".
//
// +unionDiscriminator
Type ProviderType `json:"type"`
Expand All @@ -74,7 +74,8 @@ type KubernetesResourceProvider struct {
EnvoyDeployment *KubernetesDeploymentSpec `json:"envoyDeployment,omitempty"`
}

// ProxyLogging defines logging parameters for managed proxies.
// ProxyLogging defines logging parameters for managed proxies. This type is not
// implemented until https://github.com/envoyproxy/gateway/issues/280 is fixed.
type ProxyLogging struct {
// Level is a map of logging level per component, where the component is the key
// and the log level is the value. If unspecified, defaults to "System: Info".
Expand All @@ -84,7 +85,8 @@ type ProxyLogging struct {
}

// LogComponent defines a component that supports a configured logging level.
//
// This type is not implemented until https://github.com/envoyproxy/gateway/issues/280
// is fixed.
// +kubebuilder:validation:Enum=system;upstream;http;connection;admin;client;filter;main;router;runtime
type LogComponent string

Expand Down Expand Up @@ -121,8 +123,8 @@ const (
LogComponentRuntime LogComponent = "runtime"
)

// LogLevel defines a log level for system logs.
//
// LogLevel defines a log level for system logs. This type is not implemented until
// https://github.com/envoyproxy/gateway/issues/280 is fixed.
// +kubebuilder:validation:Enum=debug;info;error
type LogLevel string

Expand All @@ -137,7 +139,8 @@ const (
LogLevelError LogLevel = "error"
)

// EnvoyProxyStatus defines the observed state of EnvoyProxy
// EnvoyProxyStatus defines the observed state of EnvoyProxy. This type is not implemented
// until https://github.com/envoyproxy/gateway/issues/1007 is fixed.
type EnvoyProxyStatus struct {
// INSERT ADDITIONAL STATUS FIELDS - define observed state of cluster.
// Important: Run "make" to regenerate code after modifying this file.
Expand Down
4 changes: 0 additions & 4 deletions api/config/v1alpha1/groupversion_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
// The full text of the Apache license is available in the LICENSE file at
// the root of the repo.

// Package v1alpha1 contains API Schema definitions for the config v1alpha1 API group.
//
// +kubebuilder:object:generate=true
// +groupName=config.gateway.envoyproxy.io
package v1alpha1

import (
Expand Down
3 changes: 2 additions & 1 deletion api/config/v1alpha1/shared_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ const (
// ProviderTypeKubernetes defines the "Kubernetes" provider.
ProviderTypeKubernetes ProviderType = "Kubernetes"

// ProviderTypeFile defines the "File" provider.
// ProviderTypeFile defines the "File" provider. This type is not implemented
// until https://github.com/envoyproxy/gateway/issues/1001 is fixed.
ProviderTypeFile ProviderType = "File"
)

Expand Down
6 changes: 6 additions & 0 deletions api/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Copyright Envoy Gateway Authors
// SPDX-License-Identifier: Apache-2.0
// The full text of the Apache license is available in the LICENSE file at
// the root of the repo.

package api
44 changes: 12 additions & 32 deletions api/v1alpha1/authenticationfilter_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,16 @@ type AuthenticationFilter struct {
// AuthenticationFilterSpec defines the desired state of the AuthenticationFilter type.
// +union
type AuthenticationFilterSpec struct {
// Type defines the type of authentication provider to use. Supported provider types are:
//
// * JWT: A provider that uses JSON Web Token (JWT) for authenticating requests.
// Type defines the type of authentication provider to use. Supported provider types
// are "JWT".
//
// +unionDiscriminator
Type AuthenticationFilterType `json:"type"`

// JWT defines the JSON Web Token (JWT) authentication provider type. When multiple
// jwtProviders are specified, the JWT is considered valid if any of the providers
// successfully validate the JWT. For additional details, see:
//
// https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/jwt_authn_filter.html
// successfully validate the JWT. For additional details, see
// https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/jwt_authn_filter.html.
//
// +kubebuilder:validation:MaxItems=4
// +optional
Expand All @@ -52,7 +50,8 @@ type AuthenticationFilterSpec struct {
type AuthenticationFilterType string

const (
// JwtAuthenticationFilterProviderType is the JWT authentication provider type.
// JwtAuthenticationFilterProviderType is a provider that uses JSON Web Token (JWT)
// for authenticating requests..
JwtAuthenticationFilterProviderType AuthenticationFilterType = "JWT"
)

Expand All @@ -67,33 +66,17 @@ type JwtAuthenticationFilterProvider struct {
Name string `json:"name"`

// Issuer is the principal that issued the JWT and takes the form of a URL or email address.
// For additional details, see:
//
// URL format: https://tools.ietf.org/html/rfc7519#section-4.1.1
// Email format: https://rfc-editor.org/rfc/rfc5322.html
//
// URL Example:
// issuer: https://auth.example.com
//
// Email Example:
// issuer: jdoe@example.com
//
// If not provided, the JWT issuer is not checked.
// For additional details, see https://tools.ietf.org/html/rfc7519#section-4.1.1 for
// URL format and https://rfc-editor.org/rfc/rfc5322.html for email format. If not provided,
// the JWT issuer is not checked.
//
// +kubebuilder:validation:MaxLength=253
// +optional
Issuer string `json:"issuer,omitempty"`

// Audiences is a list of JWT audiences allowed to access. For additional details, see:
//
// https://tools.ietf.org/html/rfc7519#section-4.1.3
//
// Example:
// audiences:
// - foo.apps.example.com
// bar.apps.example.com
//
// If not provided, JWT audiences are not checked.
// Audiences is a list of JWT audiences allowed access. For additional details, see
// https://tools.ietf.org/html/rfc7519#section-4.1.3. If not provided, JWT audiences
// are not checked.
//
// +kubebuilder:validation:MaxItems=8
// +optional
Expand All @@ -112,9 +95,6 @@ type RemoteJWKS struct {
// URI is the HTTPS URI to fetch the JWKS. Envoy's system trust bundle is used to
// validate the server certificate.
//
// Example:
// uri: https://www.foo.com/oauth2/v1/certs
//
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=253
URI string `json:"uri"`
Expand Down
10 changes: 10 additions & 0 deletions api/v1alpha1/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Copyright Envoy Gateway Authors
// SPDX-License-Identifier: Apache-2.0
// The full text of the Apache license is available in the LICENSE file at
// the root of the repo.

// Package v1alpha1 contains API schema definitions for the gateway.envoyproxy.io API group.
//
// +kubebuilder:object:generate=true
// +groupName=gateway.envoyproxy.io
package v1alpha1
4 changes: 0 additions & 4 deletions api/v1alpha1/groupversion_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
// The full text of the Apache license is available in the LICENSE file at
// the root of the repo.

// Package v1alpha1 contains API Schema definitions for the gateway.envoyproxy.io API group.
//
// +kubebuilder:object:generate=true
// +groupName=gateway.envoyproxy.io
package v1alpha1

import (
Expand Down
41 changes: 19 additions & 22 deletions api/v1alpha1/ratelimitfilter_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,11 @@ type RateLimitFilter struct {
// +union
type RateLimitFilterSpec struct {
// Type decides the scope for the RateLimits.
// Valid RateLimitType values are:
//
// * "Global" - In this mode, the rate limits are applied across all Envoy proxy instances.
// Valid RateLimitType values are "Global".
//
// +unionDiscriminator
Type RateLimitType `json:"type"`
// Global rate limit configuration.
// Global defines global rate limit configuration.
//
// +optional
Global *GlobalRateLimit `json:"global,omitempty"`
Expand All @@ -51,7 +49,7 @@ const (
GlobalRateLimitType RateLimitType = "Global"
)

// GlobalRateLimit defines the global rate limit configuration.
// GlobalRateLimit defines global rate limit configuration.
type GlobalRateLimit struct {
// Rules are a list of RateLimit selectors and limits.
// Each rule and its associated limit is applied
Expand Down Expand Up @@ -116,29 +114,33 @@ type HeaderMatch struct {

// Value within the HTTP header. Due to the
// case-insensitivity of header names, "foo" and "Foo" are considered equivalent.
// Do not set this field when Type="Distinct", implying matching on any/all unique values within the header.
// Do not set this field when Type="Distinct", implying matching on any/all unique
// values within the header.
//
// +optional
// +kubebuilder:validation:MaxLength=1024
Value *string `json:"value,omitempty"`
}

// HeaderMatchType specifies the semantics of how HTTP header values should be
// compared. Valid HeaderMatchType values are:
//
// - "Exact": Use this type to match the exact value of the Value field against the value of the specified HTTP Header.
// - "RegularExpression": Use this type to match a regular expression against the value of the specified HTTP Header.
// The regex string must adhere to the syntax documented in https://github.com/google/re2/wiki/Syntax.
// - "Distinct": Use this type to match any and all possible unique values encountered in the specified HTTP Header.
// Note that each unique value will receive its own rate limit bucket.
// HeaderMatchType specifies the semantics of how HTTP header values should be compared.
// Valid HeaderMatchType values are "Exact", "RegularExpression", and "Distinct".
//
// +kubebuilder:validation:Enum=Exact;RegularExpression;Distinct
type HeaderMatchType string

// HeaderMatchType constants.
const (
HeaderMatchExact HeaderMatchType = "Exact"
// HeaderMatchExact matches the exact value of the Value field against the value of
// the specified HTTP Header.
HeaderMatchExact HeaderMatchType = "Exact"
// HeaderMatchRegularExpression matches a regular expression against the value of the
// specified HTTP Header. The regex string must adhere to the syntax documented in
// https://github.com/google/re2/wiki/Syntax.
HeaderMatchRegularExpression HeaderMatchType = "RegularExpression"
HeaderMatchDistinct HeaderMatchType = "Distinct"
// HeaderMatchDistinct matches any and all possible unique values encountered in the
// specified HTTP Header. Note that each unique value will receive its own rate limit
// bucket.
HeaderMatchDistinct HeaderMatchType = "Distinct"
)

// RateLimitValue defines the limits for rate limiting.
Expand All @@ -148,12 +150,7 @@ type RateLimitValue struct {
}

// RateLimitUnit specifies the intervals for setting rate limits.
// Valid RateLimitUnit values are:
//
// * "Second"
// * "Minute"
// * "Hour"
// * "Day"
// Valid RateLimitUnit values are "Second", "Minute", "Hour", and "Day".
//
// +kubebuilder:validation:Enum=Second;Minute;Hour;Day
type RateLimitUnit string
Expand Down
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<html>
<head>
<meta http-equiv="refresh" content="0; url=/v0.2.0">
<meta http-equiv="refresh" content="0; url=/v0.3.0">
</head>
</html>
Loading