├── geps ├── landing │ └── .gitignore ├── gep-1897 │ ├── images │ │ ├── mesh.png │ │ └── 1897-TLStermtypes.png │ └── metadata.yaml ├── gep-724 │ ├── images │ │ ├── 724-alt1.png │ │ ├── 724-alt2.png │ │ └── 724-proposal.png │ └── metadata.yaml ├── gep-709 │ ├── images │ │ ├── 709-inline.png │ │ └── 709-referencegrant.png │ └── metadata.yaml ├── gep-2649 │ ├── images │ │ ├── 2649-hierarchy.png │ │ ├── 2649-mesh-complex.png │ │ ├── 2649-mesh-simple.png │ │ ├── 2649-ingress-complex.png │ │ ├── 2649-ingress-simple.png │ │ └── 2649-policy-hierarchy.png │ └── metadata.yaml ├── gep-1324 │ ├── images │ │ ├── 1324-backend-ref.png │ │ ├── 1324-service-frontend.png │ │ ├── 1324-resource-view-of-service.png │ │ └── 1324-decomposed-view-of-service.png │ └── metadata.yaml ├── gep-713 │ └── images │ │ ├── 713-ingress-attachment.png │ │ ├── 713-servicebinding-complex.png │ │ ├── 713-servicebinding-simple.png │ │ └── 713-the-diagram-with-policy-admin.png ├── gep-1016 │ └── metadata.yaml ├── gep-922 │ └── metadata.yaml ├── gep-1323 │ └── metadata.yaml ├── gep-1364 │ └── metadata.yaml ├── gep-726 │ └── metadata.yaml ├── gep-735 │ └── metadata.yaml ├── gep-2627 │ └── metadata.yaml ├── gep-1651 │ └── metadata.yaml ├── gep-718 │ └── metadata.yaml ├── gep-851 │ └── metadata.yaml ├── gep-917 │ └── metadata.yaml ├── gep-1748 │ └── metadata.yaml ├── gep-820 │ └── metadata.yaml ├── gep-1709 │ └── metadata.yaml ├── gep-746 │ └── metadata.yaml ├── gep-91 │ └── metadata.yaml ├── gep-957 │ └── metadata.yaml ├── gep-2162 │ └── metadata.yaml ├── gep-1867 │ └── metadata.yaml ├── gep-1762 │ └── metadata.yaml ├── gep-4152 │ └── metadata.yaml ├── gep-1911 │ └── metadata.yaml ├── gep-1686 │ └── metadata.yaml ├── OWNERS ├── gep-1294 │ └── metadata.yaml ├── gep-3155 │ └── metadata.yaml ├── gep-1767 │ └── metadata.yaml ├── gep-2722 │ └── metadata.yaml ├── gep-1282 │ └── metadata.yaml ├── gep-2907 │ └── metadata.yaml ├── gep-2257 │ └── metadata.yaml ├── gep-3171 │ └── metadata.yaml ├── gep-1742 │ └── metadata.yaml ├── gep-2659 │ └── metadata.yaml ├── gep-995 │ └── metadata.yaml ├── gep-1713 │ └── metadata.yaml ├── gep-2643 │ └── metadata.yaml ├── gep-3779 │ └── metadata.yaml └── gep-1619 │ └── metadata.yaml ├── site-src ├── implementations │ └── .gitignore ├── images │ ├── api-model.png │ ├── grpc-routing.png │ ├── http-routing.png │ ├── k8s-favicon.png │ ├── simple-split.png │ ├── gateway-roles.png │ ├── resource-model.png │ ├── v1alpha2-group.png │ ├── policy │ │ ├── hierarchy.png │ │ ├── mesh-complex.png │ │ ├── mesh-simple.png │ │ ├── ingress-complex.png │ │ ├── ingress-simple.png │ │ └── ingress-attachment.png │ ├── backendtlspolicy-api.png │ ├── traffic-splitting-1.png │ ├── traffic-splitting-2.png │ ├── traffic-splitting-3.png │ ├── gateway-route-binding.png │ ├── single-service-gateway.png │ ├── tls-termination-types.png │ ├── grpcroute-basic-example.png │ ├── lifecycle-new-resources.png │ ├── logo │ │ ├── logo-text-horizontal.png │ │ ├── logo-text-horizontal-white.png │ │ └── logo-text-large-horizontal-white.png │ └── httproute-with-backend-tls-policy.png ├── .mkdocs-exclude ├── reference │ ├── images │ │ ├── referencepolicy.png │ │ └── policy-hierarchy.png │ └── policy-attachment.md ├── js │ └── implementations.js └── OWNERS ├── conformance ├── echo-basic │ ├── .gitignore │ └── .go.mod ├── tests │ ├── gatewayclass-observed-generation-bump.yaml │ ├── httproute-observed-generation-bump.yaml │ ├── httproute-simple-same-namespace.yaml │ ├── gateway-optional-address-value.yaml │ ├── httproute-cross-namespace.yaml │ ├── mesh │ │ ├── httproute-simple-same-namespace.yaml │ │ ├── httproute-weight.yaml │ │ ├── httproute-307-redirect.yaml │ │ ├── httproute-303-redirect.yaml │ │ ├── httproute-308-redirect.yaml │ │ ├── mesh-frontend.yaml │ │ ├── grpcroute-weight.yaml │ │ ├── mesh-split.yaml │ │ ├── mesh-consumer-route.yaml │ │ ├── httproute-named-rule.yaml │ │ ├── httproute-matching.yaml │ │ ├── httproute-redirect-host-and-status.yaml │ │ └── main.go │ ├── httproute-invalid-nonexistent-backendref.yaml │ ├── httproute-invalid-cross-namespace-parent-ref.yaml │ ├── httproute-invalid-cross-namespace-backend-ref.yaml │ ├── httproute-invalid-backendref-unknown-kind.yaml │ ├── gateway-observed-generation-bump.yaml │ ├── gateway-infrastructure.yaml │ ├── httproute-303-redirect.yaml │ ├── httproute-307-redirect.yaml │ ├── httproute-308-redirect.yaml │ ├── httproute-weight.yaml │ ├── grpcroute-weight.yaml │ ├── httproute-backend-protocol-h2c.yaml │ ├── httproute-backend-protocol-websocket.yaml │ ├── httproute-exact-path-matching.yaml │ ├── httproute-invalid-parentref-not-matching-listener-port.yaml │ ├── httproute-named-rule.yaml │ ├── httproute-invalid-parentref-not-matching-section-name.yaml │ ├── gateway-secret-missing-reference-grant.yaml │ ├── grpcroute-exact-method-matching.yaml │ ├── httproute-matching.yaml │ ├── httproute-timeout-request.yaml │ ├── udproute-simple.yaml │ ├── grpcroute-named-rule.yaml │ ├── httproute-redirect-host-and-status.yaml │ ├── httproute-timeout-backend-request.yaml │ ├── httproute-https-listener.yaml │ ├── httproute-reference-grant.yaml │ ├── httproute-disallowed-kind.yaml │ ├── httproute-request-header-modifier-backend-weights.yaml │ ├── main.go │ ├── tlsroute-simple-same-namespace.yaml │ ├── gateway-invalid-route-kind.yaml │ └── httproute-cors-allow-credentials-behavior.yaml ├── reports │ ├── v0.8.0 │ │ ├── envoy-gateway │ │ │ └── README.md │ │ ├── kumahq-kuma │ │ │ └── README.md │ │ ├── projectcontour-contour │ │ │ └── README.md │ │ └── nginx-nginx-gateway-fabric │ │ │ └── README.md │ ├── v1.0.0 │ │ ├── istio-istio │ │ │ └── README.md │ │ ├── kumahq-kuma │ │ │ └── README.md │ │ ├── envoy-gateway │ │ │ └── README.md │ │ ├── cilium │ │ │ └── README.md │ │ └── azure-application-gateway-for-containers │ │ │ └── README.md │ ├── v0.7.1 │ │ ├── cilium │ │ │ └── README.md │ │ ├── istio-istio │ │ │ └── README.md │ │ ├── kumahq-kuma │ │ │ └── README.md │ │ ├── nginx-nginx-gateway-fabric │ │ │ └── README.md │ │ ├── kong-kubernetes-ingress-controller │ │ │ └── README.md │ │ └── projectcontour-contour │ │ │ └── README.md │ ├── v0.8.1 │ │ ├── cilium │ │ │ └── README.md │ │ ├── nginx-nginx-gateway-fabric │ │ │ └── README.md │ │ └── kong-kubernetes-ingress-controller │ │ │ └── README.md │ ├── v1.1.0 │ │ ├── istio-istio │ │ │ └── README.md │ │ ├── cilium-cilium │ │ │ └── README.md │ │ └── envoy-gateway │ │ │ └── README.md │ ├── v1.2.0 │ │ ├── istio-istio │ │ │ └── README.md │ │ ├── cilium-cilium │ │ │ └── README.md │ │ └── envoy-gateway │ │ │ └── README.md │ ├── v1.4.0 │ │ ├── istio-istio │ │ │ └── README.md │ │ └── cilium │ │ │ └── README.md │ ├── v1.2.1 │ │ ├── istio-istio │ │ │ └── README.md │ │ ├── cilium-cilium │ │ │ └── README.md │ │ ├── kubvernor │ │ │ └── kubvernor-conformance-output-1.2.1.yaml │ │ └── envoy-gateway │ │ │ └── README.md │ └── v1.3.0 │ │ ├── istio-istio │ │ └── README.md │ │ ├── cilium-cilium │ │ └── README.md │ │ ├── cloud-provider-kind │ │ └── standard-v0.8.0-alpha.1-default-report.yaml │ │ ├── agentgateway-agentgateway │ │ └── README.md │ │ └── gravitee │ │ └── standard-4.8.5-default-report.yaml ├── OWNERS ├── embed.go ├── utils │ └── tlog │ │ └── tlog_test.go ├── conformance_test.go └── apis │ └── v1 │ └── doc.go ├── docker └── Dockerfile.echo-advanced ├── CHANGELOG.md ├── go.work ├── gwctl └── README.md ├── code-of-conduct.md ├── examples ├── standard │ ├── multicluster │ │ ├── 0-namespaces.yaml │ │ ├── httproute-simple.yaml │ │ ├── httproute-gamma.yaml │ │ ├── httproute-hybrid.yaml │ │ ├── httproute-method.yaml │ │ ├── httproute-referencegrant.yaml │ │ └── httproute-location.yaml │ ├── 0-namespaces.yaml │ ├── reference-grant.yaml │ ├── simple-gateway │ │ ├── httproute.yaml │ │ └── gateway.yaml │ ├── traffic-splitting │ │ ├── simple-split.yaml │ │ ├── traffic-split-3.yaml │ │ ├── grpc-traffic-split-2.yaml │ │ ├── traffic-split-2.yaml │ │ └── traffic-split-1.yaml │ ├── backendtlspolicy │ │ ├── backendtlspolicy-system-certs.yaml │ │ └── backendtlspolicy-ca-certs.yaml │ ├── simple-http-https │ │ ├── bar-route.yaml │ │ ├── tls-redirect-route.yaml │ │ ├── foo-route.yaml │ │ └── gateway.yaml │ ├── http-route-attachment │ │ ├── httproute.yaml │ │ ├── gateway-namespaces.yaml │ │ └── gateway-strict.yaml │ ├── cross-namespace-routing │ │ ├── store-route.yaml │ │ ├── 0-namespaces.yaml │ │ ├── gateway.yaml │ │ └── site-route.yaml │ ├── http-routing │ │ ├── foo-httproute.yaml │ │ ├── bar-httproute.yaml │ │ └── gateway.yaml │ ├── grpc-routing │ │ ├── foo-grpcroute.yaml │ │ ├── bar-grpcroute.yaml │ │ ├── reflection-grpcroute.yaml │ │ └── gateway.yaml │ ├── http-rewrite.yaml │ ├── http-redirect-path.yaml │ ├── http-redirect-rewrite │ │ ├── httproute-redirect-https.yaml │ │ ├── httproute-redirect-http.yaml │ │ ├── httproute-rewrite.yaml │ │ ├── gateway-redirect-http-https.yaml │ │ ├── httproute-redirect-full.yaml │ │ ├── httproute-redirect-prefix.yaml │ │ ├── httproute-redirect-307.yaml │ │ ├── httproute-redirect-308.yaml │ │ ├── httproute-redirect-303.yaml │ │ ├── httproute-rewrite-full-path.yaml │ │ └── httproute-rewrite-prefix-path.yaml │ ├── http-filter.yaml │ ├── grpc-filter.yaml │ ├── http-request-header-remove.yaml │ ├── http-request-header-add.yaml │ ├── http-request-mirroring │ │ └── httproute-mirroring.yaml │ ├── http-request-header-set.yaml │ ├── httproute.yaml │ ├── tls-basic.yaml │ ├── wildcard-tls-gateway.yaml │ ├── gateway-addresses.yaml │ └── tls-cert-cross-namespace.yaml └── experimental │ ├── v1alpha2 │ └── tls-routing │ │ ├── gateway.yaml │ │ └── tls-route.yaml │ ├── v1alpha3 │ └── tls-routing │ │ ├── gateway.yaml │ │ └── tls-route.yaml │ ├── destination-port-matching-tcp.yaml │ ├── backend-tls.yaml │ ├── http-route-timeouts │ └── timeout-example.yaml │ ├── http-route-rule-name.yaml │ └── http-response-header.yaml ├── tools ├── geps │ └── templates │ │ ├── template.tmpl │ │ └── template-tab.tmpl └── README.md ├── hack ├── invalid-examples │ ├── standard │ │ ├── gatewayclass │ │ │ └── invalid-controller.yaml │ │ ├── httproute │ │ │ ├── invalid-method.yaml │ │ │ ├── invalid-filter-empty.yaml │ │ │ ├── invalid-backend-port.yaml │ │ │ ├── invalid-hostname.yaml │ │ │ ├── invalid-backend-kind.yaml │ │ │ ├── httproute-portless-backend.yaml │ │ │ ├── invalid-backend-group.yaml │ │ │ ├── invalid-path-specialchars.yaml │ │ │ ├── invalid-header-name.yaml │ │ │ ├── invalid-filter-wrong-field.yaml │ │ │ ├── httproute-portless-service.yaml │ │ │ ├── invalid-path-alphanum-specialchars-mix.yaml │ │ │ ├── duplicate-header-match.yaml │ │ │ ├── duplicate-query-match.yaml │ │ │ ├── invalid-filter-duplicate-header.yaml │ │ │ ├── invalid-httpredirect-hostname.yaml │ │ │ ├── invalid-request-redirect-with-backendref.yaml │ │ │ └── invalid-filter-duplicate.yaml │ │ ├── referencegrant │ │ │ ├── missing-from.yaml │ │ │ ├── missing-to.yaml │ │ │ └── missing-ns.yaml │ │ └── gateway │ │ │ ├── invalid-listener-name.yaml │ │ │ ├── invalid-listener-port.yaml │ │ │ ├── hostname-tcp.yaml │ │ │ ├── hostname-udp.yaml │ │ │ ├── invalid-tls-mode.yaml │ │ │ ├── duplicate-listeners.yaml │ │ │ ├── tlsconfig-tcp.yaml │ │ │ └── invalid-addresses.yaml │ └── experimental │ │ ├── tlsroute │ │ ├── no-hostname.yaml │ │ └── invalid-hostname.yaml │ │ └── httproute │ │ ├── invalid-filter-externalauth-empty.yaml │ │ ├── invalid-filter-externalauth-no-protocol.yaml │ │ ├── invalid-filter-externalauth-bad-http-path.yaml │ │ └── invalid-header-value.yaml ├── crd-ref-templates │ ├── gv_list.tpl │ ├── README.md │ ├── type_members.tpl │ └── gv_details.tpl ├── mkdocs │ ├── OWNERS │ └── image │ │ ├── requirements.txt │ │ ├── entrypoint.sh │ │ └── Dockerfile ├── boilerplate │ ├── boilerplate.go.txt │ ├── boilerplate.generatego.txt │ ├── boilerplate.py.txt │ └── boilerplate.sh.txt ├── install-examples.sh ├── delete-crds.sh └── verify-codegen.sh ├── .custom-gcl.yml ├── .github ├── ISSUE_TEMPLATE │ ├── documentation.md │ ├── config.yml │ ├── conformance-test.md │ ├── enhancement.md │ └── bug.md └── workflows │ └── kal.yml ├── docs ├── 404.html └── index.html ├── OWNERS ├── .openvex └── templates │ └── main.openvex.json ├── CHANGELOG ├── 1.3-TEAM.md ├── 1.1-TEAM.md └── 1.2-TEAM.md ├── config └── crd │ ├── kustomization.yaml │ └── experimental │ └── kustomization.yaml ├── crd-ref-docs.yaml ├── .gitattributes ├── SECURITY_CONTACTS ├── apis ├── doc.go ├── v1 │ └── doc.go ├── v1beta1 │ ├── doc.go │ └── object_reference_types.go ├── v1alpha2 │ ├── doc.go │ └── object_reference_types.go └── v1alpha3 │ ├── doc.go │ └── shared_types.go ├── apisx ├── doc.go └── v1alpha1 │ └── doc.go ├── pkg └── client │ └── clientset │ └── versioned │ ├── fake │ └── doc.go │ ├── typed │ ├── apis │ │ ├── v1 │ │ │ ├── doc.go │ │ │ ├── fake │ │ │ │ └── doc.go │ │ │ └── generated_expansion.go │ │ ├── v1alpha2 │ │ │ ├── fake │ │ │ │ └── doc.go │ │ │ ├── doc.go │ │ │ └── generated_expansion.go │ │ ├── v1alpha3 │ │ │ ├── fake │ │ │ │ └── doc.go │ │ │ ├── doc.go │ │ │ └── generated_expansion.go │ │ └── v1beta1 │ │ │ ├── fake │ │ │ └── doc.go │ │ │ ├── doc.go │ │ │ └── generated_expansion.go │ └── apisx │ │ └── v1alpha1 │ │ ├── fake │ │ └── doc.go │ │ ├── doc.go │ │ └── generated_expansion.go │ └── scheme │ └── doc.go ├── netlify.toml └── .gitignore /geps/landing/.gitignore: -------------------------------------------------------------------------------- 1 | *.md -------------------------------------------------------------------------------- /site-src/implementations/.gitignore: -------------------------------------------------------------------------------- 1 | * -------------------------------------------------------------------------------- /conformance/echo-basic/.gitignore: -------------------------------------------------------------------------------- 1 | echo-basic 2 | -------------------------------------------------------------------------------- /docker/Dockerfile.echo-advanced: -------------------------------------------------------------------------------- 1 | FROM gcr.io/istio-release/app:1.21.2 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This has been moved to the CHANGELOG directory. 4 | -------------------------------------------------------------------------------- /go.work: -------------------------------------------------------------------------------- 1 | go 1.24.0 2 | 3 | use ( 4 | . 5 | ./conformance 6 | ./tests 7 | ./tools 8 | ) 9 | -------------------------------------------------------------------------------- /gwctl/README.md: -------------------------------------------------------------------------------- 1 | > [!NOTE] 2 | > Ongoing development has moved to https://github.com/kubernetes-sigs/gwctl -------------------------------------------------------------------------------- /geps/gep-1897/images/mesh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-1897/images/mesh.png -------------------------------------------------------------------------------- /site-src/images/api-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/api-model.png -------------------------------------------------------------------------------- /geps/gep-724/images/724-alt1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-724/images/724-alt1.png -------------------------------------------------------------------------------- /geps/gep-724/images/724-alt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-724/images/724-alt2.png -------------------------------------------------------------------------------- /site-src/images/grpc-routing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/grpc-routing.png -------------------------------------------------------------------------------- /site-src/images/http-routing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/http-routing.png -------------------------------------------------------------------------------- /site-src/images/k8s-favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/k8s-favicon.png -------------------------------------------------------------------------------- /site-src/images/simple-split.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/simple-split.png -------------------------------------------------------------------------------- /geps/gep-709/images/709-inline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-709/images/709-inline.png -------------------------------------------------------------------------------- /site-src/images/gateway-roles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/gateway-roles.png -------------------------------------------------------------------------------- /site-src/images/resource-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/resource-model.png -------------------------------------------------------------------------------- /site-src/images/v1alpha2-group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/v1alpha2-group.png -------------------------------------------------------------------------------- /geps/gep-724/images/724-proposal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-724/images/724-proposal.png -------------------------------------------------------------------------------- /site-src/images/policy/hierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/policy/hierarchy.png -------------------------------------------------------------------------------- /geps/gep-2649/images/2649-hierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-2649/images/2649-hierarchy.png -------------------------------------------------------------------------------- /site-src/.mkdocs-exclude: -------------------------------------------------------------------------------- 1 | .mkdocs-exclude 2 | .nojekyll 3 | .placeholder 4 | search/search_index.json 5 | sitemap.xml.gz 6 | sitemap.xml 7 | -------------------------------------------------------------------------------- /site-src/images/backendtlspolicy-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/backendtlspolicy-api.png -------------------------------------------------------------------------------- /site-src/images/policy/mesh-complex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/policy/mesh-complex.png -------------------------------------------------------------------------------- /site-src/images/policy/mesh-simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/policy/mesh-simple.png -------------------------------------------------------------------------------- /site-src/images/traffic-splitting-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/traffic-splitting-1.png -------------------------------------------------------------------------------- /site-src/images/traffic-splitting-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/traffic-splitting-2.png -------------------------------------------------------------------------------- /site-src/images/traffic-splitting-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/traffic-splitting-3.png -------------------------------------------------------------------------------- /geps/gep-1324/images/1324-backend-ref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-1324/images/1324-backend-ref.png -------------------------------------------------------------------------------- /geps/gep-1897/images/1897-TLStermtypes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-1897/images/1897-TLStermtypes.png -------------------------------------------------------------------------------- /geps/gep-2649/images/2649-mesh-complex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-2649/images/2649-mesh-complex.png -------------------------------------------------------------------------------- /geps/gep-2649/images/2649-mesh-simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-2649/images/2649-mesh-simple.png -------------------------------------------------------------------------------- /geps/gep-709/images/709-referencegrant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-709/images/709-referencegrant.png -------------------------------------------------------------------------------- /site-src/images/gateway-route-binding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/gateway-route-binding.png -------------------------------------------------------------------------------- /site-src/images/policy/ingress-complex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/policy/ingress-complex.png -------------------------------------------------------------------------------- /site-src/images/policy/ingress-simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/policy/ingress-simple.png -------------------------------------------------------------------------------- /site-src/images/single-service-gateway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/single-service-gateway.png -------------------------------------------------------------------------------- /site-src/images/tls-termination-types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/tls-termination-types.png -------------------------------------------------------------------------------- /geps/gep-2649/images/2649-ingress-complex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-2649/images/2649-ingress-complex.png -------------------------------------------------------------------------------- /geps/gep-2649/images/2649-ingress-simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-2649/images/2649-ingress-simple.png -------------------------------------------------------------------------------- /site-src/images/grpcroute-basic-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/grpcroute-basic-example.png -------------------------------------------------------------------------------- /site-src/images/lifecycle-new-resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/lifecycle-new-resources.png -------------------------------------------------------------------------------- /site-src/images/logo/logo-text-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/logo/logo-text-horizontal.png -------------------------------------------------------------------------------- /site-src/images/policy/ingress-attachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/policy/ingress-attachment.png -------------------------------------------------------------------------------- /site-src/reference/images/referencepolicy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/reference/images/referencepolicy.png -------------------------------------------------------------------------------- /geps/gep-1324/images/1324-service-frontend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-1324/images/1324-service-frontend.png -------------------------------------------------------------------------------- /geps/gep-2649/images/2649-policy-hierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-2649/images/2649-policy-hierarchy.png -------------------------------------------------------------------------------- /geps/gep-713/images/713-ingress-attachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-713/images/713-ingress-attachment.png -------------------------------------------------------------------------------- /site-src/reference/images/policy-hierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/reference/images/policy-hierarchy.png -------------------------------------------------------------------------------- /geps/gep-713/images/713-servicebinding-complex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-713/images/713-servicebinding-complex.png -------------------------------------------------------------------------------- /geps/gep-713/images/713-servicebinding-simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-713/images/713-servicebinding-simple.png -------------------------------------------------------------------------------- /site-src/images/logo/logo-text-horizontal-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/logo/logo-text-horizontal-white.png -------------------------------------------------------------------------------- /geps/gep-1324/images/1324-resource-view-of-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-1324/images/1324-resource-view-of-service.png -------------------------------------------------------------------------------- /site-src/images/httproute-with-backend-tls-policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/httproute-with-backend-tls-policy.png -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # Kubernetes Community Code of Conduct 2 | 3 | Please refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md) 4 | -------------------------------------------------------------------------------- /geps/gep-1324/images/1324-decomposed-view-of-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-1324/images/1324-decomposed-view-of-service.png -------------------------------------------------------------------------------- /geps/gep-713/images/713-the-diagram-with-policy-admin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/geps/gep-713/images/713-the-diagram-with-policy-admin.png -------------------------------------------------------------------------------- /site-src/images/logo/logo-text-large-horizontal-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/HEAD/site-src/images/logo/logo-text-large-horizontal-white.png -------------------------------------------------------------------------------- /examples/standard/multicluster/0-namespaces.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: foo 5 | --- 6 | apiVersion: v1 7 | kind: Namespace 8 | metadata: 9 | name: bar 10 | -------------------------------------------------------------------------------- /tools/geps/templates/template.tmpl: -------------------------------------------------------------------------------- 1 | # {{ .GepType }} GEPs 2 | 3 | {{- with .GepsDetails }} 4 | {{- range . }} 5 | - [GEP-{{ .Number }}: {{ .Name }}](/geps/gep-{{ .Number }}/) 6 | {{- end }} 7 | {{- end }} 8 | -------------------------------------------------------------------------------- /geps/gep-1016/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1016 4 | name: GRPCRoute 5 | status: Standard 6 | authors: 7 | - gnossen 8 | - robscott 9 | -------------------------------------------------------------------------------- /geps/gep-922/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 922 4 | name: Gateway API Versioning 5 | status: Memorandum 6 | authors: 7 | - robscott 8 | -------------------------------------------------------------------------------- /geps/gep-1323/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1323 4 | name: Response Header Filter 5 | status: Standard 6 | authors: 7 | - aryan9600 8 | 9 | -------------------------------------------------------------------------------- /geps/gep-1364/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1364 4 | name: Status and Conditions Update 5 | status: Standard 6 | authors: 7 | - youngnick 8 | -------------------------------------------------------------------------------- /geps/gep-724/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 724 4 | name: Refresh Route-Gateway Binding 5 | status: Standard 6 | authors: 7 | - robscott 8 | -------------------------------------------------------------------------------- /geps/gep-726/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 726 4 | name: Add Path Redirects and Rewrites 5 | status: Standard 6 | authors: 7 | - robscott 8 | -------------------------------------------------------------------------------- /geps/gep-735/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 735 4 | name: TCP and UDP addresses matching 5 | status: Declined 6 | authors: 7 | - shaneutt 8 | -------------------------------------------------------------------------------- /geps/gep-2627/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 2627 4 | name: DNS configuration for Gateway API 5 | status: Provisional 6 | authors: 7 | - maleck13 8 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/gatewayclass/invalid-controller.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: GatewayClass 3 | metadata: 4 | name: invalid-controller 5 | spec: 6 | controllerName: example 7 | -------------------------------------------------------------------------------- /geps/gep-1651/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1651 4 | name: Gateway Routability 5 | status: Provisional 6 | authors: 7 | - dprotaso 8 | - sunjayBhatia 9 | -------------------------------------------------------------------------------- /hack/invalid-examples/experimental/tlsroute/no-hostname.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1alpha3 2 | kind: TLSRoute 3 | metadata: 4 | name: no-hostname 5 | spec: 6 | rules: 7 | - backendRefs: 8 | - name: foo 9 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-method.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-method 5 | spec: 6 | rules: 7 | - matches: 8 | - method: NOTREAL 9 | -------------------------------------------------------------------------------- /geps/gep-718/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 718 4 | name: Rework forwardTo segment in routes 5 | status: Standard 6 | authors: 7 | - hbagdi 8 | - robscott 9 | -------------------------------------------------------------------------------- /geps/gep-851/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 851 4 | name: Allow Multiple Certificate Refs per Gateway Listener 5 | status: Standard 6 | authors: 7 | - robscott 8 | -------------------------------------------------------------------------------- /geps/gep-917/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 917 4 | name: Gateway API Conformance Testing 5 | status: Memorandum 6 | authors: 7 | - youngnick 8 | - robscott 9 | -------------------------------------------------------------------------------- /site-src/js/implementations.js: -------------------------------------------------------------------------------- 1 | document$.subscribe(function() { 2 | var tables = document.querySelectorAll("article table:not([class])") 3 | tables.forEach(function(table) { 4 | new Tablesort(table) 5 | }) 6 | }) 7 | 8 | 9 | -------------------------------------------------------------------------------- /.custom-gcl.yml: -------------------------------------------------------------------------------- 1 | version: v2.7.0 2 | name: golangci-kube-api-linter 3 | destination: ./bin 4 | plugins: 5 | - module: 'sigs.k8s.io/kube-api-linter' 6 | version: 'v0.0.0-20251201121224-8e86c463aeb8' # Pin to a commit while there's no tag 7 | -------------------------------------------------------------------------------- /geps/gep-1748/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1748 4 | name: Gateway API Interaction with Multi-Cluster Services 5 | status: Experimental 6 | authors: 7 | - robscott 8 | -------------------------------------------------------------------------------- /geps/gep-709/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 709 4 | name: Cross Namespace References from Routes 5 | status: Standard 6 | authors: 7 | - robscott 8 | - youngnick 9 | -------------------------------------------------------------------------------- /geps/gep-820/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 820 4 | name: Drop extension points from Route matches 5 | status: Standard 6 | authors: 7 | - hbagdi 8 | - robscott 9 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/referencegrant/missing-from.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1beta1 2 | kind: ReferenceGrant 3 | metadata: 4 | name: missing-from 5 | spec: 6 | to: 7 | - group: "" 8 | kind: "Service" 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Documentation 3 | about: Suggest an improvement to documentation 4 | labels: kind/documentation 5 | --- 6 | 7 | **What would you like to be added**: 8 | 9 | **Why this is needed**: 10 | -------------------------------------------------------------------------------- /geps/gep-1709/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1709 4 | name: Conformance Profiles 5 | status: Standard 6 | authors: 7 | - shaneutt 8 | - mlavacca 9 | - arkodg 10 | -------------------------------------------------------------------------------- /geps/gep-746/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 746 4 | name: Replace Cert Refs on HTTPRoute with Cross Namespace Refs from Gateway 5 | status: Standard 6 | authors: 7 | - robscott 8 | -------------------------------------------------------------------------------- /geps/gep-91/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 91 4 | name: Client Certificate Validation for TLS terminating at the Gateway Listener 5 | status: Experimental 6 | authors: 7 | - arkodg 8 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-filter-empty.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-filter-empty 5 | spec: 6 | rules: 7 | - filters: 8 | - type: RequestHeaderModifier 9 | -------------------------------------------------------------------------------- /geps/gep-957/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 957 4 | name: Destination Port Matching 5 | status: Standard 6 | authors: 7 | - cxhiano 8 | - robscott 9 | - shaneutt 10 | 11 | -------------------------------------------------------------------------------- /conformance/tests/gatewayclass-observed-generation-bump.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: GatewayClass 3 | metadata: 4 | name: gatewayclass-observed-generation-bump 5 | spec: 6 | controllerName: "{GATEWAY_CONTROLLER_NAME}" 7 | description: "old" 8 | -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Redirecting to https://gateway-api.sigs.k8s.io/ 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Redirecting to https://gateway-api.sigs.k8s.io/ 4 | 5 | 6 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/referencegrant/missing-to.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1beta1 2 | kind: ReferenceGrant 3 | metadata: 4 | name: missing-to 5 | spec: 6 | from: 7 | - group: "" 8 | kind: "Service" 9 | namespace: "example" 10 | -------------------------------------------------------------------------------- /hack/invalid-examples/experimental/httproute/invalid-filter-externalauth-empty.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-filter-externalauth-empty 5 | spec: 6 | rules: 7 | - filters: 8 | - type: ExternalAuth 9 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-backend-port.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-backend-port 5 | spec: 6 | rules: 7 | - backendRefs: 8 | - name: my-service1 9 | port: 800080 10 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-hostname.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-hostname 5 | spec: 6 | hostnames: 7 | - http://a< 8 | rules: 9 | - backendRefs: 10 | - name: foo 11 | -------------------------------------------------------------------------------- /tools/geps/templates/template-tab.tmpl: -------------------------------------------------------------------------------- 1 | # GEPs List 2 | {{ range . }} 3 | === "{{ .GepType }}" 4 | {{- with .GepsDetails }} 5 | {{ range . }} 6 | - [GEP-{{ .Number }}: {{ .Name }}](/geps/gep-{{ .Number }}/) 7 | {{- end }} 8 | {{ end }} 9 | {{- end }} 10 | -------------------------------------------------------------------------------- /hack/invalid-examples/experimental/tlsroute/invalid-hostname.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1alpha2 2 | kind: TLSRoute 3 | metadata: 4 | name: invalid-hostname 5 | spec: 6 | hostnames: 7 | - http://a< 8 | rules: 9 | - backendRefs: 10 | - name: foo 11 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-backend-kind.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-backend-kind 5 | spec: 6 | rules: 7 | - backendRefs: 8 | - kind: "*" 9 | name: foo 10 | port: 80 11 | -------------------------------------------------------------------------------- /conformance/reports/v0.8.0/envoy-gateway/README.md: -------------------------------------------------------------------------------- 1 | # Envoy Gateway 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|latest|x|[latest report](./latest-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /geps/gep-2162/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 2162 4 | name: Supported features in GatewayClass Status 5 | status: Standard 6 | authors: 7 | - LiorLieberman 8 | - robscott 9 | - spacewander 10 | - shaneutt 11 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/httproute-portless-backend.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: portless-backend 5 | spec: 6 | parentRefs: 7 | - name: prod-web 8 | rules: 9 | - backendRefs: 10 | - name: foo 11 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-backend-group.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-backend-group 5 | spec: 6 | rules: 7 | - backendRefs: 8 | - group: "*" 9 | name: foo 10 | port: 80 11 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/gateway/invalid-listener-name.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: invalid-listener-name 5 | spec: 6 | gatewayClassName: example 7 | listeners: 8 | - name: bad> 9 | protocol: HTTP 10 | port: 80 11 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-path-specialchars.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-path-specialchars 5 | spec: 6 | rules: 7 | - matches: 8 | - path: 9 | type: PathPrefix 10 | value: /[] 11 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/gateway/invalid-listener-port.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: invalid-listener-port 5 | spec: 6 | gatewayClassName: example 7 | listeners: 8 | - name: foo 9 | protocol: HTTP 10 | port: 123456789 11 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/gateway/hostname-tcp.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: hostname-tcp 5 | spec: 6 | gatewayClassName: example 7 | listeners: 8 | - name: example 9 | hostname: example.com 10 | protocol: TCP 11 | port: 80 12 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/gateway/hostname-udp.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: hostname-udp 5 | spec: 6 | gatewayClassName: example 7 | listeners: 8 | - name: example 9 | hostname: example.com 10 | protocol: UDP 11 | port: 80 12 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-header-name.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-header-name 5 | spec: 6 | rules: 7 | - matches: 8 | - headers: 9 | - type: Exact 10 | name: magic/ 11 | value: foo 12 | -------------------------------------------------------------------------------- /examples/standard/0-namespaces.yaml: -------------------------------------------------------------------------------- 1 | # These namespaces can be used for examples without recreating them each time. 2 | --- 3 | apiVersion: v1 4 | kind: Namespace 5 | metadata: 6 | name: gateway-api-example-ns1 7 | --- 8 | apiVersion: v1 9 | kind: Namespace 10 | metadata: 11 | name: gateway-api-example-ns2 12 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/referencegrant/missing-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1beta1 2 | kind: ReferenceGrant 3 | metadata: 4 | name: missing-ns 5 | spec: 6 | to: 7 | - group: "" 8 | kind: "Service" 9 | from: 10 | - group: "gateway.networking.k8s.io" 11 | kind: "HTTPRoute" 12 | -------------------------------------------------------------------------------- /geps/gep-1867/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1867 4 | name: Per-Gateway Infrastructure 5 | status: Standard 6 | authors: 7 | - howardjohn 8 | relationships: 9 | extends: 10 | - number: 1762 11 | name: In Cluster Gateway Deployments 12 | -------------------------------------------------------------------------------- /hack/invalid-examples/experimental/httproute/invalid-filter-externalauth-no-protocol.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-filter-externalauth-empty 5 | spec: 6 | rules: 7 | - filters: 8 | - type: ExternalAuth 9 | externalAuth: {} 10 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: "Issue regarding a specific implementation of the API" 3 | url: https://gateway-api.sigs.k8s.io/implementations/ 4 | about: "Please file any issues related to a specific implementation to their corresponding issue tracker. Only API related issues should be filed here." 5 | -------------------------------------------------------------------------------- /conformance/reports/v1.0.0/istio-istio/README.md: -------------------------------------------------------------------------------- 1 | # Istio 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[1.20](https://github.com/istio/istio/releases/tag/1.20.0)|x|[v1.20 report](./1.20-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-filter-wrong-field.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-filter-wrong-field 5 | spec: 6 | rules: 7 | - filters: 8 | - type: RequestHeaderModifier 9 | requestRedirect: 10 | port: 443 11 | 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/conformance-test.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Conformance Test 3 | about: Suggest a new Conformance Test 4 | labels: area/conformance-test 5 | 6 | --- 7 | 8 | 9 | **What would you like to be added**: 10 | 11 | **Why this is needed**: 12 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/gateway/invalid-tls-mode.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: duplicate-listeners 5 | spec: 6 | gatewayClassName: example 7 | listeners: 8 | - name: foo 9 | protocol: HTTPS 10 | port: 443 11 | tls: 12 | mode: Passthrough 13 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/httproute-portless-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: portless-service 5 | spec: 6 | parentRefs: 7 | - name: prod-web 8 | rules: 9 | - backendRefs: 10 | - name: foo 11 | kind: Service 12 | group: "" 13 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-path-alphanum-specialchars-mix.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-path-alphanum-specialchars-mix 5 | spec: 6 | rules: 7 | - matches: 8 | - path: 9 | type: PathPrefix 10 | value: /my[/]path01 11 | -------------------------------------------------------------------------------- /OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | # See the OWNERS_ALIASES file at https://github.com/kubernetes-sigs/gateway-api/blob/main/OWNERS_ALIASES for a list of members for each alias. 3 | 4 | approvers: 5 | - sig-network-leads 6 | - gateway-api-maintainers 7 | 8 | reviewers: 9 | - gateway-api-maintainers 10 | -------------------------------------------------------------------------------- /conformance/reports/v0.7.1/cilium/README.md: -------------------------------------------------------------------------------- 1 | # Cilium 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[v1.14.0](https://github.com/cilium/cilium/releases/tag/v1.14.0)|x|[v1.14.0 report](./v1.14.0-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/reports/v0.7.1/istio-istio/README.md: -------------------------------------------------------------------------------- 1 | # Istio 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[pull-46148](https://github.com/istio/istio/pull/46148)|x|[PR #46148 report](./pull-46148-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/reports/v0.8.0/kumahq-kuma/README.md: -------------------------------------------------------------------------------- 1 | # KumaHQ Kuma 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[2.4.1](https://github.com/kumahq/kuma/releases/tag/2.4.1)|x|[v2.4.1 report](./2.4.1-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/reports/v1.0.0/kumahq-kuma/README.md: -------------------------------------------------------------------------------- 1 | # KumaHQ Kuma 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[2.6.0](https://github.com/kumahq/kuma/releases/tag/2.6.0)|x|[v2.6.0 report](./2.6.0-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /examples/experimental/v1alpha2/tls-routing/gateway.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: example-gateway 5 | spec: 6 | gatewayClassName: example-gateway-class 7 | listeners: 8 | - name: tls 9 | protocol: TLS 10 | port: 443 11 | tls: 12 | mode: Passthrough 13 | -------------------------------------------------------------------------------- /examples/experimental/v1alpha2/tls-routing/tls-route.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1alpha2 2 | kind: TLSRoute 3 | metadata: 4 | name: example-route 5 | spec: 6 | parentRefs: 7 | - name: example-gateway 8 | sectionName: tls 9 | rules: 10 | - backendRefs: 11 | - name: example-svc 12 | port: 443 13 | -------------------------------------------------------------------------------- /examples/experimental/v1alpha3/tls-routing/gateway.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: example-gateway 5 | spec: 6 | gatewayClassName: example-gateway-class 7 | listeners: 8 | - name: tls 9 | protocol: TLS 10 | port: 443 11 | tls: 12 | mode: Passthrough 13 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/duplicate-header-match.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: duplicate-header-match 5 | spec: 6 | rules: 7 | - matches: 8 | - headers: 9 | - name: foo 10 | value: bar 11 | - name: foo 12 | value: bar 13 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/duplicate-query-match.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: duplicate-query-match 5 | spec: 6 | rules: 7 | - matches: 8 | - queryParams: 9 | - name: foo 10 | value: bar 11 | - name: foo 12 | value: bar 13 | -------------------------------------------------------------------------------- /conformance/reports/v0.7.1/kumahq-kuma/README.md: -------------------------------------------------------------------------------- 1 | # KumaHQ Kuma 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|0.0.0-preview.vcf063c043|x|[v0.0.0-preview.vcf063c043 report](./0.0.0-preview.vcf063c043-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /geps/gep-1762/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1762 4 | name: In Cluster Gateway Deployments 5 | status: Standard 6 | authors: 7 | - howardjohn 8 | - frankbu 9 | relationships: 10 | extendedBy: 11 | - number: 1867 12 | name: Per-Gateway Infrastructure 13 | -------------------------------------------------------------------------------- /hack/crd-ref-templates/gv_list.tpl: -------------------------------------------------------------------------------- 1 | {{- define "gvList" -}} 2 | {{- $groupVersions := . -}} 3 | --- 4 | hide: 5 | - toc 6 | --- 7 | # API Reference 8 | 9 | {{- range $groupVersions }} 10 | - {{ markdownRenderGVLink . }} 11 | {{- end }} 12 | 13 | {{ range $groupVersions }} 14 | {{ template "gvDetails" . }} 15 | {{ end }} 16 | 17 | {{- end -}} -------------------------------------------------------------------------------- /geps/gep-4152/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 4152 4 | name: Extending TLS Validation in BackendTLSPolicy 5 | status: Provisional 6 | authors: 7 | - snorwin 8 | extends: 9 | - number: 1897 10 | name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration 11 | -------------------------------------------------------------------------------- /.openvex/templates/main.openvex.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://openvex.dev/ns/v0.2.0", 3 | "@id": "https://openvex.dev/docs/public/vex-7184cf1b7aed8c51c607d4ccf6c15eb2841d1215c4f8a8607ab7c22bea0f4eac", 4 | "author": "vexctl (automated template)", 5 | "timestamp": "2023-12-16T16:51:30.852422097Z", 6 | "version": 1, 7 | "statements": [] 8 | } 9 | -------------------------------------------------------------------------------- /conformance/reports/v1.0.0/envoy-gateway/README.md: -------------------------------------------------------------------------------- 1 | # Envoy Gateway 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[v0.6.0](https://github.com/envoyproxy/gateway/releases/tag/v0.6.0)|x|[v0.6.0 report](./v0.6.0-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/reports/v0.8.1/cilium/README.md: -------------------------------------------------------------------------------- 1 | # Cilium 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[v1.15.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.1)|x|[v1.15.0-pre.1 report](./v1.15.0-pre.1-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/reports/v1.0.0/cilium/README.md: -------------------------------------------------------------------------------- 1 | # Cilium 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[v1.15.0-pre.3](https://github.com/cilium/cilium/releases/tag/v1.15.0-pre.3)|x|[v1.15.0-pre.3 report](./v1.15.0-pre.3-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/gateway/duplicate-listeners.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: duplicate-listeners 5 | spec: 6 | gatewayClassName: example 7 | listeners: 8 | - name: same 9 | protocol: HTTP 10 | port: 80 11 | - name: same 12 | protocol: HTTP 13 | port: 443 14 | -------------------------------------------------------------------------------- /conformance/tests/httproute-observed-generation-bump.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: observed-generation-bump 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | - name: infra-backend-v1 12 | port: 8080 13 | -------------------------------------------------------------------------------- /conformance/tests/httproute-simple-same-namespace.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: gateway-conformance-infra-test 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | - name: infra-backend-v1 12 | port: 8080 13 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-filter-duplicate-header.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-filter-duplicate-header 5 | spec: 6 | rules: 7 | - filters: 8 | - type: RequestHeaderModifier 9 | requestHeaderModifier: 10 | remove: 11 | - foo 12 | - foo 13 | -------------------------------------------------------------------------------- /conformance/reports/v0.8.0/projectcontour-contour/README.md: -------------------------------------------------------------------------------- 1 | # Projectcontour Contour 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[v1.26.0](https://github.com/projectcontour/contour/releases/tag/v1.26.0)|x|[v1.26.0 report](./v1.26.0-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /examples/experimental/v1alpha3/tls-routing/tls-route.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1alpha3 2 | kind: TLSRoute 3 | metadata: 4 | name: example-route 5 | spec: 6 | parentRefs: 7 | - name: example-gateway 8 | sectionName: tls 9 | hostnames: 10 | - "example.com" 11 | rules: 12 | - backendRefs: 13 | - name: example-svc 14 | port: 443 15 | -------------------------------------------------------------------------------- /conformance/reports/v0.7.1/nginx-nginx-gateway-fabric/README.md: -------------------------------------------------------------------------------- 1 | # Nginx NGINX Gateway Fabric 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[v0.5.0](https://github.com/nginx/nginx-gateway-fabric/releases/tag/v0.5.0)|x|[v0.5.0 report](./v0.5.0-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/reports/v0.8.0/nginx-nginx-gateway-fabric/README.md: -------------------------------------------------------------------------------- 1 | # Nginx NGINX Gateway Fabric 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[v0.6.0](https://github.com/nginx/nginx-gateway-fabric/releases/tag/v0.6.0)|x|[v0.6.0 report](./v0.6.0-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/reports/v0.8.1/nginx-nginx-gateway-fabric/README.md: -------------------------------------------------------------------------------- 1 | # Nginx NGINX Gateway Fabric 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[v1.0.0](https://github.com/nginx/nginx-gateway-fabric/releases/tag/v1.0.0)|x|[v1.0.0 report](./v1.0.0-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /examples/experimental/destination-port-matching-tcp.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1alpha2 2 | kind: TCPRoute 3 | metadata: 4 | name: destination-port-matching-example 5 | spec: 6 | parentRefs: 7 | - name: my-mesh 8 | group: example.io 9 | kind: Mesh 10 | port: 8000 11 | rules: 12 | - backendRefs: 13 | - name: my-service 14 | port: 8080 15 | -------------------------------------------------------------------------------- /examples/standard/reference-grant.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/concepts/security-model.md 3 | apiVersion: gateway.networking.k8s.io/v1beta1 4 | kind: ReferenceGrant 5 | metadata: 6 | name: allow-prod-traffic 7 | spec: 8 | from: 9 | - group: gateway.networking.k8s.io 10 | kind: HTTPRoute 11 | namespace: prod 12 | to: 13 | - group: "" 14 | kind: Service 15 | -------------------------------------------------------------------------------- /examples/standard/simple-gateway/httproute.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/simple-gateway.md 3 | #$ - site-src/blog/2021/introducing-v1beta1.md 4 | apiVersion: gateway.networking.k8s.io/v1 5 | kind: HTTPRoute 6 | metadata: 7 | name: foo 8 | spec: 9 | parentRefs: 10 | - name: prod-web 11 | rules: 12 | - backendRefs: 13 | - name: foo-svc 14 | port: 8080 15 | -------------------------------------------------------------------------------- /CHANGELOG/1.3-TEAM.md: -------------------------------------------------------------------------------- 1 | # v1.3 Release Team 2 | 3 | | Enhancement | Leads | 4 | | - | - | 5 | | Percentage-Based Request Mirroring | @LiorLieberman, @jakebennert | 6 | | CORS (Cross Origin Resource Sharing) Filter | @liangli, @EyalPazz, @robscott | 7 | | XListenerSets (Standard Mechanism to Merge Gateways)| @dprotaso | 8 | | XBackendTrafficPolicy (Retry Budgets) | @ericdbishop | 9 | 10 | -------------------------------------------------------------------------------- /config/crd/kustomization.yaml: -------------------------------------------------------------------------------- 1 | resources: 2 | - standard/gateway.networking.k8s.io_gatewayclasses.yaml 3 | - standard/gateway.networking.k8s.io_gateways.yaml 4 | - standard/gateway.networking.k8s.io_grpcroutes.yaml 5 | - standard/gateway.networking.k8s.io_httproutes.yaml 6 | - standard/gateway.networking.k8s.io_referencegrants.yaml 7 | - standard/gateway.networking.k8s.io_backendtlspolicies.yaml 8 | -------------------------------------------------------------------------------- /conformance/tests/gateway-optional-address-value.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: gateway-without-address-value 5 | namespace: gateway-conformance-infra 6 | spec: 7 | gatewayClassName: "{GATEWAY_CLASS_NAME}" 8 | addresses: 9 | - type: "IPAddress" 10 | listeners: 11 | - name: http 12 | port: 8080 13 | protocol: HTTP 14 | -------------------------------------------------------------------------------- /conformance/tests/httproute-cross-namespace.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: cross-namespace 5 | namespace: gateway-conformance-web-backend 6 | spec: 7 | parentRefs: 8 | - name: backend-namespaces 9 | namespace: gateway-conformance-infra 10 | rules: 11 | - backendRefs: 12 | - name: web-backend 13 | port: 8080 14 | -------------------------------------------------------------------------------- /examples/standard/traffic-splitting/simple-split.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/traffic-splitting.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: simple-split 7 | spec: 8 | rules: 9 | - backendRefs: 10 | - name: foo-v1 11 | port: 8080 12 | weight: 90 13 | - name: foo-v2 14 | port: 8080 15 | weight: 10 16 | -------------------------------------------------------------------------------- /hack/invalid-examples/experimental/httproute/invalid-filter-externalauth-bad-http-path.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-filter-externalauth-empty 5 | spec: 6 | rules: 7 | - filters: 8 | - type: ExternalAuth 9 | externalAuth: 10 | protocol: HTTP 11 | http: 12 | path: /[] 13 | -------------------------------------------------------------------------------- /hack/invalid-examples/experimental/httproute/invalid-header-value.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-header-value 5 | spec: 6 | rules: 7 | - filters: 8 | - type: ResponseHeaderModifier 9 | responseHeaderModifier: 10 | add: 11 | - name: X-Test-Header 12 | value: "this\nis\rinvalid\r\nvalue" 13 | -------------------------------------------------------------------------------- /conformance/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | # See the OWNERS_ALIASES file at https://github.com/kubernetes-sigs/gateway-api/blob/main/OWNERS_ALIASES for a list of members for each alias. 3 | 4 | approvers: 5 | - gateway-api-conformance-approvers 6 | - gateway-api-mesh-leads 7 | 8 | reviewers: 9 | - gateway-api-conformance-reviewers 10 | - gateway-api-mesh-leads 11 | -------------------------------------------------------------------------------- /examples/standard/multicluster/httproute-simple.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - geps/gep-1748.md 3 | kind: HTTPRoute 4 | apiVersion: gateway.networking.k8s.io/v1beta1 5 | metadata: 6 | name: store 7 | spec: 8 | parentRefs: 9 | - name: external-http 10 | rules: 11 | - backendRefs: 12 | - group: multicluster.x-k8s.io 13 | kind: ServiceImport 14 | name: store 15 | port: 8080 16 | -------------------------------------------------------------------------------- /conformance/reports/v0.7.1/kong-kubernetes-ingress-controller/README.md: -------------------------------------------------------------------------------- 1 | # Kong Kubernetes Ingress Controller 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[2.10.3](https://github.com/Kong/kubernetes-ingress-controller/releases/tag/v2.10.3)|x|[v2.10.3 report](./2.10.3-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/reports/v0.8.1/kong-kubernetes-ingress-controller/README.md: -------------------------------------------------------------------------------- 1 | # Kong Kubernetes Ingress Controller 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[v2.12.0](https://github.com/Kong/kubernetes-ingress-controller/releases/tag/v2.12.0)|x|[v2.12.0 report](./v2.12.0-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/tests/mesh/httproute-simple-same-namespace.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: gateway-conformance-mesh-test 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | port: 80 12 | rules: 13 | - backendRefs: 14 | - name: echo-v1 15 | port: 8080 16 | -------------------------------------------------------------------------------- /hack/crd-ref-templates/README.md: -------------------------------------------------------------------------------- 1 | The templates contained in this directory were copied from https://github.com/elastic/crd-ref-docs/tree/master/templates/markdown 2 | and had the following modifications: 3 | 4 | - `type.tpl` - Adds an "experimental" marker in case the API field is marked as "experimental" 5 | - `type_members.tpl` - Removes the text between tags `` -------------------------------------------------------------------------------- /hack/crd-ref-templates/type_members.tpl: -------------------------------------------------------------------------------- 1 | {{- define "type_members" -}} 2 | {{- $field := . -}} 3 | {{- if eq $field.Name "metadata" -}} 4 | Refer to Kubernetes API documentation for fields of `metadata`. 5 | {{- else -}} 6 | {{- $cleanDoc := regexReplaceAllLiteral "(?s).*?" $field.Doc "" -}} 7 | {{ markdownRenderFieldDoc $cleanDoc }} 8 | {{- end -}} 9 | {{- end -}} -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-httpredirect-hostname.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-backend-port 5 | spec: 6 | rules: 7 | - backendRefs: 8 | - name: my-service 9 | port: 8080 10 | filters: 11 | - type: RequestRedirect 12 | requestRedirect: 13 | hostname: "*.gateway.networking.k8s.io" 14 | 15 | -------------------------------------------------------------------------------- /conformance/tests/httproute-invalid-nonexistent-backendref.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-nonexistent-backend-ref 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | - name: nonexistent 12 | namespace: gateway-conformance-infra 13 | port: 8080 14 | -------------------------------------------------------------------------------- /examples/standard/backendtlspolicy/backendtlspolicy-system-certs.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/tls.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: BackendTLSPolicy 5 | metadata: 6 | name: tls-upstream-dev 7 | spec: 8 | targetRefs: 9 | - kind: Service 10 | name: dev 11 | group: "" 12 | validation: 13 | wellKnownCACertificates: "System" 14 | hostname: dev.example.com 15 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/gateway/tlsconfig-tcp.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: tlsconfig-tcp 5 | spec: 6 | gatewayClassName: example 7 | listeners: 8 | - name: example 9 | protocol: TCP 10 | port: 443 11 | tls: 12 | certificateRefs: 13 | - kind: Secret 14 | group: "" 15 | name: bar-example-com-cert 16 | 17 | -------------------------------------------------------------------------------- /conformance/tests/httproute-invalid-cross-namespace-parent-ref.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-cross-namespace-parent-ref 5 | namespace: gateway-conformance-web-backend 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | namespace: gateway-conformance-infra 10 | rules: 11 | - backendRefs: 12 | - name: web-backend 13 | port: 8080 14 | -------------------------------------------------------------------------------- /geps/gep-1911/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1911 4 | name: Backend Protocol Selection 5 | status: Standard 6 | authors: 7 | - dprotaso 8 | - robscott 9 | - frankbu 10 | relationships: 11 | obsoletes: 12 | - number: 1282 13 | name: Describing Backend Properties 14 | description: Protocol selection was one of the Backend Properties. 15 | -------------------------------------------------------------------------------- /hack/crd-ref-templates/gv_details.tpl: -------------------------------------------------------------------------------- 1 | {{- define "gvDetails" -}} 2 | {{- $gv := . -}} 3 | 4 | ## {{ $gv.GroupVersionString }} 5 | 6 | {{ $gv.Doc }} 7 | 8 | {{- if $gv.Kinds }} 9 | ### Resource Types 10 | {{- range $gv.SortedKinds }} 11 | - {{ $gv.TypeForKind . | markdownRenderTypeLink }} 12 | {{- end }} 13 | {{ end }} 14 | 15 | {{ range $gv.SortedTypes }} 16 | {{ template "type" . }} 17 | {{ end }} 18 | 19 | {{- end -}} 20 | -------------------------------------------------------------------------------- /conformance/reports/v0.7.1/projectcontour-contour/README.md: -------------------------------------------------------------------------------- 1 | # Projectcontour Contour 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[f6c112e](https://github.com/projectcontour/contour/commit/f6c112e60a40ceb9d448354473a8fe7d1a726790)|x|[f6c112e report](./f6c112e60a40ceb9d448354473a8fe7d1a726790-report.yaml)| 8 | 9 | ## Reproduce 10 | -------------------------------------------------------------------------------- /conformance/tests/httproute-invalid-cross-namespace-backend-ref.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-cross-namespace-backend-ref 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | - name: web-backend 12 | namespace: gateway-conformance-web-backend 13 | port: 8080 14 | -------------------------------------------------------------------------------- /examples/standard/simple-http-https/bar-route.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: bar 5 | spec: 6 | parentRefs: 7 | - name: example-gateway 8 | sectionName: https 9 | hostnames: 10 | - bar.example.com 11 | rules: 12 | - matches: 13 | - path: 14 | type: PathPrefix 15 | value: / 16 | backendRefs: 17 | - name: bar-app 18 | port: 80 19 | -------------------------------------------------------------------------------- /examples/standard/simple-gateway/gateway.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/traffic-splitting.md 3 | #$ - site-src/guides/simple-gateway.md 4 | apiVersion: gateway.networking.k8s.io/v1 5 | kind: Gateway 6 | metadata: 7 | name: prod-web 8 | spec: 9 | gatewayClassName: example 10 | listeners: 11 | - protocol: HTTP 12 | port: 80 13 | name: prod-web-gw 14 | allowedRoutes: 15 | namespaces: 16 | from: Same 17 | -------------------------------------------------------------------------------- /site-src/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | # See the OWNERS_ALIASES file at https://github.com/kubernetes-sigs/gateway-api/blob/main/OWNERS_ALIASES for a list of members for each alias. 3 | 4 | approvers: 5 | - sig-network-leads 6 | - gateway-api-maintainers 7 | - gateway-api-doc-approvers 8 | 9 | reviewers: 10 | - gateway-api-maintainers 11 | - gateway-api-mesh-leads 12 | - gateway-api-doc-approvers 13 | -------------------------------------------------------------------------------- /conformance/tests/httproute-invalid-backendref-unknown-kind.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-backend-ref-unknown-kind 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | - group: unknownkind.example.com 12 | kind: NonExistent 13 | name: infra-backend-v1 14 | port: 8080 15 | -------------------------------------------------------------------------------- /geps/gep-1686/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1686 4 | name: Mesh conformance testing plan 5 | status: Standard 6 | authors: 7 | - michaelbeaumont 8 | - mikemorris 9 | - howardjohn 10 | - kflynn 11 | relationships: 12 | extends: 13 | - number: 1324 14 | name: Service Mesh in Gateway API 15 | description: Adds initial Mesh conformance testing plan 16 | -------------------------------------------------------------------------------- /hack/mkdocs/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | # See the OWNERS_ALIASES file at https://github.com/kubernetes-sigs/gateway-api/blob/main/OWNERS_ALIASES for a list of members for each alias. 3 | 4 | approvers: 5 | - sig-network-leads 6 | - gateway-api-maintainers 7 | - gateway-api-doc-approvers 8 | 9 | reviewers: 10 | - gateway-api-maintainers 11 | - gateway-api-mesh-leads 12 | - gateway-api-doc-approvers 13 | -------------------------------------------------------------------------------- /examples/experimental/backend-tls.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: backend-tls 5 | spec: 6 | gatewayClassName: acme-lb 7 | tls: 8 | backend: 9 | clientCertificateRef: 10 | kind: Secret 11 | group: "" 12 | name: foo-example-cert 13 | listeners: 14 | - name: foo-https 15 | protocol: HTTP 16 | port: 80 17 | hostname: foo.example.com 18 | --- 19 | -------------------------------------------------------------------------------- /examples/standard/simple-http-https/tls-redirect-route.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: tls-redirect 5 | spec: 6 | parentRefs: 7 | - name: example-gateway 8 | sectionName: http 9 | hostnames: 10 | - foo.example.com 11 | - bar.example.com 12 | rules: 13 | - filters: 14 | - type: RequestRedirect 15 | requestRedirect: 16 | scheme: https 17 | port: 443 18 | -------------------------------------------------------------------------------- /examples/standard/http-route-attachment/httproute.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/concepts/api-overview.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: my-route 7 | namespace: gateway-api-example-ns2 8 | spec: 9 | parentRefs: 10 | - kind: Gateway 11 | name: foo-gateway 12 | namespace: gateway-api-example-ns1 13 | rules: 14 | - backendRefs: 15 | - name: foo-svc 16 | port: 8080 17 | -------------------------------------------------------------------------------- /conformance/tests/gateway-observed-generation-bump.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: gateway-observed-generation-bump 5 | namespace: gateway-conformance-infra 6 | spec: 7 | gatewayClassName: "{GATEWAY_CLASS_NAME}" 8 | listeners: 9 | - name: http 10 | hostname: "bar.com" 11 | port: 80 12 | protocol: HTTP 13 | allowedRoutes: 14 | namespaces: 15 | from: All 16 | -------------------------------------------------------------------------------- /examples/standard/cross-namespace-routing/store-route.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/multiple-ns.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: store 7 | namespace: store-ns 8 | spec: 9 | parentRefs: 10 | - name: shared-gateway 11 | namespace: infra-ns 12 | rules: 13 | - matches: 14 | - path: 15 | value: /store 16 | backendRefs: 17 | - name: store 18 | port: 8080 19 | -------------------------------------------------------------------------------- /conformance/tests/gateway-infrastructure.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: gateway.networking.k8s.io/v1 3 | kind: Gateway 4 | metadata: 5 | name: gateway-with-infrastructure-metadata 6 | namespace: gateway-conformance-infra 7 | spec: 8 | gatewayClassName: "{GATEWAY_CLASS_NAME}" 9 | infrastructure: 10 | annotations: 11 | key1: value1 12 | labels: 13 | key2: value2 14 | listeners: 15 | - name: http 16 | port: 8080 17 | protocol: HTTP 18 | -------------------------------------------------------------------------------- /conformance/tests/httproute-303-redirect.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: 303-redirect 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - path: 12 | type: PathPrefix 13 | value: /see-other 14 | filters: 15 | - type: RequestRedirect 16 | requestRedirect: 17 | statusCode: 303 18 | 19 | -------------------------------------------------------------------------------- /conformance/tests/httproute-307-redirect.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: 307-redirect 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - path: 12 | type: PathPrefix 13 | value: /temporary 14 | filters: 15 | - type: RequestRedirect 16 | requestRedirect: 17 | statusCode: 307 18 | 19 | -------------------------------------------------------------------------------- /conformance/tests/httproute-308-redirect.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: 308-redirect 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - path: 12 | type: PathPrefix 13 | value: /permanent 14 | filters: 15 | - type: RequestRedirect 16 | requestRedirect: 17 | statusCode: 308 18 | 19 | -------------------------------------------------------------------------------- /geps/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | # See the OWNERS_ALIASES file at https://github.com/kubernetes-sigs/gateway-api/blob/main/OWNERS_ALIASES for a list of members for each alias. 3 | 4 | approvers: 5 | - sig-network-leads 6 | - gateway-api-maintainers 7 | 8 | reviewers: 9 | - gateway-api-maintainers 10 | - gateway-api-mesh-leads 11 | - gateway-api-gep-reviewers 12 | 13 | labels: 14 | - kind/gep 15 | - do-not-merge/hold 16 | -------------------------------------------------------------------------------- /conformance/echo-basic/.go.mod: -------------------------------------------------------------------------------- 1 | module sigs.k8s.io/gateway-api/conformance/echo-basic 2 | 3 | go 1.21 4 | 5 | require ( 6 | golang.org/x/net v0.21.0 7 | google.golang.org/grpc v1.53.0 8 | google.golang.org/protobuf v1.28.1 9 | ) 10 | 11 | require ( 12 | github.com/golang/protobuf v1.5.2 // indirect 13 | golang.org/x/sys v0.17.0 // indirect 14 | golang.org/x/text v0.14.0 // indirect 15 | google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect 16 | ) 17 | -------------------------------------------------------------------------------- /conformance/tests/mesh/httproute-weight.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-weighted-backends 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | port: 80 12 | rules: 13 | - backendRefs: 14 | - name: echo-v1 15 | port: 8080 16 | weight: 70 17 | - name: echo-v2 18 | port: 8080 19 | weight: 30 20 | -------------------------------------------------------------------------------- /examples/experimental/http-route-timeouts/timeout-example.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: timeout-example 5 | spec: 6 | parentRefs: 7 | - name: example-gateway 8 | rules: 9 | - matches: 10 | - path: 11 | type: PathPrefix 12 | value: /timeout 13 | timeouts: 14 | request: 10s 15 | backendRequest: 2s 16 | backendRefs: 17 | - name: timeout-svc 18 | port: 8080 19 | -------------------------------------------------------------------------------- /examples/standard/backendtlspolicy/backendtlspolicy-ca-certs.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/tls.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: BackendTLSPolicy 5 | metadata: 6 | name: tls-upstream-auth 7 | spec: 8 | targetRefs: 9 | - kind: Service 10 | name: auth 11 | group: "" 12 | validation: 13 | caCertificateRefs: 14 | - kind: ConfigMap 15 | name: auth-cert 16 | group: "" 17 | hostname: auth.example.com 18 | -------------------------------------------------------------------------------- /examples/standard/http-routing/foo-httproute.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-routing.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: foo-route 7 | spec: 8 | parentRefs: 9 | - name: example-gateway 10 | hostnames: 11 | - "foo.example.com" 12 | rules: 13 | - matches: 14 | - path: 15 | type: PathPrefix 16 | value: /login 17 | backendRefs: 18 | - name: foo-svc 19 | port: 8080 20 | -------------------------------------------------------------------------------- /examples/standard/traffic-splitting/traffic-split-3.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/traffic-splitting.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: foo-route 7 | labels: 8 | gateway: prod-web-gw 9 | spec: 10 | hostnames: 11 | - foo.example.com 12 | rules: 13 | - backendRefs: 14 | - name: foo-v1 15 | port: 8080 16 | weight: 0 17 | - name: foo-v2 18 | port: 8080 19 | weight: 1 20 | -------------------------------------------------------------------------------- /examples/standard/grpc-routing/foo-grpcroute.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/grpc-routing.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: GRPCRoute 5 | metadata: 6 | name: foo-route 7 | spec: 8 | parentRefs: 9 | - name: example-gateway 10 | hostnames: 11 | - "foo.example.com" 12 | rules: 13 | - matches: 14 | - method: 15 | service: com.example 16 | method: Login 17 | backendRefs: 18 | - name: foo-svc 19 | port: 50051 20 | -------------------------------------------------------------------------------- /examples/standard/http-rewrite.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: http-filter-1 5 | namespace: gateway-api-example-ns1 6 | spec: 7 | parentRefs: 8 | - name: my-filter-gateway 9 | sectionName: http 10 | hostnames: 11 | - my-filter.example.com 12 | rules: 13 | - filters: 14 | - type: URLRewrite 15 | urlRewrite: 16 | path: 17 | type: ReplaceFullPath 18 | replaceFullPath: /foo 19 | -------------------------------------------------------------------------------- /examples/standard/traffic-splitting/grpc-traffic-split-2.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/api-types/grpcroute.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: GRPCRoute 5 | metadata: 6 | name: foo-route 7 | labels: 8 | gateway: prod-web-gw 9 | spec: 10 | hostnames: 11 | - foo.example.com 12 | rules: 13 | - backendRefs: 14 | - name: foo-v1 15 | port: 50051 16 | weight: 90 17 | - name: foo-v2 18 | port: 50051 19 | weight: 10 20 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-request-redirect-with-backendref.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: http-filter-rewrite 5 | spec: 6 | hostnames: 7 | - rewrite.example 8 | rules: 9 | - filters: 10 | - type: RequestRedirect 11 | requestRedirect: 12 | scheme: https 13 | statusCode: 301 14 | backendRefs: 15 | - name: example-svc 16 | port: 80 17 | -------------------------------------------------------------------------------- /examples/standard/multicluster/httproute-gamma.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - geps/gep-1748.md 3 | kind: HTTPRoute 4 | apiVersion: gateway.networking.k8s.io/v1beta1 5 | metadata: 6 | name: store 7 | spec: 8 | parentRefs: 9 | - group: multicluster.x-k8s.io 10 | kind: ServiceImport 11 | name: store 12 | rules: 13 | - matches: 14 | - path: 15 | value: "/cart" 16 | backendRefs: 17 | - group: multicluster.x-k8s.io 18 | kind: ServiceImport 19 | name: cart 20 | -------------------------------------------------------------------------------- /geps/gep-1294/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1294 4 | name: xRoutes Mesh Binding 5 | status: Standard 6 | authors: 7 | - mikemorris 8 | - howardjohn 9 | - keithmattix 10 | relationships: 11 | extends: 12 | - number: 1324 13 | name: Service Mesh in Gateway API 14 | description: Adds initial Service binding proposal 15 | changelog: 16 | - "https://github.com/kubernetes-sigs/gateway-api/pull/2688" 17 | -------------------------------------------------------------------------------- /geps/gep-3155/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 3155 4 | name: Complete Backend mutual TLS Configuration 5 | status: Experimental 6 | authors: 7 | - mkosieradzki 8 | - robscott 9 | featureNames: 10 | - BackendTLSPolicySANs 11 | relationships: 12 | seeAlso: 13 | - number: 2907 14 | name: TLS Configuration Placement and Terminology 15 | description: Will use some of the terminology defined by this GEP. 16 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-path.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: http-filter-1 5 | namespace: gateway-api-example-ns1 6 | spec: 7 | parentRefs: 8 | - name: my-filter-gateway 9 | sectionName: http 10 | hostnames: 11 | - my-filter.example.com 12 | rules: 13 | - filters: 14 | - type: RequestRedirect 15 | requestRedirect: 16 | path: 17 | type: ReplaceFullPath 18 | replaceFullPath: /foo 19 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-redirect-https.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-redirect-rewrite.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: https-route 7 | labels: 8 | gateway: redirect-gateway 9 | spec: 10 | parentRefs: 11 | - name: redirect-gateway 12 | sectionName: https 13 | hostnames: 14 | - redirect.example 15 | rules: 16 | - backendRefs: 17 | - name: example-svc 18 | port: 80 19 | -------------------------------------------------------------------------------- /conformance/tests/httproute-weight.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: weighted-backends 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | - name: infra-backend-v1 12 | port: 8080 13 | weight: 70 14 | - name: infra-backend-v2 15 | port: 8080 16 | weight: 30 17 | - name: infra-backend-v3 18 | port: 8080 19 | weight: 0 20 | -------------------------------------------------------------------------------- /conformance/reports/v1.1.0/istio-istio/README.md: -------------------------------------------------------------------------------- 1 | # Istio 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[1.22](https://github.com/istio/istio/releases/tag/1.22.0)|x|[v1.22 report](./experimental-1.22-default-report.yaml)| 8 | 9 | ## Reproduce 10 | 11 | Istio conformance tests can be reproduced by running `prow/integ-suite-kind.sh test.integration.pilot.kube` from within the [Istio repo](https://github.com/istio/istio). -------------------------------------------------------------------------------- /conformance/reports/v1.2.0/istio-istio/README.md: -------------------------------------------------------------------------------- 1 | # Istio 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[1.24](https://github.com/istio/istio/releases/tag/1.24.0)|x|[v1.24 report](./experimental-1.24-default-report.yaml)| 8 | 9 | ## Reproduce 10 | 11 | Istio conformance tests can be reproduced by running `prow/integ-suite-kind.sh test.integration.pilot.kube` from within the [Istio repo](https://github.com/istio/istio). -------------------------------------------------------------------------------- /conformance/reports/v1.4.0/istio-istio/README.md: -------------------------------------------------------------------------------- 1 | # Istio 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[1.28.0](https://github.com/istio/istio/releases/tag/1.28.0)|x|[1.28.0 report](./1.28.0-default-report.yaml)| 8 | 9 | ## Reproduce 10 | 11 | Istio conformance tests can be reproduced by running `prow/integ-suite-kind.sh test.integration.pilot.kube` from within the [Istio repo](https://github.com/istio/istio). 12 | -------------------------------------------------------------------------------- /conformance/reports/v1.2.1/istio-istio/README.md: -------------------------------------------------------------------------------- 1 | # Istio 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[1.24](https://github.com/istio/istio/releases/tag/1.24.2)|x|[v1.2.4 report](./experimental-1.24-default-report.yaml)| 8 | 9 | ## Reproduce 10 | 11 | Istio conformance tests can be reproduced by running `prow/integ-suite-kind.sh test.integration.pilot.kube` from within the [Istio repo](https://github.com/istio/istio). -------------------------------------------------------------------------------- /conformance/tests/mesh/httproute-307-redirect.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-307-redirect 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | port: 80 12 | rules: 13 | - matches: 14 | - path: 15 | type: PathPrefix 16 | value: /temporary 17 | filters: 18 | - type: RequestRedirect 19 | requestRedirect: 20 | statusCode: 307 21 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-redirect-http.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-redirect-rewrite.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: http-filter-redirect 7 | spec: 8 | parentRefs: 9 | - name: redirect-gateway 10 | sectionName: http 11 | hostnames: 12 | - redirect.example 13 | rules: 14 | - filters: 15 | - type: RequestRedirect 16 | requestRedirect: 17 | scheme: https 18 | statusCode: 301 19 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-rewrite.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/api-types/httproute.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: http-filter-rewrite 7 | spec: 8 | hostnames: 9 | - rewrite.example 10 | rules: 11 | - filters: 12 | - type: URLRewrite 13 | urlRewrite: 14 | hostname: elsewhere.example 15 | backendRefs: 16 | - name: example-svc 17 | weight: 1 18 | port: 80 19 | -------------------------------------------------------------------------------- /examples/standard/multicluster/httproute-hybrid.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - geps/gep-1748.md 3 | kind: HTTPRoute 4 | apiVersion: gateway.networking.k8s.io/v1beta1 5 | metadata: 6 | name: store 7 | spec: 8 | parentRefs: 9 | - name: external-http 10 | rules: 11 | - backendRefs: 12 | - kind: Service 13 | name: store 14 | port: 8080 15 | weight: 90 16 | - group: multicluster.x-k8s.io 17 | kind: ServiceImport 18 | name: store-global 19 | port: 8080 20 | weight: 10 21 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/httproute/invalid-filter-duplicate.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: invalid-filter-duplicate 5 | spec: 6 | rules: 7 | - filters: 8 | - type: RequestHeaderModifier 9 | requestHeaderModifier: 10 | add: 11 | - name: my-header 12 | value: foo 13 | - type: RequestHeaderModifier 14 | requestHeaderModifier: 15 | add: 16 | - name: my-header 17 | value: bar 18 | 19 | -------------------------------------------------------------------------------- /conformance/tests/grpcroute-weight.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: GRPCRoute 3 | metadata: 4 | name: weighted-backends 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | - name: grpc-infra-backend-v1 12 | port: 8080 13 | weight: 70 14 | - name: grpc-infra-backend-v2 15 | port: 8080 16 | weight: 30 17 | - name: grpc-infra-backend-v3 18 | port: 8080 19 | weight: 0 20 | -------------------------------------------------------------------------------- /conformance/tests/mesh/httproute-303-redirect.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-303-redirect 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | port: 80 12 | rules: 13 | - matches: 14 | - path: 15 | type: PathPrefix 16 | value: /redirect 17 | filters: 18 | - type: RequestRedirect 19 | requestRedirect: 20 | statusCode: 303 21 | 22 | -------------------------------------------------------------------------------- /conformance/tests/mesh/httproute-308-redirect.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-308-redirect 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | port: 80 12 | rules: 13 | - matches: 14 | - path: 15 | type: PathPrefix 16 | value: /permanent 17 | filters: 18 | - type: RequestRedirect 19 | requestRedirect: 20 | statusCode: 308 21 | 22 | -------------------------------------------------------------------------------- /conformance/tests/mesh/mesh-frontend.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-split-v1 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo-v2 11 | rules: 12 | - filters: 13 | - type: ResponseHeaderModifier 14 | responseHeaderModifier: 15 | set: 16 | - name: X-Header-Set 17 | value: set 18 | backendRefs: 19 | - name: echo-v2 20 | port: 80 21 | -------------------------------------------------------------------------------- /examples/standard/traffic-splitting/traffic-split-2.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/traffic-splitting.md 3 | #$ - site-src/api-types/httproute.md 4 | apiVersion: gateway.networking.k8s.io/v1 5 | kind: HTTPRoute 6 | metadata: 7 | name: foo-route 8 | labels: 9 | gateway: prod-web-gw 10 | spec: 11 | hostnames: 12 | - foo.example.com 13 | rules: 14 | - backendRefs: 15 | - name: foo-v1 16 | port: 8080 17 | weight: 90 18 | - name: foo-v2 19 | port: 8080 20 | weight: 10 21 | -------------------------------------------------------------------------------- /conformance/reports/v1.3.0/istio-istio/README.md: -------------------------------------------------------------------------------- 1 | # Istio 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |x|[1.26.1](https://github.com/istio/istio/releases/tag/1.26.1)|x|[1.26.1 report](./experimental-1.26.1-default-report.yaml)| 8 | 9 | ## Reproduce 10 | 11 | Istio conformance tests can be reproduced by running `prow/integ-suite-kind.sh test.integration.pilot.kube` from within the [Istio repo](https://github.com/istio/istio). 12 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/gateway-redirect-http-https.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-redirect-rewrite.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: Gateway 5 | metadata: 6 | name: redirect-gateway 7 | spec: 8 | gatewayClassName: foo-lb 9 | listeners: 10 | - name: http 11 | protocol: HTTP 12 | port: 80 13 | - name: https 14 | protocol: HTTPS 15 | port: 443 16 | tls: 17 | mode: Terminate 18 | certificateRefs: 19 | - name: redirect-example 20 | -------------------------------------------------------------------------------- /geps/gep-1767/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1767 4 | name: CORS Filter 5 | status: Experimental 6 | authors: 7 | - lianglli 8 | - robscott 9 | - EyalPazz 10 | - shaneutt 11 | references: 12 | - https://github.com/kubernetes-sigs/gateway-api/pull/3435 13 | - https://github.com/kubernetes-sigs/gateway-api/pull/3637 14 | - https://github.com/kubernetes-sigs/gateway-api/pull/3656 15 | - https://github.com/kubernetes-sigs/gateway-api/pull/3668 16 | 17 | -------------------------------------------------------------------------------- /conformance/tests/httproute-backend-protocol-h2c.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: backend-protocol-h2c 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | # This points to a Service with the following ServicePort 12 | # - protocol: TCP 13 | # appProtocol: kubernetes.io/h2c 14 | # port: 8081 15 | # targetPort: 3001 16 | - name: infra-backend-v1 17 | port: 8081 18 | -------------------------------------------------------------------------------- /geps/gep-1324/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1324 4 | name: Service Mesh in Gateway API 5 | status: Memorandum 6 | authors: 7 | - keithmattix 8 | - markmc 9 | - kflynn 10 | relationships: 11 | extendedBy: 12 | - number: 1426 13 | name: xRoutes Mesh Binding 14 | description: Adds initial Service binding proposal 15 | - number: 1686 16 | name: Mesh conformance testing plan 17 | description: Adds initial Mesh conformance testing plan 18 | -------------------------------------------------------------------------------- /conformance/tests/mesh/grpcroute-weight.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: GRPCRoute 3 | metadata: 4 | name: mesh-grpc-weighted-backends 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | port: 7070 12 | rules: 13 | - backendRefs: 14 | - name: echo-v1 15 | port: 7070 16 | weight: 70 17 | - name: echo-v2 18 | port: 7070 19 | weight: 30 20 | - name: echo-v3 21 | port: 7070 22 | weight: 0 23 | -------------------------------------------------------------------------------- /examples/standard/traffic-splitting/traffic-split-1.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/traffic-splitting.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: foo-route 7 | labels: 8 | gateway: prod-web-gw 9 | spec: 10 | hostnames: 11 | - foo.example.com 12 | rules: 13 | - backendRefs: 14 | - name: foo-v1 15 | port: 8080 16 | - matches: 17 | - headers: 18 | - name: traffic 19 | value: test 20 | backendRefs: 21 | - name: foo-v2 22 | port: 8080 23 | -------------------------------------------------------------------------------- /examples/experimental/http-route-rule-name.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: example-route 5 | spec: 6 | parentRefs: 7 | - name: example-gateway 8 | rules: 9 | - name: read-only 10 | matches: 11 | - method: GET 12 | backendRefs: 13 | - name: backend-mirror-svc 14 | port: 8080 15 | - name: write-only 16 | matches: 17 | - method: POST 18 | - method: PATCH 19 | - method: DELETE 20 | backendRefs: 21 | - name: backend-svc 22 | port: 8080 23 | -------------------------------------------------------------------------------- /examples/standard/http-filter.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/api-types/httproute.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: http-filter-1 7 | spec: 8 | hostnames: 9 | - my.filter.com 10 | rules: 11 | - filters: 12 | - type: RequestHeaderModifier 13 | requestHeaderModifier: 14 | add: 15 | - name: my-header 16 | value: foo 17 | backendRefs: 18 | - name: my-filter-svc1 19 | weight: 1 20 | port: 80 21 | -------------------------------------------------------------------------------- /geps/gep-2722/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 2722 4 | name: Goals and UX for gwctl 5 | status: Memorandum 6 | authors: 7 | - gauravkghildiyal 8 | - robscott 9 | relationships: 10 | seeAlso: 11 | - number: 713 12 | name: Metaresources and Policy Attachment 13 | description: Explains the meaning of a Policy and calls out the idea of building a kubectl plugin or command-line tool. 14 | changelog: 15 | - https://github.com/kubernetes-sigs/gateway-api/pull/2723 16 | -------------------------------------------------------------------------------- /crd-ref-docs.yaml: -------------------------------------------------------------------------------- 1 | # This file contains configuration for our reference docs generation. For more 2 | # information about the possible configuration, refer to 3 | # https://github.com/elastic/crd-ref-docs. 4 | 5 | processor: 6 | ignoreTypes: 7 | - "()List$" 8 | # RE2 regular expressions describing type fields that should be excluded from the generated documentation. 9 | ignoreFields: 10 | - "TypeMeta$" 11 | 12 | render: 13 | # Version of Kubernetes to use when generating links to Kubernetes API documentation. 14 | kubernetesVersion: 1.32 15 | -------------------------------------------------------------------------------- /examples/standard/grpc-filter.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/api-types/grpcroute.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: GRPCRoute 5 | metadata: 6 | name: grpc-filter-1 7 | spec: 8 | hostnames: 9 | - my.filter.com 10 | rules: 11 | - filters: 12 | - type: RequestHeaderModifier 13 | requestHeaderModifier: 14 | add: 15 | - name: my-header 16 | value: foo 17 | backendRefs: 18 | - name: my-filter-svc1 19 | weight: 1 20 | port: 50051 21 | -------------------------------------------------------------------------------- /CHANGELOG/1.1-TEAM.md: -------------------------------------------------------------------------------- 1 | # v1.1 Release Team 2 | 3 | | Enhancement | Leads | 4 | | - | - | 5 | | Service Mesh Support | @howardjohn, @keithmattix, @kflynn, @mikemorris | 6 | | GRPCRoute | @gnossen | 7 | | ParentReference Port | @frankbu | 8 | | Conformance Profiles and Reports | @mlavacca, @shaneutt, @xtineskim | 9 | | Gateway Client Certificate Verification | @arkodg | 10 | | Session Persistence and BackendLBPolicy | @gcs278, @ginayeh | 11 | | TLS Terminology Clarifications | @candita, @robscott | 12 | | Gateway API Maintainers | @robscott, @shaneutt, @youngnick | 13 | -------------------------------------------------------------------------------- /conformance/tests/httproute-backend-protocol-websocket.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: backend-protocol-ws 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | # This points to a Service with the following ServicePort 12 | # - name: third-port 13 | # appProtocol: kubernetes.io/ws 14 | # protocol: TCP 15 | # port: 8082 16 | # targetPort: 3000 17 | - name: infra-backend-v1 18 | port: 8082 19 | -------------------------------------------------------------------------------- /examples/standard/http-request-header-remove.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: header-http-echo 5 | spec: 6 | parentRefs: 7 | - name: acme-gw 8 | rules: 9 | - matches: 10 | - path: 11 | type: PathPrefix 12 | value: /remove-a-request-header 13 | filters: 14 | - type: RequestHeaderModifier 15 | requestHeaderModifier: 16 | remove: 17 | - x-request-id 18 | backendRefs: 19 | - name: echo 20 | port: 8080 21 | -------------------------------------------------------------------------------- /examples/standard/http-routing/bar-httproute.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-routing.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: bar-route 7 | spec: 8 | parentRefs: 9 | - name: example-gateway 10 | hostnames: 11 | - "bar.example.com" 12 | rules: 13 | - matches: 14 | - headers: 15 | - type: Exact 16 | name: env 17 | value: canary 18 | backendRefs: 19 | - name: bar-svc-canary 20 | port: 8080 21 | - backendRefs: 22 | - name: bar-svc 23 | port: 8080 24 | -------------------------------------------------------------------------------- /geps/gep-1282/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1282 4 | name: Describing Backend Properties 5 | status: Declined 6 | authors: 7 | - youngnick 8 | relationships: 9 | obsoletedBy: 10 | - number: 1897 11 | name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration 12 | description: Implements just part of the Backend Properties GEP. 13 | - number: 1911 14 | name: Backend Protocol Selection 15 | description: Protocol selection was one of the Backend Properties. 16 | -------------------------------------------------------------------------------- /conformance/tests/mesh/mesh-split.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-split 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | rules: 12 | - matches: 13 | - path: 14 | type: Exact 15 | value: /v1 16 | backendRefs: 17 | - name: echo-v1 18 | port: 80 19 | - matches: 20 | - path: 21 | type: Exact 22 | value: /v2 23 | backendRefs: 24 | - name: echo-v2 25 | port: 80 26 | -------------------------------------------------------------------------------- /examples/standard/grpc-routing/bar-grpcroute.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/grpc-routing.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: GRPCRoute 5 | metadata: 6 | name: bar-route 7 | spec: 8 | parentRefs: 9 | - name: example-gateway 10 | hostnames: 11 | - "bar.example.com" 12 | rules: 13 | - matches: 14 | - headers: 15 | - type: Exact 16 | name: env 17 | value: canary 18 | backendRefs: 19 | - name: bar-svc-canary 20 | port: 50051 21 | - backendRefs: 22 | - name: bar-svc 23 | port: 50051 24 | -------------------------------------------------------------------------------- /geps/gep-2907/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 2907 4 | name: TLS Configuration Placement and Terminology 5 | status: Memorandum 6 | authors: 7 | - robscott 8 | relationships: 9 | seeAlso: 10 | - number: 91 11 | name: Client Certificate Verification for Gateway Listeners 12 | description: Will use some of the terminology defined by this GEP. 13 | - number: 1897 14 | name: TLS from Gateway to Backend 15 | description: Will use some of the terminology defined by this GEP. 16 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # This file is documented at https://git-scm.com/docs/gitattributes. 2 | # 3 | # Linguist-specific attributes are documented at 4 | # https://github.com/github/linguist. 5 | 6 | # Collapse generated code in code reviews. 7 | **/zz_generated.*.go linguist-generated=true 8 | apis/generated/** linguist-generated=true 9 | apis/**/generated.pb.go linguist-generated=true 10 | apis/**/generated.proto linguist-generated=true 11 | config/crd/experimental/** linguist-generated=true 12 | config/crd/standard/** linguist-generated=true 13 | pkg/client/** linguist-generated=true 14 | 15 | -------------------------------------------------------------------------------- /conformance/tests/httproute-exact-path-matching.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: exact-matching 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - path: 12 | type: Exact 13 | value: /one 14 | backendRefs: 15 | - name: infra-backend-v1 16 | port: 8080 17 | - matches: 18 | - path: 19 | type: Exact 20 | value: /two 21 | backendRefs: 22 | - name: infra-backend-v2 23 | port: 8080 24 | -------------------------------------------------------------------------------- /conformance/tests/httproute-invalid-parentref-not-matching-listener-port.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: httproute-listener-not-matching-route-port 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | namespace: gateway-conformance-infra 10 | # mismatched port here (81 is not an available gateway listener) triggers NoMatchingParent reason 11 | port: 81 12 | rules: 13 | - backendRefs: 14 | - name: infra-backend-v1 15 | kind: Service 16 | port: 8080 17 | -------------------------------------------------------------------------------- /examples/standard/http-route-attachment/gateway-namespaces.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/concepts/api-overview.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: Gateway 5 | metadata: 6 | name: prod-gateway 7 | namespace: gateway-api-example-ns1 8 | spec: 9 | gatewayClassName: foo-lb 10 | listeners: 11 | - name: prod-web 12 | port: 80 13 | protocol: HTTP 14 | allowedRoutes: 15 | kinds: 16 | - kind: HTTPRoute 17 | namespaces: 18 | from: Selector 19 | selector: 20 | matchLabels: 21 | expose-apps: "true" 22 | -------------------------------------------------------------------------------- /examples/standard/simple-http-https/foo-route.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: foo 5 | spec: 6 | parentRefs: 7 | - name: example-gateway 8 | sectionName: https 9 | hostnames: 10 | - foo.example.com 11 | rules: 12 | - matches: 13 | - path: 14 | type: PathPrefix 15 | value: / 16 | backendRefs: 17 | - name: foo-app 18 | port: 80 19 | - matches: 20 | - path: 21 | type: PathPrefix 22 | value: /orders 23 | backendRefs: 24 | - name: foo-orders-app 25 | port: 80 26 | -------------------------------------------------------------------------------- /SECURITY_CONTACTS: -------------------------------------------------------------------------------- 1 | # Defined below are the security contacts for this repo. 2 | # 3 | # They are the contact point for the Product Security Committee to reach out 4 | # to for triaging and handling of incoming issues. 5 | # 6 | # The below names agree to abide by the 7 | # [Embargo Policy](https://git.k8s.io/security/private-distributors-list.md#embargo-policy) 8 | # and will be removed and replaced if they violate that agreement. 9 | # 10 | # DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE 11 | # INSTRUCTIONS AT https://kubernetes.io/security/ 12 | 13 | bowei 14 | thockin 15 | -------------------------------------------------------------------------------- /examples/standard/cross-namespace-routing/0-namespaces.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/multiple-ns.md 3 | apiVersion: v1 4 | kind: Namespace 5 | metadata: 6 | name: infra-ns 7 | labels: 8 | shared-gateway-access: "true" 9 | --- 10 | apiVersion: v1 11 | kind: Namespace 12 | metadata: 13 | name: site-ns 14 | labels: 15 | shared-gateway-access: "true" 16 | --- 17 | apiVersion: v1 18 | kind: Namespace 19 | metadata: 20 | name: store-ns 21 | labels: 22 | shared-gateway-access: "true" 23 | --- 24 | apiVersion: v1 25 | kind: Namespace 26 | metadata: 27 | name: no-external-access 28 | -------------------------------------------------------------------------------- /config/crd/experimental/kustomization.yaml: -------------------------------------------------------------------------------- 1 | resources: 2 | - gateway.networking.k8s.io_backendtlspolicies.yaml 3 | - gateway.networking.k8s.io_gatewayclasses.yaml 4 | - gateway.networking.k8s.io_gateways.yaml 5 | - gateway.networking.k8s.io_grpcroutes.yaml 6 | - gateway.networking.k8s.io_httproutes.yaml 7 | - gateway.networking.k8s.io_referencegrants.yaml 8 | - gateway.networking.k8s.io_tcproutes.yaml 9 | - gateway.networking.k8s.io_tlsroutes.yaml 10 | - gateway.networking.k8s.io_udproutes.yaml 11 | - gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml 12 | - gateway.networking.x-k8s.io_xlistenersets.yaml 13 | -------------------------------------------------------------------------------- /examples/standard/http-request-header-add.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: header-http-echo 5 | spec: 6 | parentRefs: 7 | - name: acme-gw 8 | rules: 9 | - matches: 10 | - path: 11 | type: PathPrefix 12 | value: /add-a-request-header 13 | filters: 14 | - type: RequestHeaderModifier 15 | requestHeaderModifier: 16 | add: 17 | - name: my-header-name 18 | value: my-header-value 19 | backendRefs: 20 | - name: echo 21 | port: 8080 22 | -------------------------------------------------------------------------------- /examples/standard/http-request-mirroring/httproute-mirroring.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-request-mirroring.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: http-filter-mirror 7 | labels: 8 | gateway: mirror-gateway 9 | spec: 10 | parentRefs: 11 | - name: mirror-gateway 12 | hostnames: 13 | - mirror.example 14 | rules: 15 | - backendRefs: 16 | - name: foo-v1 17 | port: 8080 18 | filters: 19 | - type: RequestMirror 20 | requestMirror: 21 | backendRef: 22 | name: foo-v2 23 | port: 8080 24 | -------------------------------------------------------------------------------- /geps/gep-1897/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1897 4 | name: BackendTLSPolicy - Explicit Backend TLS Connection Configuration 5 | status: Standard 6 | authors: 7 | - candita 8 | - brianehlert 9 | - robscott 10 | - youngnick 11 | - howardjohn 12 | - snorwin 13 | relationships: 14 | obsoletes: 15 | - number: 1282 16 | name: Describing Backend Properties 17 | description: Implements just part of the Backend Properties GEP. 18 | extendedBy: 19 | - number: 4152 20 | name: Extending TLS Validation in BackendTLSPolicy 21 | -------------------------------------------------------------------------------- /conformance/tests/httproute-named-rule.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: http-named-rules 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - name: named-rule 11 | matches: 12 | - path: 13 | type: PathPrefix 14 | value: /named 15 | backendRefs: 16 | - name: infra-backend-v1 17 | port: 8080 18 | - matches: 19 | - path: 20 | type: PathPrefix 21 | value: /unnamed 22 | backendRefs: 23 | - name: infra-backend-v2 24 | port: 8080 25 | -------------------------------------------------------------------------------- /examples/standard/http-request-header-set.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: header-http-echo 5 | spec: 6 | parentRefs: 7 | - name: acme-gw 8 | rules: 9 | - matches: 10 | - path: 11 | type: PathPrefix 12 | value: /edit-a-request-header 13 | filters: 14 | - type: RequestHeaderModifier 15 | requestHeaderModifier: 16 | set: 17 | - name: my-header-name 18 | value: my-new-header-value 19 | backendRefs: 20 | - name: echo 21 | port: 8080 22 | -------------------------------------------------------------------------------- /conformance/tests/httproute-invalid-parentref-not-matching-section-name.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: httproute-listener-not-matching-section-name 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | namespace: gateway-conformance-infra 10 | port: 80 11 | # mismatched sectionName here (http1 is not an available gateway listener) triggers NoMatchingParent reason 12 | sectionName: http1 13 | rules: 14 | - backendRefs: 15 | - name: infra-backend-v1 16 | kind: Service 17 | port: 8080 18 | -------------------------------------------------------------------------------- /examples/standard/multicluster/httproute-method.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - geps/gep-1748.md 3 | kind: HTTPRoute 4 | apiVersion: gateway.networking.k8s.io/v1beta1 5 | metadata: 6 | name: api 7 | spec: 8 | parentRefs: 9 | - name: api-gw 10 | rules: 11 | - matches: 12 | - method: POST 13 | - method: PUT 14 | - method: DELETE 15 | backendRefs: 16 | - group: multicluster.x-k8s.io 17 | kind: ServiceImport 18 | name: api-primary 19 | port: 8080 20 | - backendRefs: 21 | - group: multicluster.x-k8s.io 22 | kind: ServiceImport 23 | name: api-replicas 24 | port: 8080 25 | -------------------------------------------------------------------------------- /conformance/tests/mesh/mesh-consumer-route.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-echo-add-header 5 | namespace: gateway-conformance-mesh-consumer 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo-v1 11 | namespace: gateway-conformance-mesh 12 | rules: 13 | - filters: 14 | - type: ResponseHeaderModifier 15 | responseHeaderModifier: 16 | set: 17 | - name: X-Header-Set 18 | value: set 19 | backendRefs: 20 | - name: echo-v1 21 | namespace: gateway-conformance-mesh 22 | port: 80 23 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-redirect-full.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/api-types/httproute.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: http-filter-redirect 7 | spec: 8 | hostnames: 9 | - redirect.example 10 | rules: 11 | - matches: 12 | - path: 13 | type: PathPrefix 14 | value: /cayenne 15 | filters: 16 | - type: RequestRedirect 17 | requestRedirect: 18 | path: 19 | type: ReplaceFullPath 20 | replaceFullPath: /paprika 21 | statusCode: 302 22 | -------------------------------------------------------------------------------- /examples/standard/http-routing/gateway.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-routing.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: Gateway 5 | metadata: 6 | name: example-gateway 7 | spec: 8 | gatewayClassName: example-gateway-class 9 | listeners: 10 | - name: http 11 | protocol: HTTP 12 | port: 80 13 | --- 14 | apiVersion: gateway.networking.k8s.io/v1 15 | kind: HTTPRoute 16 | metadata: 17 | name: example-route 18 | spec: 19 | parentRefs: 20 | - name: example-gateway 21 | hostnames: 22 | - "example.com" 23 | rules: 24 | - backendRefs: 25 | - name: example-svc 26 | port: 80 27 | -------------------------------------------------------------------------------- /conformance/tests/gateway-secret-missing-reference-grant.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: gateway-secret-missing-reference-grant 5 | namespace: gateway-conformance-infra 6 | spec: 7 | gatewayClassName: "{GATEWAY_CLASS_NAME}" 8 | listeners: 9 | - name: https 10 | port: 443 11 | protocol: HTTPS 12 | allowedRoutes: 13 | namespaces: 14 | from: All 15 | tls: 16 | certificateRefs: 17 | - group: "" 18 | kind: Secret 19 | name: certificate 20 | namespace: gateway-conformance-web-backend 21 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-redirect-prefix.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/api-types/httproute.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: http-filter-redirect 7 | spec: 8 | hostnames: 9 | - redirect.example 10 | rules: 11 | - matches: 12 | - path: 13 | type: PathPrefix 14 | value: /cayenne 15 | filters: 16 | - type: RequestRedirect 17 | requestRedirect: 18 | path: 19 | type: ReplacePrefixMatch 20 | replacePrefixMatch: /paprika 21 | statusCode: 302 22 | -------------------------------------------------------------------------------- /CHANGELOG/1.2-TEAM.md: -------------------------------------------------------------------------------- 1 | # v1.2 Release Team 2 | 3 | | Enhancement | Leads | 4 | | - | - | 5 | | Infrastructure Labels and Annotations | @keithmattix, @snorwin | 6 | | HTTPRoute Timeouts and Durations | @kflynn, @xtineskim | 7 | | BackendProtocol Support | @dprotaso | 8 | | HTTPRoute Retries | @mikemorris | 9 | | Percentage-based request mirroring | @jakebennert | 10 | | Backend TLS Config improvements | @mkosieradzki, @LiorLieberman | 11 | | Named Route Rules | @guicassolato, @howardjohn | 12 | | Conformance Profiles and Reports | @mlavacca, @shaneutt, @xtineskim | 13 | | Gateway API Maintainers | @mlavacca, @robscott, @shaneutt, @youngnick | 14 | -------------------------------------------------------------------------------- /geps/gep-2257/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 2257 4 | name: Gateway API Duration Format 5 | status: Standard 6 | authors: 7 | - kflynn 8 | relationships: 9 | seeAlso: 10 | - number: 1742 11 | name: HTTPRoute Timeouts 12 | description: HTTPRoute Timeouts use the format specified in this GEP. 13 | references: 14 | - https://datatracker.ietf.org/doc/html/rfc8174 15 | - https://datatracker.ietf.org/doc/html/rfc2119 16 | - https://github.com/kubernetes-sigs/gateway-api/pull/2155 17 | changelog: 18 | - https://github.com/kubernetes-sigs/gateway-api/pull/3210 19 | -------------------------------------------------------------------------------- /examples/standard/cross-namespace-routing/gateway.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/multiple-ns.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: Gateway 5 | metadata: 6 | name: shared-gateway 7 | namespace: infra-ns 8 | spec: 9 | gatewayClassName: shared-gateway-class 10 | listeners: 11 | - name: https 12 | hostname: "foo.example.com" 13 | protocol: HTTPS 14 | port: 443 15 | allowedRoutes: 16 | namespaces: 17 | from: Selector 18 | selector: 19 | matchLabels: 20 | shared-gateway-access: "true" 21 | tls: 22 | certificateRefs: 23 | - name: foo-example-com 24 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-redirect-307.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-redirect-rewrite.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: method-preserving-redirect 7 | spec: 8 | parentRefs: 9 | - name: redirect-gateway 10 | hostnames: 11 | - api.example.com 12 | rules: 13 | - matches: 14 | - path: 15 | type: PathPrefix 16 | value: /api/v1 17 | filters: 18 | - type: RequestRedirect 19 | requestRedirect: 20 | path: 21 | type: ReplaceFullPath 22 | replaceFullPath: /api/v2 23 | statusCode: 307 24 | -------------------------------------------------------------------------------- /examples/standard/httproute.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: my-app 5 | spec: 6 | rules: 7 | - matches: 8 | - path: 9 | type: PathPrefix 10 | value: /mypath 11 | backendRefs: 12 | - name: my-service-1 13 | port: 8080 14 | - matches: 15 | - path: 16 | type: PathPrefix 17 | value: /mypath-012 18 | backendRefs: 19 | - name: my-service-2 20 | port: 8080 21 | - matches: 22 | - path: 23 | type: PathPrefix 24 | value: /my%20path/123 25 | backendRefs: 26 | - name: my-service-3 27 | port: 8080 28 | 29 | -------------------------------------------------------------------------------- /apis/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package apis 18 | -------------------------------------------------------------------------------- /apisx/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2025 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package apisx 18 | -------------------------------------------------------------------------------- /conformance/tests/mesh/httproute-named-rule.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-http-named-rules 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | port: 80 12 | rules: 13 | - name: named-rule 14 | matches: 15 | - path: 16 | type: PathPrefix 17 | value: /named 18 | backendRefs: 19 | - name: echo-v1 20 | port: 8080 21 | - matches: 22 | - path: 23 | type: PathPrefix 24 | value: /unnamed 25 | backendRefs: 26 | - name: echo-v2 27 | port: 8080 28 | -------------------------------------------------------------------------------- /examples/standard/grpc-routing/reflection-grpcroute.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/grpc-routing.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: GRPCRoute 5 | metadata: 6 | name: foo-route 7 | spec: 8 | parentRefs: 9 | - name: example-gateway 10 | hostnames: 11 | - "foo.example.com" 12 | rules: 13 | - matches: 14 | - method: 15 | service: com.example.User 16 | method: Login 17 | backendRefs: 18 | - name: foo-svc 19 | port: 50051 20 | - matches: 21 | - method: 22 | service: grpc.reflection.v1.ServerReflection 23 | backendRefs: 24 | - name: foo-svc 25 | port: 50051 26 | -------------------------------------------------------------------------------- /hack/boilerplate/boilerplate.go.txt: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright YEAR The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /hack/mkdocs/image/requirements.txt: -------------------------------------------------------------------------------- 1 | Click==8.3.1 2 | htmlmin==0.1.12 3 | Jinja2==3.1.6 4 | jsmin==3.0.1 5 | livereload==2.7.1 6 | # mkdocs 2.4.1 requires Markdown < 3.4.0 7 | # https://github.com/kubernetes-sigs/gateway-api/pull/1671#issuecomment-1400586465 8 | markdown~=3.10 9 | MarkupSafe==3.0.3 10 | mkdocs==1.6.1 11 | mkdocs-awesome-pages-plugin==2.10.1 12 | mkdocs-macros-plugin==1.5.0 13 | mkdocs-material==9.7.1 14 | mkdocs-redirects==1.2.2 15 | mkdocs-mermaid2-plugin==1.2.3 16 | pandas>=2.0.3 17 | pep562==1.1 18 | Pygments==2.19.2 19 | pymdown-extensions==10.19.1 20 | PyYAML==6.0.3 21 | six==1.17.0 22 | tabulate==0.9.0 23 | tornado==6.5.4 24 | semver==3.0.4 25 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-redirect-308.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-redirect-rewrite.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: permanent-method-preserving-redirect 7 | spec: 8 | parentRefs: 9 | - name: redirect-gateway 10 | hostnames: 11 | - api.example.com 12 | rules: 13 | - matches: 14 | - path: 15 | type: PathPrefix 16 | value: /old-api 17 | filters: 18 | - type: RequestRedirect 19 | requestRedirect: 20 | path: 21 | type: ReplaceFullPath 22 | replaceFullPath: /new-api 23 | statusCode: 308 24 | -------------------------------------------------------------------------------- /hack/boilerplate/boilerplate.generatego.txt: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /hack/boilerplate/boilerplate.py.txt: -------------------------------------------------------------------------------- 1 | # Copyright YEAR The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-redirect-303.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-redirect-rewrite.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: post-redirect-get 7 | spec: 8 | parentRefs: 9 | - name: redirect-gateway 10 | hostnames: 11 | - forms.example.com 12 | rules: 13 | - matches: 14 | - path: 15 | type: Exact 16 | value: /submit-form 17 | method: POST 18 | filters: 19 | - type: RequestRedirect 20 | requestRedirect: 21 | path: 22 | type: ReplaceFullPath 23 | replaceFullPath: /thank-you 24 | statusCode: 303 25 | -------------------------------------------------------------------------------- /hack/boilerplate/boilerplate.sh.txt: -------------------------------------------------------------------------------- 1 | # Copyright YEAR The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/enhancement.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Enhancement Request 3 | about: Suggest an enhancement to the gateway-api project 4 | labels: kind/feature 5 | 6 | --- 7 | 8 | 9 | 16 | 17 | **What would you like to be added**: 18 | 19 | **Why this is needed**: 20 | 21 | -------------------------------------------------------------------------------- /geps/gep-3171/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha2 2 | kind: GEPDetails 3 | number: 3171 4 | name: Percentage-based Request Mirroring 5 | status: Standard 6 | authors: 7 | - jakebennert 8 | - LiorLieberman 9 | references: 10 | - https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io%2fv1.HTTPRequestMirrorFilter 11 | - https://github.com/kubernetes-sigs/gateway-api/pull/3199 12 | - https://github.com/kubernetes-sigs/gateway-api/pull/3301 13 | - https://github.com/kubernetes-sigs/gateway-api/pull/3638 14 | - https://github.com/kubernetes-sigs/gateway-api/pull/3508 15 | featureNames: 16 | - HTTPRouteRequestPercentageMirror 17 | -------------------------------------------------------------------------------- /examples/standard/tls-basic.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/tls.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: Gateway 5 | metadata: 6 | name: tls-basic 7 | spec: 8 | gatewayClassName: example 9 | listeners: 10 | - name: foo-https 11 | protocol: HTTPS 12 | port: 443 13 | hostname: foo.example.com 14 | tls: 15 | certificateRefs: 16 | - kind: Secret 17 | group: "" 18 | name: foo-example-com-cert 19 | - name: bar-https 20 | protocol: HTTPS 21 | port: 443 22 | hostname: bar.example.com 23 | tls: 24 | certificateRefs: 25 | - kind: Secret 26 | group: "" 27 | name: bar-example-com-cert 28 | -------------------------------------------------------------------------------- /geps/gep-1742/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1742 4 | name: HTTPRoute Timeouts 5 | status: Standard 6 | authors: 7 | - youngnick 8 | - spacewander 9 | - frankbu 10 | - shaneutt 11 | - candita 12 | - robscott 13 | - sjberman 14 | relationships: 15 | seeAlso: 16 | - number: 2257 17 | name: Gateway API Duration Format 18 | description: Defines the duration format used by HTTPRoute timeouts. 19 | references: 20 | - https://datatracker.ietf.org/doc/html/rfc8174 21 | - https://datatracker.ietf.org/doc/html/rfc2119 22 | changelog: 23 | - https://github.com/kubernetes-sigs/gateway-api/pull/3210 24 | 25 | -------------------------------------------------------------------------------- /geps/gep-2659/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 2659 4 | name: Document and improve the GEP process 5 | type: Memorandum 6 | status: Accepted 7 | relationships: 8 | seeAlso: 9 | - number: 917 10 | name: Gateway API Conformance Testing 11 | description: GEP is Memorandum type 12 | - number: 922 13 | name: Gateway API Versioning 14 | description: GEP is Memorandum type 15 | - number: 1324 16 | name: Service Mesh in Gateway API 17 | description: GEP is Memorandum type 18 | authors: 19 | - youngnick 20 | changelog: 21 | - "https://github.com/kubernetes-sigs/gateway-api/pull/2689" 22 | -------------------------------------------------------------------------------- /conformance/reports/v1.3.0/cilium-cilium/README.md: -------------------------------------------------------------------------------- 1 | # Cilium 2 | 3 | ## Table of Contents 4 | 5 | | API channel | Implementation version | Mode | Report | 6 | |--------------|-------------------------------------------|---------|--------------------------------------------------------| 7 | | experimental | [main](https://github.com/cilium/cilium/) | default | [main report](./experimental-main-default-report.yaml) | 8 | 9 | ## Reproduce 10 | 11 | Cilium conformance tests can be reproduced by follow the steps in CI `.github/workflows/conformance-gateway-api.yaml` 12 | from within the [Cilium repo](https://github.com/cilium/cilium). 13 | -------------------------------------------------------------------------------- /conformance/reports/v1.4.0/cilium/README.md: -------------------------------------------------------------------------------- 1 | # Cilium 2 | 3 | ## Table of Contents 4 | 5 | | API channel | Implementation version | Mode | Report | 6 | |--------------|-------------------------------------------|---------|--------------------------------------------------------| 7 | | experimental | [main](https://github.com/cilium/cilium/) | default | [main report](./experimental-v1.19.0-pre.2-default-report.yaml) | 8 | 9 | ## Reproduce 10 | 11 | Cilium conformance tests can be reproduced by follow the steps in CI `.github/workflows/conformance-gateway-api.yaml` 12 | from within the [Cilium repo](https://github.com/cilium/cilium). 13 | -------------------------------------------------------------------------------- /conformance/tests/grpcroute-exact-method-matching.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: GRPCRoute 3 | metadata: 4 | name: exact-matching 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - method: 12 | service: gateway_api_conformance.echo_basic.grpcecho.GrpcEcho 13 | method: Echo 14 | backendRefs: 15 | - name: grpc-infra-backend-v1 16 | port: 8080 17 | - matches: 18 | - method: 19 | service: gateway_api_conformance.echo_basic.grpcecho.GrpcEcho 20 | method: EchoTwo 21 | backendRefs: 22 | - name: grpc-infra-backend-v2 23 | port: 8080 24 | -------------------------------------------------------------------------------- /conformance/tests/httproute-matching.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: matching 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - path: 12 | type: PathPrefix 13 | value: / 14 | - headers: 15 | - name: version 16 | value: one 17 | backendRefs: 18 | - name: infra-backend-v1 19 | port: 8080 20 | - matches: 21 | - path: 22 | type: PathPrefix 23 | value: /v2 24 | - headers: 25 | - name: version 26 | value: two 27 | backendRefs: 28 | - name: infra-backend-v2 29 | port: 8080 30 | -------------------------------------------------------------------------------- /conformance/tests/httproute-timeout-request.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: request-timeout 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - path: 12 | type: PathPrefix 13 | value: /request-timeout 14 | backendRefs: 15 | - name: infra-backend-v1 16 | port: 8080 17 | timeouts: 18 | request: 500ms 19 | - matches: 20 | - path: 21 | type: PathPrefix 22 | value: /disable-request-timeout 23 | backendRefs: 24 | - name: infra-backend-v1 25 | port: 8080 26 | timeouts: 27 | request: "0s" 28 | -------------------------------------------------------------------------------- /conformance/tests/udproute-simple.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1beta1 2 | kind: Gateway 3 | metadata: 4 | name: udp-gateway 5 | namespace: gateway-conformance-infra 6 | spec: 7 | gatewayClassName: "{GATEWAY_CLASS_NAME}" 8 | listeners: 9 | - name: coredns 10 | protocol: UDP 11 | port: 5300 12 | allowedRoutes: 13 | kinds: 14 | - kind: UDPRoute 15 | --- 16 | apiVersion: gateway.networking.k8s.io/v1alpha2 17 | kind: UDPRoute 18 | metadata: 19 | name: udp-coredns 20 | namespace: gateway-conformance-infra 21 | spec: 22 | parentRefs: 23 | - name: udp-gateway 24 | sectionName: coredns 25 | rules: 26 | - backendRefs: 27 | - name: coredns 28 | port: 53 29 | -------------------------------------------------------------------------------- /examples/standard/http-route-attachment/gateway-strict.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/concepts/api-overview.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: Gateway 5 | metadata: 6 | name: foo-gateway 7 | namespace: gateway-api-example-ns1 8 | spec: 9 | gatewayClassName: foo-lb 10 | listeners: 11 | - name: prod-web 12 | port: 80 13 | protocol: HTTP 14 | allowedRoutes: 15 | kinds: 16 | - kind: HTTPRoute 17 | namespaces: 18 | from: Selector 19 | selector: 20 | matchLabels: 21 | # This label is added automatically as of K8s 1.22 22 | # to all namespaces 23 | kubernetes.io/metadata.name: gateway-api-example-ns2 24 | -------------------------------------------------------------------------------- /conformance/tests/grpcroute-named-rule.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: GRPCRoute 3 | metadata: 4 | name: grpc-named-rules 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - name: named-rule 11 | matches: 12 | - method: 13 | service: gateway_api_conformance.echo_basic.grpcecho.GrpcEcho 14 | method: Echo 15 | backendRefs: 16 | - name: grpc-infra-backend-v1 17 | port: 8080 18 | - matches: 19 | - method: 20 | service: gateway_api_conformance.echo_basic.grpcecho.GrpcEcho 21 | method: EchoTwo 22 | backendRefs: 23 | - name: grpc-infra-backend-v2 24 | port: 8080 25 | -------------------------------------------------------------------------------- /examples/standard/simple-http-https/gateway.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: example-gateway 5 | spec: 6 | gatewayClassName: prod 7 | listeners: 8 | - name: http 9 | port: 80 10 | protocol: HTTP 11 | hostname: "*.example.com" 12 | - name: https 13 | port: 443 14 | protocol: HTTPS 15 | hostname: "*.example.com" 16 | tls: 17 | mode: Terminate 18 | certificateRefs: 19 | - kind: Secret 20 | name: example-com 21 | - name: https-default-tls-mode 22 | port: 8443 23 | protocol: HTTPS 24 | hostname: "*.foo.com" 25 | tls: 26 | certificateRefs: 27 | - kind: Secret 28 | name: foo-com 29 | -------------------------------------------------------------------------------- /examples/standard/wildcard-tls-gateway.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/tls.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: Gateway 5 | metadata: 6 | name: wildcard-tls-gateway 7 | spec: 8 | gatewayClassName: example 9 | listeners: 10 | - name: foo-https 11 | protocol: HTTPS 12 | port: 443 13 | hostname: foo.example.com 14 | tls: 15 | certificateRefs: 16 | - kind: Secret 17 | group: "" 18 | name: foo-example-com-cert 19 | - name: wildcard-https 20 | protocol: HTTPS 21 | port: 443 22 | hostname: "*.example.com" 23 | tls: 24 | certificateRefs: 25 | - kind: Secret 26 | group: "" 27 | name: wildcard-example-com-cert 28 | -------------------------------------------------------------------------------- /geps/gep-995/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 995 4 | name: Named route rules 5 | status: Standard 6 | authors: 7 | - guicassolato 8 | changelog: 9 | - "https://github.com/kubernetes-sigs/gateway-api/pull/2593" 10 | relationships: 11 | seeAlso: 12 | - number: 2648 13 | name: Direct Policy Attachment 14 | description: Defines a way to attach direct policies to sections of a route. 15 | - number: 2649 16 | name: Inherited Policy Attachment 17 | description: | 18 | Provides a more assertive way to report status regarding sections of a route. 19 | E.g.: when a policy that targets a Service affects rules of a route. 20 | -------------------------------------------------------------------------------- /conformance/reports/v1.3.0/cloud-provider-kind/standard-v0.8.0-alpha.1-default-report.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | date: "2025-09-07T12:44:41Z" 3 | gatewayAPIChannel: standard 4 | gatewayAPIVersion: v1.3.0 5 | implementation: 6 | contact: 7 | - https://github.com/kubernetes-sigs/cloud-provider-kind/issues/new 8 | organization: sigs.k8s.io 9 | project: cloud-provider-kind 10 | url: https://github.com/kubernetes-sigs/cloud-provider-kind 11 | version: v0.8.0-alpha.1 12 | kind: ConformanceReport 13 | mode: default 14 | profiles: 15 | - core: 16 | result: success 17 | statistics: 18 | Failed: 0 19 | Passed: 33 20 | Skipped: 0 21 | name: GATEWAY-HTTP 22 | summary: Core tests succeeded. 23 | -------------------------------------------------------------------------------- /conformance/tests/httproute-redirect-host-and-status.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: redirect-host-and-status 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - path: 12 | type: PathPrefix 13 | value: /hostname-redirect 14 | filters: 15 | - type: RequestRedirect 16 | requestRedirect: 17 | hostname: example.org 18 | - matches: 19 | - path: 20 | type: PathPrefix 21 | value: /host-and-status 22 | filters: 23 | - type: RequestRedirect 24 | requestRedirect: 25 | statusCode: 301 26 | hostname: example.org 27 | 28 | -------------------------------------------------------------------------------- /conformance/tests/httproute-timeout-backend-request.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: backend-request-timeout 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - path: 12 | type: PathPrefix 13 | value: /backend-timeout 14 | backendRefs: 15 | - name: infra-backend-v1 16 | port: 8080 17 | timeouts: 18 | backendRequest: 500ms 19 | - matches: 20 | - path: 21 | type: PathPrefix 22 | value: /disable-backend-timeout 23 | backendRefs: 24 | - name: infra-backend-v1 25 | port: 8080 26 | timeouts: 27 | backendRequest: "0s" 28 | -------------------------------------------------------------------------------- /geps/gep-1713/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1713 4 | name: XListenerSets (Standard Mechanism to Merge Gateways) 5 | status: Experimental 6 | authors: 7 | - dprotaso 8 | - youngnick 9 | - mlavacca 10 | references: 11 | - https://github.com/kubernetes-sigs/gateway-api/pull/3477 12 | - https://github.com/kubernetes-sigs/gateway-api/pull/3213 13 | - https://github.com/kubernetes-sigs/gateway-api/pull/3632 14 | - https://github.com/kubernetes-sigs/gateway-api/pull/3664 15 | - https://github.com/kubernetes-sigs/gateway-api/pull/3587 16 | - https://github.com/kubernetes-sigs/gateway-api/pull/3588 17 | - https://github.com/kubernetes-sigs/gateway-api/pull/3682 18 | -------------------------------------------------------------------------------- /conformance/reports/v1.1.0/cilium-cilium/README.md: -------------------------------------------------------------------------------- 1 | # Cilium 2 | 3 | ## Table of Contents 4 | 5 | | API channel | Implementation version | Mode | Report | 6 | |--------------|--------------------------------------------------------------|---------|-------------------------------------------------| 7 | | experimental | [1.16](https://github.com/cilium/cilium/releases/tag/1.16.0) | default | [v1.16 report](./experimental-1.16-default-report.yaml) | 8 | 9 | ## Reproduce 10 | 11 | Cilium conformance tests can be reproduced by follow the steps in CI `.github/workflows/conformance-gateway-api.yaml` 12 | from within the [Cilium repo](https://github.com/cilium/cilium). 13 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-rewrite-full-path.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-redirect-rewrite.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: http-filter-rewrite 7 | spec: 8 | hostnames: 9 | - rewrite.example 10 | rules: 11 | - matches: 12 | - path: 13 | type: PathPrefix 14 | value: /cardamom 15 | filters: 16 | - type: URLRewrite 17 | urlRewrite: 18 | hostname: elsewhere.example 19 | path: 20 | type: ReplaceFullPath 21 | replaceFullPath: /fennel 22 | backendRefs: 23 | - name: example-svc 24 | weight: 1 25 | port: 80 26 | -------------------------------------------------------------------------------- /conformance/reports/v1.2.1/cilium-cilium/README.md: -------------------------------------------------------------------------------- 1 | # Cilium 2 | 3 | ## Table of Contents 4 | 5 | | API channel | Implementation version | Mode | Report | 6 | |--------------|-----------------------------------------------------------------|---------|-------------------------------------------------| 7 | | experimental | [1.17.0](https://github.com/cilium/cilium/releases/tag/v1.17.0) | default | [v1.17 report](./experimental-1.17-default-report.yaml) | 8 | 9 | ## Reproduce 10 | 11 | Cilium conformance tests can be reproduced by follow the steps in CI `.github/workflows/conformance-gateway-api.yaml` 12 | from within the [Cilium repo](https://github.com/cilium/cilium). 13 | -------------------------------------------------------------------------------- /conformance/tests/mesh/httproute-matching.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-matching 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | port: 80 12 | rules: 13 | - matches: 14 | - path: 15 | type: PathPrefix 16 | value: / 17 | - headers: 18 | - name: version 19 | value: one 20 | backendRefs: 21 | - name: echo-v1 22 | port: 8080 23 | - matches: 24 | - path: 25 | type: PathPrefix 26 | value: /v2 27 | - headers: 28 | - name: version 29 | value: two 30 | backendRefs: 31 | - name: echo-v2 32 | port: 8080 33 | -------------------------------------------------------------------------------- /examples/standard/http-redirect-rewrite/httproute-rewrite-prefix-path.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/http-redirect-rewrite.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: http-filter-rewrite 7 | spec: 8 | hostnames: 9 | - rewrite.example 10 | rules: 11 | - matches: 12 | - path: 13 | type: PathPrefix 14 | value: /cardamom 15 | filters: 16 | - type: URLRewrite 17 | urlRewrite: 18 | hostname: elsewhere.example 19 | path: 20 | type: ReplacePrefixMatch 21 | replacePrefixMatch: /fennel 22 | backendRefs: 23 | - name: example-svc 24 | weight: 1 25 | port: 80 26 | -------------------------------------------------------------------------------- /conformance/reports/v1.3.0/agentgateway-agentgateway/README.md: -------------------------------------------------------------------------------- 1 | # Agent Gateway (with kgateway) 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | |experimental|[v0.6.0]|default|[report](./experimental-0.6.0-report.yaml)| 8 | 9 | ## Reproduce 10 | 11 | ``` 12 | go test./conformance -run TestConformance -args \ 13 | --report-output /tmp/report.yaml \ 14 | --conformance-profiles=GATEWAY-HTTP \ 15 | --gateway-class agentgateway \ 16 | --all-features \ 17 | --organization agentgateway \ 18 | --project agentgateway \ 19 | --url http://agentgateway.dev/ \ 20 | --version v0.6.0-dev \ 21 | --contact "github.com/agentgateway/agentgateway/issues/new/choose" 22 | ``` 23 | -------------------------------------------------------------------------------- /examples/standard/grpc-routing/gateway.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/grpc-routing.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: Gateway 5 | metadata: 6 | name: example-gateway 7 | spec: 8 | gatewayClassName: example-gateway-class 9 | listeners: 10 | - name: grpc 11 | protocol: HTTPS 12 | port: 50051 13 | tls: 14 | certificateRefs: 15 | - kind: Secret 16 | group: "" 17 | name: example-com-cert 18 | --- 19 | apiVersion: gateway.networking.k8s.io/v1 20 | kind: GRPCRoute 21 | metadata: 22 | name: example-route 23 | spec: 24 | parentRefs: 25 | - name: example-gateway 26 | hostnames: 27 | - "example.com" 28 | rules: 29 | - backendRefs: 30 | - name: example-svc 31 | port: 50051 32 | -------------------------------------------------------------------------------- /conformance/embed.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package conformance 18 | 19 | import "embed" 20 | 21 | //go:embed tests/* base/* mesh/* 22 | var Manifests embed.FS 23 | -------------------------------------------------------------------------------- /examples/standard/gateway-addresses.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: gateway-addresses 5 | spec: 6 | gatewayClassName: example 7 | addresses: 8 | - value: 1200:0000:AB00:1234:0000:2552:7777:1313 9 | - value: 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A 10 | - value: "2001:db8:3c4d:15:0:d234:3eee::" 11 | - value: "1234::" 12 | - value: "1.1.1.1" 13 | - value: "1.2.3.4" 14 | - value: "0.0.0.0" 15 | - value: "9.255.255.255" 16 | - value: "11.0.0.0" 17 | - type: IPAddress 18 | value: "255.255.255.255" 19 | - type: "Hostname" 20 | value: "example.com" 21 | listeners: 22 | - protocol: HTTP 23 | port: 80 24 | name: prod-web-gw 25 | allowedRoutes: 26 | namespaces: 27 | from: Same 28 | -------------------------------------------------------------------------------- /conformance/reports/v1.2.0/cilium-cilium/README.md: -------------------------------------------------------------------------------- 1 | # Cilium 2 | 3 | ## Table of Contents 4 | 5 | | API channel | Implementation version | Mode | Report | 6 | |--------------|-----------------------------------------------------------------------------|---------|-------------------------------------------------| 7 | | experimental | [1.17.0-pre.1](https://github.com/cilium/cilium/releases/tag/v1.17.0-pre.1) | default | [v1.17 report](./experimental-1.17-default-report.yaml) | 8 | 9 | ## Reproduce 10 | 11 | Cilium conformance tests can be reproduced by follow the steps in CI `.github/workflows/conformance-gateway-api.yaml` 12 | from within the [Cilium repo](https://github.com/cilium/cilium). 13 | -------------------------------------------------------------------------------- /conformance/tests/httproute-https-listener.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: httproute-https-test 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace-with-https-listener 9 | hostnames: 10 | - example.org 11 | rules: 12 | - backendRefs: 13 | - name: infra-backend-v1 14 | port: 8080 15 | --- 16 | apiVersion: gateway.networking.k8s.io/v1 17 | kind: HTTPRoute 18 | metadata: 19 | name: httproute-https-test-no-hostname 20 | namespace: gateway-conformance-infra 21 | spec: 22 | parentRefs: 23 | - name: same-namespace-with-https-listener 24 | sectionName: https-with-hostname 25 | rules: 26 | - backendRefs: 27 | - name: infra-backend-v2 28 | port: 8080 29 | -------------------------------------------------------------------------------- /geps/gep-2643/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 2643 4 | name: TLS based passthrough Route / TLSRoute 5 | status: Experimental 6 | # Note: The feature already exists, the GEP is a retroactive collection of information 7 | authors: 8 | - candita 9 | - Miciah 10 | - rikatz 11 | - rostislavbobo 12 | relationships: 13 | seeAlso: 14 | - number: 2907 15 | name: TLS Configuration Placement and Terminology 16 | - number: 4274 17 | name: BackendTLSPolicy - Extend support for TLSRoute 18 | - number: 4271 19 | name: TLSRoute/HTTPRoute multiplexing 20 | references: 21 | - https://datatracker.ietf.org/doc/html/rfc6066#section-3 22 | - https://github.com/kubernetes-sigs/gateway-api/issues/2111 23 | -------------------------------------------------------------------------------- /examples/standard/multicluster/httproute-referencegrant.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - geps/gep-1748.md 3 | kind: HTTPRoute 4 | apiVersion: gateway.networking.k8s.io/v1beta1 5 | metadata: 6 | name: foo 7 | namespace: foo 8 | spec: 9 | rules: 10 | - matches: 11 | - path: 12 | type: PathPrefix 13 | value: /bar 14 | backendRefs: 15 | - group: multicluster.x-k8s.io 16 | kind: ServiceImport 17 | name: bar 18 | namespace: bar 19 | --- 20 | kind: ReferenceGrant 21 | apiVersion: gateway.networking.k8s.io/v1beta1 22 | metadata: 23 | name: bar 24 | namespace: bar 25 | spec: 26 | from: 27 | - group: gateway.networking.k8s.io 28 | kind: HTTPRoute 29 | namespace: foo 30 | to: 31 | - group: multicluster.x-k8s.io 32 | kind: ServiceImport 33 | -------------------------------------------------------------------------------- /conformance/tests/mesh/httproute-redirect-host-and-status.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: mesh-redirect-host-and-status 5 | namespace: gateway-conformance-mesh 6 | spec: 7 | parentRefs: 8 | - group: "" 9 | kind: Service 10 | name: echo 11 | port: 80 12 | rules: 13 | - matches: 14 | - path: 15 | type: PathPrefix 16 | value: /hostname-redirect 17 | filters: 18 | - type: RequestRedirect 19 | requestRedirect: 20 | hostname: example.org 21 | - matches: 22 | - path: 23 | type: PathPrefix 24 | value: /host-and-status 25 | filters: 26 | - type: RequestRedirect 27 | requestRedirect: 28 | statusCode: 301 29 | hostname: example.org 30 | 31 | -------------------------------------------------------------------------------- /conformance/utils/tlog/tlog_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2024 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package tlog 18 | 19 | import "testing" 20 | 21 | func TestTLog(t *testing.T) { 22 | Log(t, "Log") 23 | Logf(t, "%s", "Log") 24 | } 25 | -------------------------------------------------------------------------------- /conformance/tests/httproute-reference-grant.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1beta1 2 | kind: ReferenceGrant 3 | metadata: 4 | name: reference-grant 5 | namespace: gateway-conformance-web-backend 6 | spec: 7 | from: 8 | - group: gateway.networking.k8s.io 9 | kind: HTTPRoute 10 | namespace: gateway-conformance-infra 11 | to: 12 | - group: "" 13 | kind: Service 14 | name: web-backend 15 | --- 16 | apiVersion: gateway.networking.k8s.io/v1 17 | kind: HTTPRoute 18 | metadata: 19 | name: reference-grant 20 | namespace: gateway-conformance-infra 21 | spec: 22 | parentRefs: 23 | - name: same-namespace 24 | rules: 25 | - backendRefs: 26 | - name: web-backend 27 | namespace: gateway-conformance-web-backend 28 | port: 8080 29 | -------------------------------------------------------------------------------- /conformance/tests/mesh/main.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2025 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package meshtests 18 | 19 | import "sigs.k8s.io/gateway-api/conformance/utils/suite" 20 | 21 | var MeshConformanceTests []suite.ConformanceTest 22 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/fake/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // This package has the automatically generated fake clientset. 20 | package fake 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // This package has the automatically generated typed clients. 20 | package v1 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1/fake/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // Package fake has the automatically generated clients. 20 | package fake 21 | -------------------------------------------------------------------------------- /conformance/reports/v1.3.0/gravitee/standard-4.8.5-default-report.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | date: "2025-09-03T11:18:57+02:00" 3 | gatewayAPIChannel: standard 4 | gatewayAPIVersion: v1.3.0 5 | implementation: 6 | contact: 7 | - team-devex@graviteesource.com 8 | organization: gravitee.io 9 | project: gravitee-kubernetes-operator 10 | url: https://github.com/gravitee-io/gravitee-kubernetes-operator 11 | version: 4.8.5 12 | kind: ConformanceReport 13 | mode: default 14 | profiles: 15 | - core: 16 | result: partial 17 | skippedTests: 18 | - HTTPRouteMatchingAcrossRoutes 19 | - HTTPRouteServiceTypes 20 | statistics: 21 | Failed: 0 22 | Passed: 31 23 | Skipped: 2 24 | name: GATEWAY-HTTP 25 | summary: Core tests partially succeeded with 2 test skips. 26 | -------------------------------------------------------------------------------- /examples/experimental/http-response-header.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: response-header-modifier 5 | spec: 6 | parentRefs: 7 | - name: acme-gw 8 | rules: 9 | - matches: 10 | - path: 11 | type: PathPrefix 12 | value: /add-multiple-response-headers 13 | filters: 14 | - type: ResponseHeaderModifier 15 | responseHeaderModifier: 16 | add: 17 | - name: X-Header-Add-1 18 | value: header-add-1 19 | - name: X-Header-Add-2 20 | value: header-add-2 21 | - name: X-Header-Add-3 22 | value: header-add-3 23 | - name: Content-Disposition 24 | value: "attachment; filename=\"example_file.txt\"" 25 | backendRefs: 26 | - name: echo 27 | port: 8080 28 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1alpha2/fake/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // Package fake has the automatically generated clients. 20 | package fake 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1alpha3/fake/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // Package fake has the automatically generated clients. 20 | package fake 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1beta1/fake/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // Package fake has the automatically generated clients. 20 | package fake 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apisx/v1alpha1/fake/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // Package fake has the automatically generated clients. 20 | package fake 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/scheme/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // This package contains the scheme of the automatically generated clientset. 20 | package scheme 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1alpha2/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // This package has the automatically generated typed clients. 20 | package v1alpha2 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1alpha3/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // This package has the automatically generated typed clients. 20 | package v1alpha3 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1beta1/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // This package has the automatically generated typed clients. 20 | package v1beta1 21 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apisx/v1alpha1/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | // This package has the automatically generated typed clients. 20 | package v1alpha1 21 | -------------------------------------------------------------------------------- /conformance/tests/httproute-disallowed-kind.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: tlsroutes-only 5 | namespace: gateway-conformance-infra 6 | spec: 7 | gatewayClassName: "{GATEWAY_CLASS_NAME}" 8 | listeners: 9 | - name: tls 10 | port: 443 11 | protocol: TLS 12 | tls: 13 | mode: Passthrough 14 | allowedRoutes: 15 | namespaces: 16 | from: Same 17 | kinds: 18 | - kind: TLSRoute 19 | --- 20 | apiVersion: gateway.networking.k8s.io/v1 21 | kind: HTTPRoute 22 | metadata: 23 | name: disallowed-kind 24 | namespace: gateway-conformance-infra 25 | spec: 26 | parentRefs: 27 | - name: tlsroutes-only 28 | namespace: gateway-conformance-infra 29 | rules: 30 | - backendRefs: 31 | - name: infra-backend-v1 32 | port: 8080 33 | -------------------------------------------------------------------------------- /hack/install-examples.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2020 The Kubernetes Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | set -o errexit 18 | set -o nounset 19 | set -o pipefail 20 | 21 | # Install all example gateway-api resources. 22 | kubectl apply --recursive -f examples 23 | -------------------------------------------------------------------------------- /examples/standard/cross-namespace-routing/site-route.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/guides/multiple-ns.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: HTTPRoute 5 | metadata: 6 | name: home 7 | namespace: site-ns 8 | spec: 9 | parentRefs: 10 | - name: shared-gateway 11 | namespace: infra-ns 12 | rules: 13 | - backendRefs: 14 | - name: home 15 | port: 8080 16 | --- 17 | apiVersion: gateway.networking.k8s.io/v1 18 | kind: HTTPRoute 19 | metadata: 20 | name: login 21 | namespace: site-ns 22 | spec: 23 | parentRefs: 24 | - name: shared-gateway 25 | namespace: infra-ns 26 | rules: 27 | - matches: 28 | - path: 29 | value: /login 30 | backendRefs: 31 | - name: login-v1 32 | port: 8080 33 | weight: 90 34 | - name: login-v2 35 | port: 8080 36 | weight: 10 37 | -------------------------------------------------------------------------------- /geps/gep-3779/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 3779 4 | name: Identity Based Authz for east-west traffic 5 | status: Implementable 6 | # Any authors who contribute to the GEP in any way should be listed here using 7 | # their GitHub handle. 8 | authors: 9 | - liorlieberman 10 | - aryan16 11 | # references is a list of hyperlinks to relevant external references. 12 | # It's intended to be used for storing GitHub discussions, Google docs, etc. 13 | references: [] 14 | # featureNames is a list of the feature names introduced by the GEP, if there 15 | # are any. This will allow us to track which feature was introduced by which GEP. 16 | featureNames: [] 17 | # changelog is a list of hyperlinks to PRs that make changes to the GEP, in 18 | # ascending date order. 19 | changelog: [] 20 | -------------------------------------------------------------------------------- /conformance/tests/httproute-request-header-modifier-backend-weights.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: request-header-modifier-backend-weights 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - backendRefs: 11 | - name: infra-backend-v1 12 | port: 8080 13 | weight: 10 14 | filters: 15 | - type: RequestHeaderModifier 16 | requestHeaderModifier: 17 | set: 18 | - name: Backend 19 | value: infra-backend-v1 20 | - name: infra-backend-v2 21 | port: 8080 22 | weight: 10 23 | filters: 24 | - type: RequestHeaderModifier 25 | requestHeaderModifier: 26 | set: 27 | - name: Backend 28 | value: infra-backend-v2 29 | -------------------------------------------------------------------------------- /hack/invalid-examples/standard/gateway/invalid-addresses.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: invalid-addresses 5 | spec: 6 | gatewayClassName: example 7 | addresses: 8 | - value: 1200:0000:::AB00:1234:0000:2552:7777:1313 9 | - value: 21DA:D3:0:2F3B:2AY:FF:FE28:9C5A 10 | - value: "2001:db8:3c4d:15:0:d234:3eee:" 11 | - value: "2001:db8:3c4d:15:0:d234:3eee:::" 12 | - value: ":::1234::" 13 | - value: "1.1.1" 14 | - value: "1.a.3.4" 15 | - value: "foo.com" 16 | - type: IPAddress 17 | value: "256.255.255.255" 18 | - type: "Hostname" 19 | value: "foo.com:80" 20 | - type: "example.com/custom" 21 | value: "anything goes" 22 | listeners: 23 | - protocol: HTTP 24 | port: 80 25 | name: prod-web-gw 26 | allowedRoutes: 27 | namespaces: 28 | from: Same 29 | -------------------------------------------------------------------------------- /conformance/tests/main.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package tests 18 | 19 | import ( 20 | "slices" 21 | 22 | meshtests "sigs.k8s.io/gateway-api/conformance/tests/mesh" 23 | ) 24 | 25 | var ConformanceTests = slices.Clone(meshtests.MeshConformanceTests) 26 | -------------------------------------------------------------------------------- /examples/standard/multicluster/httproute-location.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - geps/gep-1748.md 3 | kind: HTTPRoute 4 | apiVersion: gateway.networking.k8s.io/v1beta1 5 | metadata: 6 | name: store 7 | spec: 8 | parentRefs: 9 | - name: external-http 10 | rules: 11 | - matches: 12 | - path: 13 | type: PathPrefix 14 | value: /west 15 | backendRefs: 16 | - group: multicluster.x-k8s.io 17 | kind: ServiceImport 18 | name: store-west 19 | port: 8080 20 | - matches: 21 | - path: 22 | type: PathPrefix 23 | value: /east 24 | backendRefs: 25 | - group: multicluster.x-k8s.io 26 | kind: ServiceImport 27 | name: store-east 28 | port: 8080 29 | - backendRefs: 30 | - group: multicluster.x-k8s.io 31 | kind: ServiceImport 32 | name: store 33 | port: 8080 34 | -------------------------------------------------------------------------------- /conformance/reports/v1.2.1/kubvernor/kubvernor-conformance-output-1.2.1.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | date: "2025-05-24T16:25:25+01:00" 3 | gatewayAPIChannel: standard 4 | gatewayAPIVersion: v1.2.1 5 | implementation: 6 | contact: 7 | - nowakd@gmail.com 8 | organization: kubvernor 9 | project: kubvernor 10 | url: https://github.com/kubvernor/kubvernor 11 | version: 0.1.0 12 | kind: ConformanceReport 13 | mode: default 14 | profiles: 15 | - core: 16 | result: success 17 | statistics: 18 | Failed: 0 19 | Passed: 12 20 | Skipped: 0 21 | name: GATEWAY-GRPC 22 | summary: Core tests succeeded. 23 | - core: 24 | result: success 25 | statistics: 26 | Failed: 0 27 | Passed: 33 28 | Skipped: 0 29 | name: GATEWAY-HTTP 30 | summary: Core tests succeeded. 31 | -------------------------------------------------------------------------------- /conformance/conformance_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package conformance_test 18 | 19 | import ( 20 | "testing" 21 | 22 | "sigs.k8s.io/gateway-api/conformance" 23 | ) 24 | 25 | func TestConformance(t *testing.T) { 26 | conformance.RunConformance(t) 27 | } 28 | -------------------------------------------------------------------------------- /hack/mkdocs/image/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Copyright 2019 The Kubernetes Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | set -o errexit 18 | 19 | CMD=$1 20 | 21 | if [ "$CMD" = "build" ]; 22 | then 23 | mkdocs build 24 | exit 0; 25 | fi 26 | 27 | mkdocs serve --dev-addr=0.0.0.0:3000 --livereload 28 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1alpha3/generated_expansion.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | package v1alpha3 20 | 21 | type BackendTLSPolicyExpansion interface{} 22 | 23 | type TLSRouteExpansion interface{} 24 | -------------------------------------------------------------------------------- /apis/v1/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Package v1 contains API Schema definitions for the gateway.networking.k8s.io 18 | // API group. 19 | // 20 | // +k8s:openapi-gen=true 21 | // +kubebuilder:object:generate=true 22 | // +groupName=gateway.networking.k8s.io 23 | package v1 24 | -------------------------------------------------------------------------------- /geps/gep-1619/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 1619 4 | name: Session Persistence 5 | status: Experimental 6 | authors: 7 | - gcs278 8 | - sjberman 9 | - robscott 10 | relationships: 11 | seeAlso: 12 | - number: 713 13 | name: Metaresources and Policy Attachment 14 | description: Defines metaresource and policy attachment API 15 | - number: 2257 16 | name: Gateway API Duration Format 17 | description: Defines the Duration API field 18 | changelog: 19 | - "https://github.com/kubernetes-sigs/gateway-api/pull/1643" 20 | - "https://github.com/kubernetes-sigs/gateway-api/pull/1889" 21 | - "https://github.com/kubernetes-sigs/gateway-api/pull/1935" 22 | - "https://github.com/kubernetes-sigs/gateway-api/pull/2159" 23 | - "https://github.com/kubernetes-sigs/gateway-api/pull/2634" 24 | -------------------------------------------------------------------------------- /hack/mkdocs/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2019 The Kubernetes Authors. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM python:3.12 16 | 17 | COPY requirements.txt /requirements.txt 18 | RUN pip install -r /requirements.txt 19 | 20 | WORKDIR /docs 21 | 22 | EXPOSE 3000 23 | 24 | COPY entrypoint.sh / 25 | 26 | ENTRYPOINT ["/entrypoint.sh"] -------------------------------------------------------------------------------- /apis/v1beta1/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Package v1beta1 contains API Schema definitions for the 18 | // gateway.networking.k8s.io API group. 19 | // 20 | // +k8s:openapi-gen=true 21 | // +kubebuilder:object:generate=true 22 | // +groupName=gateway.networking.k8s.io 23 | package v1beta1 24 | -------------------------------------------------------------------------------- /apis/v1alpha2/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Package v1alpha2 contains API Schema definitions for the 18 | // gateway.networking.k8s.io API group. 19 | // 20 | // +k8s:openapi-gen=true 21 | // +kubebuilder:object:generate=true 22 | // +groupName=gateway.networking.k8s.io 23 | package v1alpha2 24 | -------------------------------------------------------------------------------- /apis/v1alpha3/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Package v1alpha3 contains API Schema definitions for the 18 | // gateway.networking.k8s.io API group. 19 | // 20 | // +k8s:openapi-gen=true 21 | // +kubebuilder:object:generate=true 22 | // +groupName=gateway.networking.k8s.io 23 | package v1alpha3 24 | -------------------------------------------------------------------------------- /site-src/reference/policy-attachment.md: -------------------------------------------------------------------------------- 1 | # Metaresources and Policy Attachment 2 | 3 | Gateway API defines a Kubernetes object that _augments_ the behavior of an object 4 | in a standard way as a _Metaresource_. ReferenceGrant 5 | is an example of this general type of metaresource, but it is far from the only 6 | one. 7 | 8 | Gateway API also defines a pattern called _Policy Attachment_, which augments 9 | the behavior of an object to add additional settings that can't be described 10 | within the spec of that object. 11 | 12 | A "Policy Attachment" is a specific type of _metaresource_ that can affect specific 13 | settings across either one object (this is "Direct Policy Attachment"), or objects 14 | in a hierarchy (this is "Inherited Policy Attachment"). 15 | 16 | This pattern is EXPERIMENTAL, and is described in [GEP-713](../geps/gep-713/index.md). 17 | Please see that document for technical details. 18 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apisx/v1alpha1/generated_expansion.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | package v1alpha1 20 | 21 | type XBackendTrafficPolicyExpansion interface{} 22 | 23 | type XListenerSetExpansion interface{} 24 | 25 | type XMeshExpansion interface{} 26 | -------------------------------------------------------------------------------- /apis/v1alpha2/object_reference_types.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package v1alpha2 18 | 19 | import v1 "sigs.k8s.io/gateway-api/apis/v1" 20 | 21 | type LocalObjectReference = v1.LocalObjectReference 22 | 23 | type SecretObjectReference = v1.SecretObjectReference 24 | 25 | type BackendObjectReference = v1.BackendObjectReference 26 | -------------------------------------------------------------------------------- /apis/v1beta1/object_reference_types.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package v1beta1 18 | 19 | import v1 "sigs.k8s.io/gateway-api/apis/v1" 20 | 21 | type LocalObjectReference = v1.LocalObjectReference 22 | 23 | type SecretObjectReference = v1.SecretObjectReference 24 | 25 | type BackendObjectReference = v1.BackendObjectReference 26 | -------------------------------------------------------------------------------- /geps/gep-2649/metadata.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: internal.gateway.networking.k8s.io/v1alpha1 2 | kind: GEPDetails 3 | number: 2649 4 | name: Inherited Policy Attachment 5 | status: Declined 6 | authors: 7 | - youngnick 8 | - robscott 9 | relationships: 10 | obsoletedBy: 11 | - name: Metaresources and Policy Attachment 12 | number: 713 13 | description: Merged back into the original spec for Metaresources and Policy Attachment where it's presented as a well-defined class of metaresource 14 | # references is a list of hyperlinks to relevant external references. 15 | # It's intended to be used for storing GitHub discussions, Google docs, etc. 16 | references: 17 | - "https://github.com/kubernetes-sigs/gateway-api/discussions/2927" 18 | # changelog is a list of hyperlinks to PRs that make changes to the GEP, in 19 | # ascending date order. 20 | changelog: 21 | - "https://github.com/kubernetes-sigs/gateway-api/pull/2813" 22 | -------------------------------------------------------------------------------- /apisx/v1alpha1/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2025 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Package v1alpha1 contains API Schema definitions for the gateway.networking.k8s-x.io 18 | // API group. 19 | // 20 | // +k8s:openapi-gen=true 21 | // +kubebuilder:object:generate=true 22 | // +groupName=gateway.networking.x-k8s.io 23 | // +groupGoName=Experimental 24 | package v1alpha1 25 | -------------------------------------------------------------------------------- /conformance/tests/tlsroute-simple-same-namespace.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1alpha2 2 | kind: TLSRoute 3 | metadata: 4 | name: gateway-conformance-infra-test 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: gateway-tlsroute 9 | namespace: gateway-conformance-infra 10 | hostnames: 11 | - abc.example.com 12 | rules: 13 | - backendRefs: 14 | - name: tls-backend 15 | port: 443 16 | --- 17 | apiVersion: gateway.networking.k8s.io/v1beta1 18 | kind: Gateway 19 | metadata: 20 | name: gateway-tlsroute 21 | namespace: gateway-conformance-infra 22 | spec: 23 | gatewayClassName: "{GATEWAY_CLASS_NAME}" 24 | listeners: 25 | - name: https 26 | port: 443 27 | protocol: TLS 28 | hostname: "*.example.com" 29 | allowedRoutes: 30 | namespaces: 31 | from: Same 32 | kinds: 33 | - kind: TLSRoute 34 | tls: 35 | mode: Passthrough 36 | -------------------------------------------------------------------------------- /conformance/reports/v1.2.1/envoy-gateway/README.md: -------------------------------------------------------------------------------- 1 | # Envoy Gateway 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | | experimental |[v1.3.1](https://github.com/envoyproxy/gateway/releases/tag/v1.3.1)| default |[link](./experimental-v1.3.1-default-report.yaml)| 8 | 9 | ## Reproduce 10 | 11 | 1. Clone the Envoy Gateway GitHub repository 12 | 13 | ```bash 14 | git clone https://github.com/envoyproxy/gateway.git && cd gateway 15 | ``` 16 | 17 | 2. Check out the desired version 18 | 19 | ```bash 20 | export VERSION=v 21 | git checkout $VERSION 22 | ``` 23 | 24 | 3. Run the conformance tests 25 | 26 | ```bash 27 | CONFORMANCE_REPORT_PATH=conformance-report-k8s.yaml make experimental-conformance 28 | ``` 29 | 30 | 4. Check the produced report 31 | 32 | ```bash 33 | cat ./conformance-report-k8s.yaml 34 | ``` 35 | -------------------------------------------------------------------------------- /apis/v1alpha3/shared_types.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package v1alpha3 18 | 19 | import v1 "sigs.k8s.io/gateway-api/apis/v1" 20 | 21 | type CommonRouteSpec = v1.CommonRouteSpec 22 | 23 | type BackendRef = v1.BackendRef 24 | 25 | type RouteStatus = v1.RouteStatus 26 | 27 | type Hostname = v1.Hostname 28 | 29 | type SectionName = v1.SectionName 30 | -------------------------------------------------------------------------------- /conformance/reports/v1.1.0/envoy-gateway/README.md: -------------------------------------------------------------------------------- 1 | # Envoy Gateway 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | | experimental |[v1.1.0](https://github.com/envoyproxy/gateway/releases/tag/v1.1.0)| default |[v1.1.0 report](./experimental-v1.1.0-default-report.yaml)| 8 | 9 | ## Reproduce 10 | 11 | 1. Clone the Envoy Gateway GitHub repository 12 | 13 | ```bash 14 | git clone https://github.com/envoyproxy/gateway.git && cd gateway 15 | ``` 16 | 17 | 2. Check out the desired version 18 | 19 | ```bash 20 | export VERSION=v 21 | git checkout $VERSION 22 | ``` 23 | 24 | 3. Run the conformance tests 25 | 26 | ```bash 27 | CONFORMANCE_REPORT_PATH=conformance-report-k8s.yaml make experimental-conformance 28 | ``` 29 | 30 | 4. Check the produced report 31 | 32 | ```bash 33 | cat ./conformance-report-k8s.yaml 34 | ``` 35 | -------------------------------------------------------------------------------- /conformance/tests/gateway-invalid-route-kind.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: Gateway 3 | metadata: 4 | name: gateway-only-invalid-route-kind 5 | namespace: gateway-conformance-infra 6 | spec: 7 | gatewayClassName: "{GATEWAY_CLASS_NAME}" 8 | listeners: 9 | - name: http 10 | port: 80 11 | protocol: HTTP 12 | allowedRoutes: 13 | namespaces: 14 | from: All 15 | kinds: 16 | - kind: InvalidRoute 17 | --- 18 | apiVersion: gateway.networking.k8s.io/v1 19 | kind: Gateway 20 | metadata: 21 | name: gateway-supported-and-invalid-route-kind 22 | namespace: gateway-conformance-infra 23 | spec: 24 | gatewayClassName: "{GATEWAY_CLASS_NAME}" 25 | listeners: 26 | - name: http 27 | port: 80 28 | protocol: HTTP 29 | allowedRoutes: 30 | namespaces: 31 | from: All 32 | kinds: 33 | - kind: InvalidRoute 34 | - kind: HTTPRoute 35 | -------------------------------------------------------------------------------- /examples/standard/tls-cert-cross-namespace.yaml: -------------------------------------------------------------------------------- 1 | #$ Used in: 2 | #$ - site-src/v1alpha2/guides/tls.md 3 | apiVersion: gateway.networking.k8s.io/v1 4 | kind: Gateway 5 | metadata: 6 | name: cross-namespace-tls-gateway 7 | namespace: gateway-api-example-ns1 8 | spec: 9 | gatewayClassName: example 10 | listeners: 11 | - name: https 12 | protocol: HTTPS 13 | port: 443 14 | hostname: "*.example.com" 15 | tls: 16 | certificateRefs: 17 | - kind: Secret 18 | group: "" 19 | name: wildcard-example-com-cert 20 | namespace: gateway-api-example-ns2 21 | --- 22 | apiVersion: gateway.networking.k8s.io/v1beta1 23 | kind: ReferenceGrant 24 | metadata: 25 | name: allow-ns1-gateways-to-ref-secrets 26 | namespace: gateway-api-example-ns2 27 | spec: 28 | from: 29 | - group: gateway.networking.k8s.io 30 | kind: Gateway 31 | namespace: gateway-api-example-ns1 32 | to: 33 | - group: "" 34 | kind: Secret 35 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1beta1/generated_expansion.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | package v1beta1 20 | 21 | type GatewayExpansion interface{} 22 | 23 | type GatewayClassExpansion interface{} 24 | 25 | type HTTPRouteExpansion interface{} 26 | 27 | type ReferenceGrantExpansion interface{} 28 | -------------------------------------------------------------------------------- /conformance/reports/v1.2.0/envoy-gateway/README.md: -------------------------------------------------------------------------------- 1 | # Envoy Gateway 2 | 3 | ## Table of Contents 4 | 5 | |API channel|Implementation version|Mode|Report| 6 | |-----------|----------------------|----|------| 7 | | experimental |[v1.2.0-rc.1](https://github.com/envoyproxy/gateway/releases/tag/v1.2.0-rc.1)| default |[v1.2.0 report](./experimental-v1.2.0-default-report.yaml)| 8 | 9 | ## Reproduce 10 | 11 | 1. Clone the Envoy Gateway GitHub repository 12 | 13 | ```bash 14 | git clone https://github.com/envoyproxy/gateway.git && cd gateway 15 | ``` 16 | 17 | 2. Check out the desired version 18 | 19 | ```bash 20 | export VERSION=v 21 | git checkout $VERSION 22 | ``` 23 | 24 | 3. Run the conformance tests 25 | 26 | ```bash 27 | CONFORMANCE_REPORT_PATH=conformance-report-k8s.yaml make experimental-conformance 28 | ``` 29 | 30 | 4. Check the produced report 31 | 32 | ```bash 33 | cat ./conformance-report-k8s.yaml 34 | ``` 35 | -------------------------------------------------------------------------------- /conformance/tests/httproute-cors-allow-credentials-behavior.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: gateway.networking.k8s.io/v1 2 | kind: HTTPRoute 3 | metadata: 4 | name: cors-allow-credentials 5 | namespace: gateway-conformance-infra 6 | spec: 7 | parentRefs: 8 | - name: same-namespace 9 | rules: 10 | - matches: 11 | - path: 12 | type: PathPrefix 13 | value: /cors-behavior-creds-false 14 | backendRefs: 15 | - name: infra-backend-v1 16 | port: 8080 17 | filters: 18 | - cors: 19 | allowOrigins: 20 | - https://app.example 21 | allowCredentials: false 22 | type: CORS 23 | - matches: 24 | - path: 25 | type: PathPrefix 26 | value: /cors-behavior-creds-true 27 | backendRefs: 28 | - name: infra-backend-v1 29 | port: 8080 30 | filters: 31 | - cors: 32 | allowOrigins: 33 | - https://app.example 34 | allowCredentials: true 35 | type: CORS 36 | 37 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | # Netlify build instructions 2 | [build] 3 | command = "make build-docs-netlify" 4 | publish = "site" 5 | [build.environment] 6 | PYTHON_VERSION = "3.12" 7 | GO_VERSION = "1.24.1" 8 | 9 | # Standard Netlify redirects 10 | [[redirects]] 11 | from = "https://main--kubernetes-sigs-gateway-api.netlify.com/*" 12 | to = "https://main.gateway-api.sigs.k8s.io/:splat" 13 | status = 301 14 | force = true 15 | 16 | # HTTP-to-HTTPS rules 17 | [[redirects]] 18 | from = "http://main.gateway-api.sigs.k8s.io/*" 19 | to = "https://main.gateway-api.sigs.k8s.io/:splat" 20 | status = 301 21 | force = true 22 | 23 | [[redirects]] 24 | from = "http://main--kubernetes-sigs-gateway-api.netlify.com/*" 25 | to = "http://main.gateway-api.sigs.k8s.io/:splat" 26 | status = 301 27 | force = true 28 | 29 | [[redirects]] 30 | from = "/geps/gep-1426" 31 | to = "/geps/gep-1294" 32 | status = 301 33 | force = true 34 | -------------------------------------------------------------------------------- /tools/README.md: -------------------------------------------------------------------------------- 1 | This directory contains the tools used on diverse CI pipelines, Makefile targets, etc. 2 | 3 | It is intended to be a separate directory with a separate go.mod to avoid adding 4 | dependencies to main Gateway API. 5 | 6 | ## Common workflows 7 | Any workflow here should be executed from the repo root directory. 8 | 9 | ### Adding a new tool: 10 | 11 | Adding a new tools means the tool will be added to the specific `go.mod` file. 12 | It is highly recommended that a version is used/pinned, the example below will pick 13 | the latest tagged version and add to the tools file. 14 | 15 | `go get -tool -modfile=tools/go.mod golang.org/x/vuln/cmd/govulncheck@latest` 16 | 17 | ### Executing a tool: 18 | Executing a tool means the same tool pinned on the `go.mod` file will be 19 | built and cached on `$XDG_CONFIG/.cache/go-build` the first time it is called, and 20 | then the binary will be executed normally. 21 | 22 | `go tool -modfile=tools/go.mod govulncheck` -------------------------------------------------------------------------------- /.github/workflows/kal.yml: -------------------------------------------------------------------------------- 1 | name: PR golangci-lint 2 | 3 | on: 4 | pull_request: 5 | types: [opened, edited, synchronize, reopened] 6 | 7 | # Remove all permissions from GITHUB_TOKEN except metadata. 8 | permissions: {} 9 | 10 | jobs: 11 | golangci: 12 | name: kube-api-lint 13 | runs-on: ubuntu-latest 14 | strategy: 15 | fail-fast: false 16 | steps: 17 | - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # tag=v6.0.1 18 | name: Checkout code 19 | with: 20 | persist-credentials: false 21 | - name: Set up Go 22 | uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # tag=v6.1.0 23 | - name: Install Golang CI Lint 24 | run: go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.7.0 25 | - name: Build KAL 26 | run: golangci-lint custom -v 27 | - name: run api linter 28 | run: ./bin/golangci-kube-api-linter run -c ./.golangci-kal.yml ./... 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | .\#* 3 | ._* 4 | \#*\# 5 | /_artifacts/ 6 | /bazel-* 7 | bin 8 | .classpath 9 | /cluster/env.sh 10 | /.config/gcloud*/ 11 | *.dll 12 | /doc_tmp/ 13 | !\.drone\.sec 14 | .DS_Store 15 | *.dylib 16 | .envrc 17 | *.exe 18 | *.exe~ 19 | /_gopath/ 20 | /.gsutil/ 21 | /hack/.test-cmd-auth 22 | **/.hg* 23 | .idea/ 24 | *.iml 25 | /junit*.xml 26 | /.make/ 27 | .netrwhist 28 | network_closure.sh 29 | *.out 30 | /_output*/ 31 | /output*/ 32 | .project 33 | *.pyc 34 | [._]*.s[a-w][a-z] 35 | [._]s[a-w][a-z] 36 | Session.vim 37 | .settings/** 38 | *.so 39 | *.swo 40 | *.swp 41 | .tags* 42 | *.test 43 | /third_party/pkg 44 | .*.timestamp 45 | /_tmp/ 46 | *.un~ 47 | .vagrant 48 | !vendor/**/zz_generated.* 49 | .vscode 50 | /www/test_out 51 | .*.timestamp 52 | /site 53 | go.work.sum 54 | /tmp 55 | /conformance.test 56 | 57 | /cache 58 | .venv/ 59 | release/ 60 | site-src/reference/spec.md 61 | site-src/reference/specx.md 62 | site-src/reference/**/spec.md 63 | site-src/reference/**/specx.md 64 | 65 | -------------------------------------------------------------------------------- /conformance/apis/v1/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // v1 includes GA maturity API types and utilities for creating and 18 | // handling the results of conformance test runs. These types are _only_ 19 | // intended for use by the conformance test suite OR external test suites that 20 | // are written in Golang and execute the conformance test suite as a Golang 21 | // library. 22 | 23 | package v1 24 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1/generated_expansion.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | package v1 20 | 21 | type BackendTLSPolicyExpansion interface{} 22 | 23 | type GRPCRouteExpansion interface{} 24 | 25 | type GatewayExpansion interface{} 26 | 27 | type GatewayClassExpansion interface{} 28 | 29 | type HTTPRouteExpansion interface{} 30 | -------------------------------------------------------------------------------- /hack/delete-crds.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2020 The Kubernetes Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | set -o errexit 18 | set -o nounset 19 | set -o pipefail 20 | 21 | # Delete all CR and CRDs installed by gateway-api. 22 | 23 | RESOURCES=$(kubectl api-resources --api-group=gateway.networking.k8s.io -o name) 24 | 25 | for TYPE in ${RESOURCES}; do 26 | kubectl delete ${TYPE} --all 27 | kubectl delete crd/${TYPE} 28 | done 29 | -------------------------------------------------------------------------------- /pkg/client/clientset/versioned/typed/apis/v1alpha2/generated_expansion.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright The Kubernetes Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // Code generated by client-gen. DO NOT EDIT. 18 | 19 | package v1alpha2 20 | 21 | type GRPCRouteExpansion interface{} 22 | 23 | type ReferenceGrantExpansion interface{} 24 | 25 | type TCPRouteExpansion interface{} 26 | 27 | type TLSRouteExpansion interface{} 28 | 29 | type UDPRouteExpansion interface{} 30 | -------------------------------------------------------------------------------- /hack/verify-codegen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2020 The Kubernetes Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | set -o errexit 18 | set -o nounset 19 | set -o pipefail 20 | 21 | SCRIPT_ROOT=$(dirname "${BASH_SOURCE}")/.. 22 | 23 | make -C "$SCRIPT_ROOT" generate 24 | 25 | if git status -s 2>&1 | grep -E -q '^\s+[MADRCU]' 26 | then 27 | echo Uncommitted changes in generated sources: 28 | git status -s 29 | git diff 30 | exit 1 31 | fi 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Report a bug encountered with the gateway-api project 4 | labels: kind/bug 5 | 6 | --- 7 | 23 | 24 | **What happened**: 25 | 26 | **What you expected to happen**: 27 | 28 | **How to reproduce it (as minimally and precisely as possible)**: 29 | 30 | **Anything else we need to know?**: 31 | -------------------------------------------------------------------------------- /conformance/reports/v1.0.0/azure-application-gateway-for-containers/README.md: -------------------------------------------------------------------------------- 1 | # Azure Application Gateway for Containers 2 | 3 | [Application Gateway for Containers][azure-application-gateway-for-containers] is a managed application (layer 7) load balancing solution, providing dynamic traffic management capabilities for workloads running in a Kubernetes cluster in Azure. Follow the [quickstart guide][azure-application-gateway-for-containers-quickstart-controller] to deploy the ALB controller and get started with Gateway API. 4 | 5 | ## Table of Contents 6 | 7 | |API channel|Implementation version|Mode|Report| 8 | |-----------|----------------------|----|------| 9 | |x|[v1.0.0](https://learn.microsoft.com/azure/application-gateway/for-containers/alb-controller-release-notes#latest-release-recommended)|x|[link](./v1.0.0-report.yaml)| 10 | 11 | 12 | [azure-application-gateway-for-containers]:https://aka.ms/appgwcontainers/docs 13 | [azure-application-gateway-for-containers-quickstart-controller]:https://aka.ms/appgwcontainers/docs 14 | --------------------------------------------------------------------------------