From 8edcd41363581781e92a3426db1f9f5d94b3178c Mon Sep 17 00:00:00 2001 From: bitliu Date: Sun, 8 Oct 2023 19:56:08 +0800 Subject: [PATCH] :art: Refactor: docs Signed-off-by: bitliu --- site/README.md | 154 ------------ site/content/en/_index.md | 16 +- site/content/en/about/featured-background.jpg | Bin 400690 -> 0 bytes site/content/en/about/index.md | 25 -- site/content/en/blog/_index.md | 1 - .../en/blog/compatibility/matrix/matrix.md | 2 +- site/content/en/community/_index.md | 18 -- site/content/en/docs/_index.md | 3 - site/content/en/docs/latest/helm/_index.md | 4 - site/content/en/docs/v0.5.0/_index.md | 9 - site/content/en/docs/v0.5.0/helm/_index.md | 4 - .../en/{docs/v0.4.0 => latest}/_index.md | 12 +- .../en/{docs => }/latest/api/_index.md | 1 + .../{docs => }/latest/api/extension_types.md | 0 .../contributions}/CODEOWNERS.md | 0 .../contributions}/CODE_OF_CONDUCT.md | 0 .../contributions}/CONTRIBUTING.md | 0 .../contributions}/DEVELOP.md | 0 .../contributions}/DOCS.md | 0 .../contributions}/RELEASING.md | 0 .../contributions}/_index.md | 2 +- .../en/{docs => }/latest/design/_index.md | 0 .../en/{docs => }/latest/design/accesslog.md | 0 .../en/{docs => }/latest/design/bootstrap.md | 0 .../latest/design/client-traffic-policy.md | 0 .../en/{docs => }/latest/design/config-api.md | 0 .../en/{docs => }/latest/design/egctl.md | 0 .../latest/design/envoy-patch-policy.md | 0 .../latest/design/extending-envoy-gateway.md | 0 .../latest/design/gatewayapi-translator.md | 0 .../design/goals.md} | 0 .../latest/design/local-envoy-gateway.md | 0 .../en/{docs => }/latest/design/metrics.md | 0 .../en/{docs => }/latest/design/pprof.md | 0 .../en/{docs => }/latest/design/rate-limit.md | 0 .../latest/design/request-authentication.md | 0 .../en/{docs => }/latest/design/roadmap.md | 0 .../{docs => }/latest/design/system-design.md | 0 .../latest/design/tcp-udp-design.md | 0 .../en/{docs => }/latest/design/tracing.md | 0 .../en/{docs => }/latest/design/watching.md | 0 site/content/en/latest/helm/_index.md | 5 + site/content/en/{docs => }/latest/helm/api.md | 2 +- .../{docs => }/latest/images/architecture.png | Bin .../latest/images/extension-example.png | Bin .../en/{docs => }/latest/user/_index.md | 0 .../en/{docs => }/latest/user/authn.md | 0 .../latest/user/customize-envoyproxy.md | 0 .../{docs => }/latest/user/deployment-mode.md | 0 .../en/{docs => }/latest/user/egctl.md | 0 .../latest/user/envoy-patch-policy.md | 0 .../{docs => }/latest/user/gateway-address.md | 0 .../latest/user/gateway-api-metrics.md | 0 .../latest/user/gatewayapi-support.md | 0 .../en/{docs => }/latest/user/grpc-routing.md | 0 .../{docs => }/latest/user/http-redirect.md | 0 .../latest/user/http-request-headers.md | 0 .../latest/user/http-request-mirroring.md | 0 .../latest/user/http-response-headers.md | 0 .../en/{docs => }/latest/user/http-routing.md | 0 .../latest/user/http-traffic-splitting.md | 0 .../{docs => }/latest/user/http-urlrewrite.md | 0 .../en/{docs => }/latest/user/installation.md | 0 .../latest/user/multicluster-service.md | 0 .../latest/user/proxy-observability.md | 0 .../en/{docs => }/latest/user/quickstart.md | 0 .../en/{docs => }/latest/user/rate-limit.md | 0 .../{docs => }/latest/user/secure-gateways.md | 0 .../en/{docs => }/latest/user/tcp-routing.md | 0 .../latest/user/tls-cert-manager.md | 0 .../{docs => }/latest/user/tls-passthrough.md | 0 .../{docs => }/latest/user/tls-termination.md | 0 .../en/{docs => }/latest/user/udp-routing.md | 0 site/content/en/{docs => }/v0.2.0/_index.md | 12 +- .../en/v0.2.0/contributions/CODEOWNERS.md | 18 ++ .../v0.2.0/contributions/CODE_OF_CONDUCT.md | 5 + .../en/v0.2.0/contributions/CONTRIBUTING.md | 189 ++++++++++++++ .../en/v0.2.0/contributions/DEVELOP.md | 162 ++++++++++++ site/content/en/v0.2.0/contributions/DOCS.md | 65 +++++ .../en/v0.2.0/contributions/RELEASING.md | 230 ++++++++++++++++++ .../content/en/v0.2.0/contributions/_index.md | 5 + .../en/{docs => }/v0.2.0/design/_index.md | 0 .../en/{docs => }/v0.2.0/design/config-api.md | 0 .../v0.2.0/design/gatewayapi-translator.md | 0 .../en/{GOALS.md => v0.2.0/design/goals.md} | 11 +- .../en/{docs => }/v0.2.0/design/roadmap.md | 0 .../{docs => }/v0.2.0/design/system-design.md | 0 .../en/{docs => }/v0.2.0/design/watching.md | 0 .../{docs => }/v0.2.0/images/architecture.png | Bin .../en/{docs => }/v0.2.0/user/_index.md | 0 .../{docs => }/v0.2.0/user/http-redirect.md | 0 .../v0.2.0/user/http-request-headers.md | 0 .../en/{docs => }/v0.2.0/user/http-routing.md | 0 .../v0.2.0/user/http-traffic-splitting.md | 0 .../en/{docs => }/v0.2.0/user/quickstart.md | 0 .../{docs => }/v0.2.0/user/secure-gateways.md | 0 .../{docs => }/v0.2.0/user/tls-passthrough.md | 0 site/content/en/{docs => }/v0.3.0/_index.md | 12 +- .../en/{docs/v0.5.0 => v0.3.0}/api/_index.md | 1 + .../en/{docs => }/v0.3.0/api/config_types.md | 0 .../{docs => }/v0.3.0/api/extension_types.md | 0 .../en/v0.3.0/contributions/CODEOWNERS.md | 18 ++ .../v0.3.0/contributions/CODE_OF_CONDUCT.md | 5 + .../en/v0.3.0/contributions/CONTRIBUTING.md | 189 ++++++++++++++ .../en/v0.3.0/contributions/DEVELOP.md | 162 ++++++++++++ site/content/en/v0.3.0/contributions/DOCS.md | 65 +++++ .../en/v0.3.0/contributions/RELEASING.md | 230 ++++++++++++++++++ .../content/en/v0.3.0/contributions/_index.md | 5 + .../en/{docs => }/v0.3.0/design/_index.md | 0 .../en/{docs => }/v0.3.0/design/config-api.md | 0 .../en/{docs => }/v0.3.0/design/egctl.md | 0 .../v0.3.0/design/gatewayapi-support.md | 0 .../v0.3.0/design/gatewayapi-translator.md | 0 site/content/en/v0.3.0/design/goals.md | 91 +++++++ .../en/{docs => }/v0.3.0/design/ratelimit.md | 0 .../v0.3.0/design/request-authentication.md | 0 .../en/{docs => }/v0.3.0/design/roadmap.md | 0 .../{docs => }/v0.3.0/design/system-design.md | 0 .../v0.3.0/design/tcp-udp-design.md | 0 .../en/{docs => }/v0.3.0/design/watching.md | 0 .../{docs => }/v0.3.0/images/architecture.png | Bin .../en/{docs => }/v0.3.0/user/_index.md | 0 .../en/{docs => }/v0.3.0/user/authn.md | 0 .../en/{docs => }/v0.3.0/user/grpc-routing.md | 0 .../{docs => }/v0.3.0/user/http-redirect.md | 0 .../v0.3.0/user/http-request-headers.md | 0 .../v0.3.0/user/http-response-headers.md | 0 .../en/{docs => }/v0.3.0/user/http-routing.md | 0 .../v0.3.0/user/http-traffic-splitting.md | 0 .../{docs => }/v0.3.0/user/http-urlrewrite.md | 0 .../en/{docs => }/v0.3.0/user/quickstart.md | 0 .../en/{docs => }/v0.3.0/user/rate-limit.md | 0 .../{docs => }/v0.3.0/user/secure-gateways.md | 0 .../en/{docs => }/v0.3.0/user/tcp-routing.md | 0 .../{docs => }/v0.3.0/user/tls-passthrough.md | 0 .../en/{docs => }/v0.3.0/user/udp-routing.md | 0 .../en/{docs/latest => v0.4.0}/_index.md | 13 +- .../en/{docs => }/v0.4.0/api/_index.md | 1 + .../en/{docs => }/v0.4.0/api/config_types.md | 0 .../{docs => }/v0.4.0/api/extension_types.md | 0 .../en/v0.4.0/contributions/CODEOWNERS.md | 18 ++ .../v0.4.0/contributions/CODE_OF_CONDUCT.md | 5 + .../en/v0.4.0/contributions/CONTRIBUTING.md | 189 ++++++++++++++ .../en/v0.4.0/contributions/DEVELOP.md | 162 ++++++++++++ site/content/en/v0.4.0/contributions/DOCS.md | 65 +++++ .../en/v0.4.0/contributions/RELEASING.md | 230 ++++++++++++++++++ .../content/en/v0.4.0/contributions/_index.md | 5 + .../en/{docs => }/v0.4.0/design/_index.md | 0 .../en/{docs => }/v0.4.0/design/bootstrap.md | 0 .../en/{docs => }/v0.4.0/design/config-api.md | 0 .../en/{docs => }/v0.4.0/design/egctl.md | 0 .../v0.4.0/design/extending-envoy-gateway.md | 0 .../v0.4.0/design/gatewayapi-translator.md | 0 site/content/en/v0.4.0/design/goals.md | 91 +++++++ .../en/{docs => }/v0.4.0/design/rate-limit.md | 0 .../v0.4.0/design/request-authentication.md | 0 .../en/{docs => }/v0.4.0/design/roadmap.md | 0 .../{docs => }/v0.4.0/design/system-design.md | 0 .../v0.4.0/design/tcp-udp-design.md | 0 .../en/{docs => }/v0.4.0/design/watching.md | 0 .../{docs => }/v0.4.0/images/architecture.png | Bin .../v0.4.0/images/extension-example.png | Bin .../en/{docs => }/v0.4.0/user/_index.md | 0 .../en/{docs => }/v0.4.0/user/authn.md | 0 .../v0.4.0/user/customize-envoyproxy.md | 0 .../{docs => }/v0.4.0/user/deployment-mode.md | 0 .../en/{docs => }/v0.4.0/user/egctl.md | 0 .../v0.4.0/user/gatewayapi-support.md | 0 .../en/{docs => }/v0.4.0/user/grpc-routing.md | 0 .../{docs => }/v0.4.0/user/http-redirect.md | 0 .../v0.4.0/user/http-request-headers.md | 0 .../v0.4.0/user/http-response-headers.md | 0 .../en/{docs => }/v0.4.0/user/http-routing.md | 0 .../v0.4.0/user/http-traffic-splitting.md | 0 .../{docs => }/v0.4.0/user/http-urlrewrite.md | 0 .../en/{docs => }/v0.4.0/user/quickstart.md | 0 .../en/{docs => }/v0.4.0/user/rate-limit.md | 0 .../{docs => }/v0.4.0/user/secure-gateways.md | 0 .../en/{docs => }/v0.4.0/user/tcp-routing.md | 0 .../{docs => }/v0.4.0/user/tls-passthrough.md | 0 .../en/{docs => }/v0.4.0/user/udp-routing.md | 0 site/content/en/v0.5.0/_index.md | 10 + .../en/{docs/v0.3.0 => v0.5.0}/api/_index.md | 1 + .../en/{docs => }/v0.5.0/api/config_types.md | 0 .../{docs => }/v0.5.0/api/extension_types.md | 0 .../en/v0.5.0/contributions/CODEOWNERS.md | 18 ++ .../v0.5.0/contributions/CODE_OF_CONDUCT.md | 5 + .../en/v0.5.0/contributions/CONTRIBUTING.md | 189 ++++++++++++++ .../en/v0.5.0/contributions/DEVELOP.md | 162 ++++++++++++ site/content/en/v0.5.0/contributions/DOCS.md | 65 +++++ .../en/v0.5.0/contributions/RELEASING.md | 230 ++++++++++++++++++ .../content/en/v0.5.0/contributions/_index.md | 5 + .../en/{docs => }/v0.5.0/design/_index.md | 0 .../en/{docs => }/v0.5.0/design/accesslog.md | 0 .../en/{docs => }/v0.5.0/design/bootstrap.md | 0 .../en/{docs => }/v0.5.0/design/config-api.md | 0 .../en/{docs => }/v0.5.0/design/egctl.md | 0 .../v0.5.0/design/envoy-patch-policy.md | 0 .../v0.5.0/design/extending-envoy-gateway.md | 0 .../v0.5.0/design/gatewayapi-translator.md | 0 site/content/en/v0.5.0/design/goals.md | 91 +++++++ .../v0.5.0/design/local-envoy-gateway.md | 0 .../en/{docs => }/v0.5.0/design/metrics.md | 0 .../en/{docs => }/v0.5.0/design/pprof.md | 0 .../en/{docs => }/v0.5.0/design/rate-limit.md | 0 .../v0.5.0/design/request-authentication.md | 0 .../en/{docs => }/v0.5.0/design/roadmap.md | 0 .../{docs => }/v0.5.0/design/system-design.md | 0 .../v0.5.0/design/tcp-udp-design.md | 0 .../en/{docs => }/v0.5.0/design/tracing.md | 0 .../en/{docs => }/v0.5.0/design/watching.md | 0 site/content/en/v0.5.0/helm/_index.md | 5 + site/content/en/{docs => }/v0.5.0/helm/api.md | 2 +- .../{docs => }/v0.5.0/images/architecture.png | Bin .../v0.5.0/images/extension-example.png | Bin .../en/{docs => }/v0.5.0/user/_index.md | 0 .../en/{docs => }/v0.5.0/user/authn.md | 0 .../v0.5.0/user/customize-envoyproxy.md | 0 .../{docs => }/v0.5.0/user/deployment-mode.md | 0 .../en/{docs => }/v0.5.0/user/egctl.md | 0 .../v0.5.0/user/envoy-patch-policy.md | 0 .../{docs => }/v0.5.0/user/gateway-address.md | 0 .../v0.5.0/user/gatewayapi-support.md | 0 .../en/{docs => }/v0.5.0/user/grpc-routing.md | 0 .../{docs => }/v0.5.0/user/http-redirect.md | 0 .../v0.5.0/user/http-request-headers.md | 0 .../v0.5.0/user/http-request-mirroring.md | 0 .../v0.5.0/user/http-response-headers.md | 0 .../en/{docs => }/v0.5.0/user/http-routing.md | 0 .../v0.5.0/user/http-traffic-splitting.md | 0 .../{docs => }/v0.5.0/user/http-urlrewrite.md | 0 .../en/{docs => }/v0.5.0/user/installation.md | 0 .../v0.5.0/user/proxy-observability.md | 0 .../en/{docs => }/v0.5.0/user/quickstart.md | 0 .../en/{docs => }/v0.5.0/user/rate-limit.md | 0 .../{docs => }/v0.5.0/user/secure-gateways.md | 0 .../en/{docs => }/v0.5.0/user/tcp-routing.md | 0 .../v0.5.0/user/tls-cert-manager.md | 0 .../{docs => }/v0.5.0/user/tls-passthrough.md | 0 .../{docs => }/v0.5.0/user/tls-termination.md | 0 .../en/{docs => }/v0.5.0/user/udp-routing.md | 0 site/hugo.toml | 32 ++- 242 files changed, 3069 insertions(+), 258 deletions(-) delete mode 100644 site/README.md delete mode 100644 site/content/en/about/featured-background.jpg delete mode 100644 site/content/en/about/index.md delete mode 100644 site/content/en/community/_index.md delete mode 100644 site/content/en/docs/_index.md delete mode 100644 site/content/en/docs/latest/helm/_index.md delete mode 100644 site/content/en/docs/v0.5.0/_index.md delete mode 100644 site/content/en/docs/v0.5.0/helm/_index.md rename site/content/en/{docs/v0.4.0 => latest}/_index.md (67%) rename site/content/en/{docs => }/latest/api/_index.md (87%) rename site/content/en/{docs => }/latest/api/extension_types.md (100%) rename site/content/en/{docs/contribution-guidelines => latest/contributions}/CODEOWNERS.md (100%) rename site/content/en/{docs/contribution-guidelines => latest/contributions}/CODE_OF_CONDUCT.md (100%) rename site/content/en/{docs/contribution-guidelines => latest/contributions}/CONTRIBUTING.md (100%) rename site/content/en/{docs/contribution-guidelines => latest/contributions}/DEVELOP.md (100%) rename site/content/en/{docs/contribution-guidelines => latest/contributions}/DOCS.md (100%) rename site/content/en/{docs/contribution-guidelines => latest/contributions}/RELEASING.md (100%) rename site/content/en/{docs/contribution-guidelines => latest/contributions}/_index.md (79%) rename site/content/en/{docs => }/latest/design/_index.md (100%) rename site/content/en/{docs => }/latest/design/accesslog.md (100%) rename site/content/en/{docs => }/latest/design/bootstrap.md (100%) rename site/content/en/{docs => }/latest/design/client-traffic-policy.md (100%) rename site/content/en/{docs => }/latest/design/config-api.md (100%) rename site/content/en/{docs => }/latest/design/egctl.md (100%) rename site/content/en/{docs => }/latest/design/envoy-patch-policy.md (100%) rename site/content/en/{docs => }/latest/design/extending-envoy-gateway.md (100%) rename site/content/en/{docs => }/latest/design/gatewayapi-translator.md (100%) rename site/content/en/{docs/contribution-guidelines/INITIAL_GOALS.md => latest/design/goals.md} (100%) rename site/content/en/{docs => }/latest/design/local-envoy-gateway.md (100%) rename site/content/en/{docs => }/latest/design/metrics.md (100%) rename site/content/en/{docs => }/latest/design/pprof.md (100%) rename site/content/en/{docs => }/latest/design/rate-limit.md (100%) rename site/content/en/{docs => }/latest/design/request-authentication.md (100%) rename site/content/en/{docs => }/latest/design/roadmap.md (100%) rename site/content/en/{docs => }/latest/design/system-design.md (100%) rename site/content/en/{docs => }/latest/design/tcp-udp-design.md (100%) rename site/content/en/{docs => }/latest/design/tracing.md (100%) rename site/content/en/{docs => }/latest/design/watching.md (100%) create mode 100644 site/content/en/latest/helm/_index.md rename site/content/en/{docs => }/latest/helm/api.md (99%) rename site/content/en/{docs => }/latest/images/architecture.png (100%) rename site/content/en/{docs => }/latest/images/extension-example.png (100%) rename site/content/en/{docs => }/latest/user/_index.md (100%) rename site/content/en/{docs => }/latest/user/authn.md (100%) rename site/content/en/{docs => }/latest/user/customize-envoyproxy.md (100%) rename site/content/en/{docs => }/latest/user/deployment-mode.md (100%) rename site/content/en/{docs => }/latest/user/egctl.md (100%) rename site/content/en/{docs => }/latest/user/envoy-patch-policy.md (100%) rename site/content/en/{docs => }/latest/user/gateway-address.md (100%) rename site/content/en/{docs => }/latest/user/gateway-api-metrics.md (100%) rename site/content/en/{docs => }/latest/user/gatewayapi-support.md (100%) rename site/content/en/{docs => }/latest/user/grpc-routing.md (100%) rename site/content/en/{docs => }/latest/user/http-redirect.md (100%) rename site/content/en/{docs => }/latest/user/http-request-headers.md (100%) rename site/content/en/{docs => }/latest/user/http-request-mirroring.md (100%) rename site/content/en/{docs => }/latest/user/http-response-headers.md (100%) rename site/content/en/{docs => }/latest/user/http-routing.md (100%) rename site/content/en/{docs => }/latest/user/http-traffic-splitting.md (100%) rename site/content/en/{docs => }/latest/user/http-urlrewrite.md (100%) rename site/content/en/{docs => }/latest/user/installation.md (100%) rename site/content/en/{docs => }/latest/user/multicluster-service.md (100%) rename site/content/en/{docs => }/latest/user/proxy-observability.md (100%) rename site/content/en/{docs => }/latest/user/quickstart.md (100%) rename site/content/en/{docs => }/latest/user/rate-limit.md (100%) rename site/content/en/{docs => }/latest/user/secure-gateways.md (100%) rename site/content/en/{docs => }/latest/user/tcp-routing.md (100%) rename site/content/en/{docs => }/latest/user/tls-cert-manager.md (100%) rename site/content/en/{docs => }/latest/user/tls-passthrough.md (100%) rename site/content/en/{docs => }/latest/user/tls-termination.md (100%) rename site/content/en/{docs => }/latest/user/udp-routing.md (100%) rename site/content/en/{docs => }/v0.2.0/_index.md (67%) create mode 100644 site/content/en/v0.2.0/contributions/CODEOWNERS.md create mode 100644 site/content/en/v0.2.0/contributions/CODE_OF_CONDUCT.md create mode 100644 site/content/en/v0.2.0/contributions/CONTRIBUTING.md create mode 100644 site/content/en/v0.2.0/contributions/DEVELOP.md create mode 100644 site/content/en/v0.2.0/contributions/DOCS.md create mode 100644 site/content/en/v0.2.0/contributions/RELEASING.md create mode 100644 site/content/en/v0.2.0/contributions/_index.md rename site/content/en/{docs => }/v0.2.0/design/_index.md (100%) rename site/content/en/{docs => }/v0.2.0/design/config-api.md (100%) rename site/content/en/{docs => }/v0.2.0/design/gatewayapi-translator.md (100%) rename site/content/en/{GOALS.md => v0.2.0/design/goals.md} (99%) rename site/content/en/{docs => }/v0.2.0/design/roadmap.md (100%) rename site/content/en/{docs => }/v0.2.0/design/system-design.md (100%) rename site/content/en/{docs => }/v0.2.0/design/watching.md (100%) rename site/content/en/{docs => }/v0.2.0/images/architecture.png (100%) rename site/content/en/{docs => }/v0.2.0/user/_index.md (100%) rename site/content/en/{docs => }/v0.2.0/user/http-redirect.md (100%) rename site/content/en/{docs => }/v0.2.0/user/http-request-headers.md (100%) rename site/content/en/{docs => }/v0.2.0/user/http-routing.md (100%) rename site/content/en/{docs => }/v0.2.0/user/http-traffic-splitting.md (100%) rename site/content/en/{docs => }/v0.2.0/user/quickstart.md (100%) rename site/content/en/{docs => }/v0.2.0/user/secure-gateways.md (100%) rename site/content/en/{docs => }/v0.2.0/user/tls-passthrough.md (100%) rename site/content/en/{docs => }/v0.3.0/_index.md (67%) rename site/content/en/{docs/v0.5.0 => v0.3.0}/api/_index.md (87%) rename site/content/en/{docs => }/v0.3.0/api/config_types.md (100%) rename site/content/en/{docs => }/v0.3.0/api/extension_types.md (100%) create mode 100644 site/content/en/v0.3.0/contributions/CODEOWNERS.md create mode 100644 site/content/en/v0.3.0/contributions/CODE_OF_CONDUCT.md create mode 100644 site/content/en/v0.3.0/contributions/CONTRIBUTING.md create mode 100644 site/content/en/v0.3.0/contributions/DEVELOP.md create mode 100644 site/content/en/v0.3.0/contributions/DOCS.md create mode 100644 site/content/en/v0.3.0/contributions/RELEASING.md create mode 100644 site/content/en/v0.3.0/contributions/_index.md rename site/content/en/{docs => }/v0.3.0/design/_index.md (100%) rename site/content/en/{docs => }/v0.3.0/design/config-api.md (100%) rename site/content/en/{docs => }/v0.3.0/design/egctl.md (100%) rename site/content/en/{docs => }/v0.3.0/design/gatewayapi-support.md (100%) rename site/content/en/{docs => }/v0.3.0/design/gatewayapi-translator.md (100%) create mode 100644 site/content/en/v0.3.0/design/goals.md rename site/content/en/{docs => }/v0.3.0/design/ratelimit.md (100%) rename site/content/en/{docs => }/v0.3.0/design/request-authentication.md (100%) rename site/content/en/{docs => }/v0.3.0/design/roadmap.md (100%) rename site/content/en/{docs => }/v0.3.0/design/system-design.md (100%) rename site/content/en/{docs => }/v0.3.0/design/tcp-udp-design.md (100%) rename site/content/en/{docs => }/v0.3.0/design/watching.md (100%) rename site/content/en/{docs => }/v0.3.0/images/architecture.png (100%) rename site/content/en/{docs => }/v0.3.0/user/_index.md (100%) rename site/content/en/{docs => }/v0.3.0/user/authn.md (100%) rename site/content/en/{docs => }/v0.3.0/user/grpc-routing.md (100%) rename site/content/en/{docs => }/v0.3.0/user/http-redirect.md (100%) rename site/content/en/{docs => }/v0.3.0/user/http-request-headers.md (100%) rename site/content/en/{docs => }/v0.3.0/user/http-response-headers.md (100%) rename site/content/en/{docs => }/v0.3.0/user/http-routing.md (100%) rename site/content/en/{docs => }/v0.3.0/user/http-traffic-splitting.md (100%) rename site/content/en/{docs => }/v0.3.0/user/http-urlrewrite.md (100%) rename site/content/en/{docs => }/v0.3.0/user/quickstart.md (100%) rename site/content/en/{docs => }/v0.3.0/user/rate-limit.md (100%) rename site/content/en/{docs => }/v0.3.0/user/secure-gateways.md (100%) rename site/content/en/{docs => }/v0.3.0/user/tcp-routing.md (100%) rename site/content/en/{docs => }/v0.3.0/user/tls-passthrough.md (100%) rename site/content/en/{docs => }/v0.3.0/user/udp-routing.md (100%) rename site/content/en/{docs/latest => v0.4.0}/_index.md (66%) rename site/content/en/{docs => }/v0.4.0/api/_index.md (87%) rename site/content/en/{docs => }/v0.4.0/api/config_types.md (100%) rename site/content/en/{docs => }/v0.4.0/api/extension_types.md (100%) create mode 100644 site/content/en/v0.4.0/contributions/CODEOWNERS.md create mode 100644 site/content/en/v0.4.0/contributions/CODE_OF_CONDUCT.md create mode 100644 site/content/en/v0.4.0/contributions/CONTRIBUTING.md create mode 100644 site/content/en/v0.4.0/contributions/DEVELOP.md create mode 100644 site/content/en/v0.4.0/contributions/DOCS.md create mode 100644 site/content/en/v0.4.0/contributions/RELEASING.md create mode 100644 site/content/en/v0.4.0/contributions/_index.md rename site/content/en/{docs => }/v0.4.0/design/_index.md (100%) rename site/content/en/{docs => }/v0.4.0/design/bootstrap.md (100%) rename site/content/en/{docs => }/v0.4.0/design/config-api.md (100%) rename site/content/en/{docs => }/v0.4.0/design/egctl.md (100%) rename site/content/en/{docs => }/v0.4.0/design/extending-envoy-gateway.md (100%) rename site/content/en/{docs => }/v0.4.0/design/gatewayapi-translator.md (100%) create mode 100644 site/content/en/v0.4.0/design/goals.md rename site/content/en/{docs => }/v0.4.0/design/rate-limit.md (100%) rename site/content/en/{docs => }/v0.4.0/design/request-authentication.md (100%) rename site/content/en/{docs => }/v0.4.0/design/roadmap.md (100%) rename site/content/en/{docs => }/v0.4.0/design/system-design.md (100%) rename site/content/en/{docs => }/v0.4.0/design/tcp-udp-design.md (100%) rename site/content/en/{docs => }/v0.4.0/design/watching.md (100%) rename site/content/en/{docs => }/v0.4.0/images/architecture.png (100%) rename site/content/en/{docs => }/v0.4.0/images/extension-example.png (100%) rename site/content/en/{docs => }/v0.4.0/user/_index.md (100%) rename site/content/en/{docs => }/v0.4.0/user/authn.md (100%) rename site/content/en/{docs => }/v0.4.0/user/customize-envoyproxy.md (100%) rename site/content/en/{docs => }/v0.4.0/user/deployment-mode.md (100%) rename site/content/en/{docs => }/v0.4.0/user/egctl.md (100%) rename site/content/en/{docs => }/v0.4.0/user/gatewayapi-support.md (100%) rename site/content/en/{docs => }/v0.4.0/user/grpc-routing.md (100%) rename site/content/en/{docs => }/v0.4.0/user/http-redirect.md (100%) rename site/content/en/{docs => }/v0.4.0/user/http-request-headers.md (100%) rename site/content/en/{docs => }/v0.4.0/user/http-response-headers.md (100%) rename site/content/en/{docs => }/v0.4.0/user/http-routing.md (100%) rename site/content/en/{docs => }/v0.4.0/user/http-traffic-splitting.md (100%) rename site/content/en/{docs => }/v0.4.0/user/http-urlrewrite.md (100%) rename site/content/en/{docs => }/v0.4.0/user/quickstart.md (100%) rename site/content/en/{docs => }/v0.4.0/user/rate-limit.md (100%) rename site/content/en/{docs => }/v0.4.0/user/secure-gateways.md (100%) rename site/content/en/{docs => }/v0.4.0/user/tcp-routing.md (100%) rename site/content/en/{docs => }/v0.4.0/user/tls-passthrough.md (100%) rename site/content/en/{docs => }/v0.4.0/user/udp-routing.md (100%) create mode 100644 site/content/en/v0.5.0/_index.md rename site/content/en/{docs/v0.3.0 => v0.5.0}/api/_index.md (87%) rename site/content/en/{docs => }/v0.5.0/api/config_types.md (100%) rename site/content/en/{docs => }/v0.5.0/api/extension_types.md (100%) create mode 100644 site/content/en/v0.5.0/contributions/CODEOWNERS.md create mode 100644 site/content/en/v0.5.0/contributions/CODE_OF_CONDUCT.md create mode 100644 site/content/en/v0.5.0/contributions/CONTRIBUTING.md create mode 100644 site/content/en/v0.5.0/contributions/DEVELOP.md create mode 100644 site/content/en/v0.5.0/contributions/DOCS.md create mode 100644 site/content/en/v0.5.0/contributions/RELEASING.md create mode 100644 site/content/en/v0.5.0/contributions/_index.md rename site/content/en/{docs => }/v0.5.0/design/_index.md (100%) rename site/content/en/{docs => }/v0.5.0/design/accesslog.md (100%) rename site/content/en/{docs => }/v0.5.0/design/bootstrap.md (100%) rename site/content/en/{docs => }/v0.5.0/design/config-api.md (100%) rename site/content/en/{docs => }/v0.5.0/design/egctl.md (100%) rename site/content/en/{docs => }/v0.5.0/design/envoy-patch-policy.md (100%) rename site/content/en/{docs => }/v0.5.0/design/extending-envoy-gateway.md (100%) rename site/content/en/{docs => }/v0.5.0/design/gatewayapi-translator.md (100%) create mode 100644 site/content/en/v0.5.0/design/goals.md rename site/content/en/{docs => }/v0.5.0/design/local-envoy-gateway.md (100%) rename site/content/en/{docs => }/v0.5.0/design/metrics.md (100%) rename site/content/en/{docs => }/v0.5.0/design/pprof.md (100%) rename site/content/en/{docs => }/v0.5.0/design/rate-limit.md (100%) rename site/content/en/{docs => }/v0.5.0/design/request-authentication.md (100%) rename site/content/en/{docs => }/v0.5.0/design/roadmap.md (100%) rename site/content/en/{docs => }/v0.5.0/design/system-design.md (100%) rename site/content/en/{docs => }/v0.5.0/design/tcp-udp-design.md (100%) rename site/content/en/{docs => }/v0.5.0/design/tracing.md (100%) rename site/content/en/{docs => }/v0.5.0/design/watching.md (100%) create mode 100644 site/content/en/v0.5.0/helm/_index.md rename site/content/en/{docs => }/v0.5.0/helm/api.md (99%) rename site/content/en/{docs => }/v0.5.0/images/architecture.png (100%) rename site/content/en/{docs => }/v0.5.0/images/extension-example.png (100%) rename site/content/en/{docs => }/v0.5.0/user/_index.md (100%) rename site/content/en/{docs => }/v0.5.0/user/authn.md (100%) rename site/content/en/{docs => }/v0.5.0/user/customize-envoyproxy.md (100%) rename site/content/en/{docs => }/v0.5.0/user/deployment-mode.md (100%) rename site/content/en/{docs => }/v0.5.0/user/egctl.md (100%) rename site/content/en/{docs => }/v0.5.0/user/envoy-patch-policy.md (100%) rename site/content/en/{docs => }/v0.5.0/user/gateway-address.md (100%) rename site/content/en/{docs => }/v0.5.0/user/gatewayapi-support.md (100%) rename site/content/en/{docs => }/v0.5.0/user/grpc-routing.md (100%) rename site/content/en/{docs => }/v0.5.0/user/http-redirect.md (100%) rename site/content/en/{docs => }/v0.5.0/user/http-request-headers.md (100%) rename site/content/en/{docs => }/v0.5.0/user/http-request-mirroring.md (100%) rename site/content/en/{docs => }/v0.5.0/user/http-response-headers.md (100%) rename site/content/en/{docs => }/v0.5.0/user/http-routing.md (100%) rename site/content/en/{docs => }/v0.5.0/user/http-traffic-splitting.md (100%) rename site/content/en/{docs => }/v0.5.0/user/http-urlrewrite.md (100%) rename site/content/en/{docs => }/v0.5.0/user/installation.md (100%) rename site/content/en/{docs => }/v0.5.0/user/proxy-observability.md (100%) rename site/content/en/{docs => }/v0.5.0/user/quickstart.md (100%) rename site/content/en/{docs => }/v0.5.0/user/rate-limit.md (100%) rename site/content/en/{docs => }/v0.5.0/user/secure-gateways.md (100%) rename site/content/en/{docs => }/v0.5.0/user/tcp-routing.md (100%) rename site/content/en/{docs => }/v0.5.0/user/tls-cert-manager.md (100%) rename site/content/en/{docs => }/v0.5.0/user/tls-passthrough.md (100%) rename site/content/en/{docs => }/v0.5.0/user/tls-termination.md (100%) rename site/content/en/{docs => }/v0.5.0/user/udp-routing.md (100%) diff --git a/site/README.md b/site/README.md deleted file mode 100644 index fac9f706d618..000000000000 --- a/site/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# Docsy Example - -[Docsy][] is a [Hugo theme module][] for technical documentation sites, providing easy -site navigation, structure, and more. This **Docsy Example Project** uses the Docsy -theme component as a hugo module and provides a skeleton documentation structure for you to use. -You can clone/copy this project and edit it with your own content, or use it as an example. - -In this project, the Docsy theme component is pulled in as a Hugo module, together with other module dependencies: - -```console -$ hugo mod graph -hugo: collected modules in 566 ms -hugo: collected modules in 578 ms -github.com/google/docsy-example github.com/google/docsy@v0.7.1 -github.com/google/docsy-example github.com/google/docsy/dependencies@v0.7.1 -github.com/google/docsy/dependencies@v0.7.1 github.com/twbs/bootstrap@v5.2.3+incompatible -github.com/google/docsy/dependencies@v0.7.1 github.com/FortAwesome/Font-Awesome@v0.0.0-20230327165841-0698449d50f2 -``` - -You can find detailed theme instructions in the [Docsy user guide][]. - -This Docsy Example Project is hosted on [Netlify][] at [example.docsy.dev][]. -You can view deploy logs from the [deploy section of the project's Netlify -dashboard][deploys], or this [alternate dashboard][]. - -This is not an officially supported Google product. This project is currently maintained. - -## Using the Docsy Example Project as a template - -A simple way to get started is to use this project as a template, which gives you a site project that is set up and ready to use. To do this: - -1. Use the dropdown for switching branches/tags to change to the latest released tag `v0.7.1` - -2. Click **Use this template**. - -3. Select a name for your new project and click **Create repository from template**. - -4. Make your own local working copy of your new repo using git clone, replacing https://github.com/me/example.git with your repo’s web URL: - -```bash -git clone --depth 1 https://github.com/me/example.git -``` - -You can now edit your own versions of the site’s source files. - -If you want to do SCSS edits and want to publish these, you need to install `PostCSS` - -```bash -npm install -``` - -## Running the website locally - -Building and running the site locally requires a recent `extended` version of [Hugo](https://gohugo.io). -You can find out more about how to install Hugo for your environment in our -[Getting started](https://www.docsy.dev/docs/getting-started/#prerequisites-and-installation) guide. - -Once you've made your working copy of the site repo, from the repo root folder, run: - -```bash -hugo server -``` - -## Running a container locally - -You can run docsy-example inside a [Docker](https://docs.docker.com/) -container, the container runs with a volume bound to the `docsy-example` -folder. This approach doesn't require you to install any dependencies other -than [Docker Desktop](https://www.docker.com/products/docker-desktop) on -Windows and Mac, and [Docker Compose](https://docs.docker.com/compose/install/) -on Linux. - -1. Build the docker image - - ```bash - docker-compose build - ``` - -1. Run the built image - - ```bash - docker-compose up - ``` - - > NOTE: You can run both commands at once with `docker-compose up --build`. - -1. Verify that the service is working. - - Open your web browser and type `http://localhost:1313` in your navigation bar, - This opens a local instance of the docsy-example homepage. You can now make - changes to the docsy example and those changes will immediately show up in your - browser after you save. - -### Cleanup - -To stop Docker Compose, on your terminal window, press **Ctrl + C**. - -To remove the produced images run: - -```bash -docker-compose rm -``` -For more information see the [Docker Compose documentation][]. - -## Troubleshooting - -As you run the website locally, you may run into the following error: - -```console -$ hugo server -WARN 2023/06/27 16:59:06 Module "project" is not compatible with this Hugo version; run "hugo mod graph" for more information. -Start building sites … -hugo v0.101.0-466fa43c16709b4483689930a4f9ac8add5c9f66+extended windows/amd64 BuildDate=2022-06-16T07:09:16Z VendorInfo=gohugoio -Error: Error building site: "C:\Users\foo\path\to\docsy-example\content\en\_index.md:5:1": failed to extract shortcode: template for shortcode "blocks/cover" not found -Built in 27 ms -``` - -This error occurs if you are running an outdated version of Hugo. As of docsy theme version `v0.7.0`, hugo version `0.110.0` or higher is required. -See this [section](https://www.docsy.dev/docs/get-started/docsy-as-module/installation-prerequisites/#install-hugo) of the user guide for instructions on how to install Hugo. - -Or you may be confronted with the following error: - -```console -$ hugo server - -INFO 2021/01/21 21:07:55 Using config file: -Building sites … INFO 2021/01/21 21:07:55 syncing static files to / -Built in 288 ms -Error: Error building site: TOCSS: failed to transform "scss/main.scss" (text/x-scss): resource "scss/scss/main.scss_9fadf33d895a46083cdd64396b57ef68" not found in file cache -``` - -This error occurs if you have not installed the extended version of Hugo. -See this [section](https://www.docsy.dev/docs/get-started/docsy-as-module/installation-prerequisites/#install-hugo) of the user guide for instructions on how to install Hugo. - -Or you may encounter the following error: - -```console -$ hugo server - -Error: failed to download modules: binary with name "go" not found -``` - -This error occurs if you have not installed the `go` programming language on your system. -See this [section](https://www.docsy.dev/docs/get-started/docsy-as-module/installation-prerequisites/#install-go-language) of the user guide for instructions on how to install `go`. - - -[alternate dashboard]: https://app.netlify.com/sites/goldydocs/deploys -[deploys]: https://app.netlify.com/sites/docsy-example/deploys -[Docsy user guide]: https://docsy.dev/docs -[Docsy]: https://github.com/google/docsy -[example.docsy.dev]: https://example.docsy.dev -[Hugo theme module]: https://gohugo.io/hugo-modules/use-modules/#use-a-module-for-a-theme -[Netlify]: https://netlify.com -[Docker Compose documentation]: https://docs.docker.com/compose/gettingstarted/ diff --git a/site/content/en/_index.md b/site/content/en/_index.md index 5921d1d97ff4..f4718c71a5b1 100644 --- a/site/content/en/_index.md +++ b/site/content/en/_index.md @@ -3,28 +3,30 @@ title: Envoy Gateway --- {{< blocks/cover title="Welcome to Envoy Gateway!" image_anchor="top" height="full" >}} - - Learn More + + Get Started - Download + Contributing

Manages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway

{{< blocks/link-down color="info" >}} {{< /blocks/cover >}} {{% blocks/lead color="black" %}} -Envoy Gateway is an open source project for managing Envoy Proxy as a Standalone or Kubernetes-based Application Gateway. +Manage **Envoy Proxy** as a **Standalone** or **Kubernetes-based** Application Gateway. -Gateway API resources are used to dynamically provision and configure the managed Envoy Proxies. +**Gateway API** are used to **dynamically** provision and configure the managed Envoy Proxies. {{% /blocks/lead %}} -{{% blocks/lead %}} +{{% blocks/lead color="pink" %}} Lower barriers to adoption through **Expressive, Extensible, Role-oriented APIs** Support a multitude of **ingress** and **L7/L4** traffic routing -Common foundation for vendors to build **value-added** products without having to **re-engineer** +Common foundation for vendors to build **value-added** products + +Without having to **re-engineer** fundamental interactions. {{% /blocks/lead %}} diff --git a/site/content/en/about/featured-background.jpg b/site/content/en/about/featured-background.jpg deleted file mode 100644 index b1f8c56bc2993ff7b68a848d0fc6024fae6c8ade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400690 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

#Z@rNH8(wtt1Kmz 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 diff --git a/site/content/en/about/index.md b/site/content/en/about/index.md deleted file mode 100644 index b363cdfd0256..000000000000 --- a/site/content/en/about/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: About Envoy Gateway -linkTitle: About -menu: {main: {weight: 10}} ---- - -{{% blocks/cover title="About Envoy Gateway" image_anchor="bottom" height="auto" %}} - -{{% /blocks/cover %}} - -{{% blocks/lead %}} - -Envoy Gateway is an open source project for managing **Envoy Proxy** as a standalone or Kubernetes-based application -gateway. **Gateway API** resources are used to dynamically provision and configure the managed Envoy Proxies. - -{{% /blocks/lead %}} - -{{% blocks/lead %}} - -The high-level goal of the Envoy Gateway project is to attract more users to Envoy by lowering barriers to adoption -through expressive, extensible, role-oriented APIs that support a multitude of ingress and L7/L4 traffic routing -use cases; and provide a common foundation for vendors to build value-added products without having to re-engineer -fundamental interactions. - -{{% /blocks/lead %}} diff --git a/site/content/en/blog/_index.md b/site/content/en/blog/_index.md index 95ccb91d5d9e..45f940a58238 100644 --- a/site/content/en/blog/_index.md +++ b/site/content/en/blog/_index.md @@ -1,6 +1,5 @@ --- title: Blog -menu: {main: {weight: 30}} --- This is the **blog** section. It has two categories: News and Releases. diff --git a/site/content/en/blog/compatibility/matrix/matrix.md b/site/content/en/blog/compatibility/matrix/matrix.md index 87a9be7a2fc7..4f7377b80af3 100644 --- a/site/content/en/blog/compatibility/matrix/matrix.md +++ b/site/content/en/blog/compatibility/matrix/matrix.md @@ -1,6 +1,6 @@ --- title: Versions -date: 2022-10-25 +date: 2022-10-01 description: This section includes Compatibility Matrix of Envoy Gateway. --- diff --git a/site/content/en/community/_index.md b/site/content/en/community/_index.md deleted file mode 100644 index 637654126083..000000000000 --- a/site/content/en/community/_index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Community -menu: {main: {weight: 60}} ---- - - - -{{% blocks/lead color="yellow" %}} - -## Getting Involved! - -We welcome contributions from the community. - -Please carefully review the -project [Goals](https://github.com/envoyproxy/gateway/blob/main/GOALS.md) and the -[Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md) before diving in. - -{{% /blocks/lead %}} diff --git a/site/content/en/docs/_index.md b/site/content/en/docs/_index.md deleted file mode 100644 index 1c01c7e5e4ee..000000000000 --- a/site/content/en/docs/_index.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: "Documents" ---- diff --git a/site/content/en/docs/latest/helm/_index.md b/site/content/en/docs/latest/helm/_index.md deleted file mode 100644 index 8606fd7759c1..000000000000 --- a/site/content/en/docs/latest/helm/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Helm" -description: This section includes Helm related contents of Envoy Gateway. ---- diff --git a/site/content/en/docs/v0.5.0/_index.md b/site/content/en/docs/v0.5.0/_index.md deleted file mode 100644 index de8038ac4481..000000000000 --- a/site/content/en/docs/v0.5.0/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Welcome to Envoy Gateway" -description: v0.5.0 version of Envoy Gateway -linktitle: v0.5.0 -weight: 2 ---- - -Envoy Gateway is an open source project for managing **Envoy Proxy** as a standalone or Kubernetes-based application -gateway. **Gateway API** resources are used to dynamically provision and configure the managed Envoy Proxies. diff --git a/site/content/en/docs/v0.5.0/helm/_index.md b/site/content/en/docs/v0.5.0/helm/_index.md deleted file mode 100644 index 8606fd7759c1..000000000000 --- a/site/content/en/docs/v0.5.0/helm/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Helm" -description: This section includes Helm related contents of Envoy Gateway. ---- diff --git a/site/content/en/docs/v0.4.0/_index.md b/site/content/en/latest/_index.md similarity index 67% rename from site/content/en/docs/v0.4.0/_index.md rename to site/content/en/latest/_index.md index 1f5904f3f6ad..3772c64b1ccc 100644 --- a/site/content/en/docs/v0.4.0/_index.md +++ b/site/content/en/latest/_index.md @@ -1,8 +1,10 @@ ---- -title: "Welcome to Envoy Gateway" -description: v0.4.0 version of Envoy Gateway -linktitle: v0.4.0 ---- ++++ +title = "Welcome to Envoy Gateway" +description = "Envoy Gateway Documents" + +[[cascade]] +type = "docs" ++++ Envoy Gateway is an open source project for managing **Envoy Proxy** as a standalone or Kubernetes-based application gateway. **Gateway API** resources are used to dynamically provision and configure the managed Envoy Proxies. diff --git a/site/content/en/docs/latest/api/_index.md b/site/content/en/latest/api/_index.md similarity index 87% rename from site/content/en/docs/latest/api/_index.md rename to site/content/en/latest/api/_index.md index 1d7c67c8c151..396d9ffcefcf 100644 --- a/site/content/en/docs/latest/api/_index.md +++ b/site/content/en/latest/api/_index.md @@ -1,4 +1,5 @@ --- title: "API" description: This section includes APIs of Envoy Gateway. +weight: 80 --- diff --git a/site/content/en/docs/latest/api/extension_types.md b/site/content/en/latest/api/extension_types.md similarity index 100% rename from site/content/en/docs/latest/api/extension_types.md rename to site/content/en/latest/api/extension_types.md diff --git a/site/content/en/docs/contribution-guidelines/CODEOWNERS.md b/site/content/en/latest/contributions/CODEOWNERS.md similarity index 100% rename from site/content/en/docs/contribution-guidelines/CODEOWNERS.md rename to site/content/en/latest/contributions/CODEOWNERS.md diff --git a/site/content/en/docs/contribution-guidelines/CODE_OF_CONDUCT.md b/site/content/en/latest/contributions/CODE_OF_CONDUCT.md similarity index 100% rename from site/content/en/docs/contribution-guidelines/CODE_OF_CONDUCT.md rename to site/content/en/latest/contributions/CODE_OF_CONDUCT.md diff --git a/site/content/en/docs/contribution-guidelines/CONTRIBUTING.md b/site/content/en/latest/contributions/CONTRIBUTING.md similarity index 100% rename from site/content/en/docs/contribution-guidelines/CONTRIBUTING.md rename to site/content/en/latest/contributions/CONTRIBUTING.md diff --git a/site/content/en/docs/contribution-guidelines/DEVELOP.md b/site/content/en/latest/contributions/DEVELOP.md similarity index 100% rename from site/content/en/docs/contribution-guidelines/DEVELOP.md rename to site/content/en/latest/contributions/DEVELOP.md diff --git a/site/content/en/docs/contribution-guidelines/DOCS.md b/site/content/en/latest/contributions/DOCS.md similarity index 100% rename from site/content/en/docs/contribution-guidelines/DOCS.md rename to site/content/en/latest/contributions/DOCS.md diff --git a/site/content/en/docs/contribution-guidelines/RELEASING.md b/site/content/en/latest/contributions/RELEASING.md similarity index 100% rename from site/content/en/docs/contribution-guidelines/RELEASING.md rename to site/content/en/latest/contributions/RELEASING.md diff --git a/site/content/en/docs/contribution-guidelines/_index.md b/site/content/en/latest/contributions/_index.md similarity index 79% rename from site/content/en/docs/contribution-guidelines/_index.md rename to site/content/en/latest/contributions/_index.md index 23a001304712..3255d996472a 100644 --- a/site/content/en/docs/contribution-guidelines/_index.md +++ b/site/content/en/latest/contributions/_index.md @@ -1,5 +1,5 @@ --- title: Get Involved -menu: {main: {weight: 40}} description: "This section includes contents related to **Contributions**" +weight: 100 --- diff --git a/site/content/en/docs/latest/design/_index.md b/site/content/en/latest/design/_index.md similarity index 100% rename from site/content/en/docs/latest/design/_index.md rename to site/content/en/latest/design/_index.md diff --git a/site/content/en/docs/latest/design/accesslog.md b/site/content/en/latest/design/accesslog.md similarity index 100% rename from site/content/en/docs/latest/design/accesslog.md rename to site/content/en/latest/design/accesslog.md diff --git a/site/content/en/docs/latest/design/bootstrap.md b/site/content/en/latest/design/bootstrap.md similarity index 100% rename from site/content/en/docs/latest/design/bootstrap.md rename to site/content/en/latest/design/bootstrap.md diff --git a/site/content/en/docs/latest/design/client-traffic-policy.md b/site/content/en/latest/design/client-traffic-policy.md similarity index 100% rename from site/content/en/docs/latest/design/client-traffic-policy.md rename to site/content/en/latest/design/client-traffic-policy.md diff --git a/site/content/en/docs/latest/design/config-api.md b/site/content/en/latest/design/config-api.md similarity index 100% rename from site/content/en/docs/latest/design/config-api.md rename to site/content/en/latest/design/config-api.md diff --git a/site/content/en/docs/latest/design/egctl.md b/site/content/en/latest/design/egctl.md similarity index 100% rename from site/content/en/docs/latest/design/egctl.md rename to site/content/en/latest/design/egctl.md diff --git a/site/content/en/docs/latest/design/envoy-patch-policy.md b/site/content/en/latest/design/envoy-patch-policy.md similarity index 100% rename from site/content/en/docs/latest/design/envoy-patch-policy.md rename to site/content/en/latest/design/envoy-patch-policy.md diff --git a/site/content/en/docs/latest/design/extending-envoy-gateway.md b/site/content/en/latest/design/extending-envoy-gateway.md similarity index 100% rename from site/content/en/docs/latest/design/extending-envoy-gateway.md rename to site/content/en/latest/design/extending-envoy-gateway.md diff --git a/site/content/en/docs/latest/design/gatewayapi-translator.md b/site/content/en/latest/design/gatewayapi-translator.md similarity index 100% rename from site/content/en/docs/latest/design/gatewayapi-translator.md rename to site/content/en/latest/design/gatewayapi-translator.md diff --git a/site/content/en/docs/contribution-guidelines/INITIAL_GOALS.md b/site/content/en/latest/design/goals.md similarity index 100% rename from site/content/en/docs/contribution-guidelines/INITIAL_GOALS.md rename to site/content/en/latest/design/goals.md diff --git a/site/content/en/docs/latest/design/local-envoy-gateway.md b/site/content/en/latest/design/local-envoy-gateway.md similarity index 100% rename from site/content/en/docs/latest/design/local-envoy-gateway.md rename to site/content/en/latest/design/local-envoy-gateway.md diff --git a/site/content/en/docs/latest/design/metrics.md b/site/content/en/latest/design/metrics.md similarity index 100% rename from site/content/en/docs/latest/design/metrics.md rename to site/content/en/latest/design/metrics.md diff --git a/site/content/en/docs/latest/design/pprof.md b/site/content/en/latest/design/pprof.md similarity index 100% rename from site/content/en/docs/latest/design/pprof.md rename to site/content/en/latest/design/pprof.md diff --git a/site/content/en/docs/latest/design/rate-limit.md b/site/content/en/latest/design/rate-limit.md similarity index 100% rename from site/content/en/docs/latest/design/rate-limit.md rename to site/content/en/latest/design/rate-limit.md diff --git a/site/content/en/docs/latest/design/request-authentication.md b/site/content/en/latest/design/request-authentication.md similarity index 100% rename from site/content/en/docs/latest/design/request-authentication.md rename to site/content/en/latest/design/request-authentication.md diff --git a/site/content/en/docs/latest/design/roadmap.md b/site/content/en/latest/design/roadmap.md similarity index 100% rename from site/content/en/docs/latest/design/roadmap.md rename to site/content/en/latest/design/roadmap.md diff --git a/site/content/en/docs/latest/design/system-design.md b/site/content/en/latest/design/system-design.md similarity index 100% rename from site/content/en/docs/latest/design/system-design.md rename to site/content/en/latest/design/system-design.md diff --git a/site/content/en/docs/latest/design/tcp-udp-design.md b/site/content/en/latest/design/tcp-udp-design.md similarity index 100% rename from site/content/en/docs/latest/design/tcp-udp-design.md rename to site/content/en/latest/design/tcp-udp-design.md diff --git a/site/content/en/docs/latest/design/tracing.md b/site/content/en/latest/design/tracing.md similarity index 100% rename from site/content/en/docs/latest/design/tracing.md rename to site/content/en/latest/design/tracing.md diff --git a/site/content/en/docs/latest/design/watching.md b/site/content/en/latest/design/watching.md similarity index 100% rename from site/content/en/docs/latest/design/watching.md rename to site/content/en/latest/design/watching.md diff --git a/site/content/en/latest/helm/_index.md b/site/content/en/latest/helm/_index.md new file mode 100644 index 000000000000..b4c6f79c6fda --- /dev/null +++ b/site/content/en/latest/helm/_index.md @@ -0,0 +1,5 @@ +--- +title: "Installation" +description: This section includes installation related contents of Envoy Gateway. +weight: 70 +--- diff --git a/site/content/en/docs/latest/helm/api.md b/site/content/en/latest/helm/api.md similarity index 99% rename from site/content/en/docs/latest/helm/api.md rename to site/content/en/latest/helm/api.md index ca33e2c5e1fe..130c82250ced 100644 --- a/site/content/en/docs/latest/helm/api.md +++ b/site/content/en/latest/helm/api.md @@ -1,5 +1,5 @@ --- -title: "Helm Chart Details" +title: "Helm Chart Values" --- ![Version: v0.0.0-latest](https://img.shields.io/badge/Version-v0.0.0--latest-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) diff --git a/site/content/en/docs/latest/images/architecture.png b/site/content/en/latest/images/architecture.png similarity index 100% rename from site/content/en/docs/latest/images/architecture.png rename to site/content/en/latest/images/architecture.png diff --git a/site/content/en/docs/latest/images/extension-example.png b/site/content/en/latest/images/extension-example.png similarity index 100% rename from site/content/en/docs/latest/images/extension-example.png rename to site/content/en/latest/images/extension-example.png diff --git a/site/content/en/docs/latest/user/_index.md b/site/content/en/latest/user/_index.md similarity index 100% rename from site/content/en/docs/latest/user/_index.md rename to site/content/en/latest/user/_index.md diff --git a/site/content/en/docs/latest/user/authn.md b/site/content/en/latest/user/authn.md similarity index 100% rename from site/content/en/docs/latest/user/authn.md rename to site/content/en/latest/user/authn.md diff --git a/site/content/en/docs/latest/user/customize-envoyproxy.md b/site/content/en/latest/user/customize-envoyproxy.md similarity index 100% rename from site/content/en/docs/latest/user/customize-envoyproxy.md rename to site/content/en/latest/user/customize-envoyproxy.md diff --git a/site/content/en/docs/latest/user/deployment-mode.md b/site/content/en/latest/user/deployment-mode.md similarity index 100% rename from site/content/en/docs/latest/user/deployment-mode.md rename to site/content/en/latest/user/deployment-mode.md diff --git a/site/content/en/docs/latest/user/egctl.md b/site/content/en/latest/user/egctl.md similarity index 100% rename from site/content/en/docs/latest/user/egctl.md rename to site/content/en/latest/user/egctl.md diff --git a/site/content/en/docs/latest/user/envoy-patch-policy.md b/site/content/en/latest/user/envoy-patch-policy.md similarity index 100% rename from site/content/en/docs/latest/user/envoy-patch-policy.md rename to site/content/en/latest/user/envoy-patch-policy.md diff --git a/site/content/en/docs/latest/user/gateway-address.md b/site/content/en/latest/user/gateway-address.md similarity index 100% rename from site/content/en/docs/latest/user/gateway-address.md rename to site/content/en/latest/user/gateway-address.md diff --git a/site/content/en/docs/latest/user/gateway-api-metrics.md b/site/content/en/latest/user/gateway-api-metrics.md similarity index 100% rename from site/content/en/docs/latest/user/gateway-api-metrics.md rename to site/content/en/latest/user/gateway-api-metrics.md diff --git a/site/content/en/docs/latest/user/gatewayapi-support.md b/site/content/en/latest/user/gatewayapi-support.md similarity index 100% rename from site/content/en/docs/latest/user/gatewayapi-support.md rename to site/content/en/latest/user/gatewayapi-support.md diff --git a/site/content/en/docs/latest/user/grpc-routing.md b/site/content/en/latest/user/grpc-routing.md similarity index 100% rename from site/content/en/docs/latest/user/grpc-routing.md rename to site/content/en/latest/user/grpc-routing.md diff --git a/site/content/en/docs/latest/user/http-redirect.md b/site/content/en/latest/user/http-redirect.md similarity index 100% rename from site/content/en/docs/latest/user/http-redirect.md rename to site/content/en/latest/user/http-redirect.md diff --git a/site/content/en/docs/latest/user/http-request-headers.md b/site/content/en/latest/user/http-request-headers.md similarity index 100% rename from site/content/en/docs/latest/user/http-request-headers.md rename to site/content/en/latest/user/http-request-headers.md diff --git a/site/content/en/docs/latest/user/http-request-mirroring.md b/site/content/en/latest/user/http-request-mirroring.md similarity index 100% rename from site/content/en/docs/latest/user/http-request-mirroring.md rename to site/content/en/latest/user/http-request-mirroring.md diff --git a/site/content/en/docs/latest/user/http-response-headers.md b/site/content/en/latest/user/http-response-headers.md similarity index 100% rename from site/content/en/docs/latest/user/http-response-headers.md rename to site/content/en/latest/user/http-response-headers.md diff --git a/site/content/en/docs/latest/user/http-routing.md b/site/content/en/latest/user/http-routing.md similarity index 100% rename from site/content/en/docs/latest/user/http-routing.md rename to site/content/en/latest/user/http-routing.md diff --git a/site/content/en/docs/latest/user/http-traffic-splitting.md b/site/content/en/latest/user/http-traffic-splitting.md similarity index 100% rename from site/content/en/docs/latest/user/http-traffic-splitting.md rename to site/content/en/latest/user/http-traffic-splitting.md diff --git a/site/content/en/docs/latest/user/http-urlrewrite.md b/site/content/en/latest/user/http-urlrewrite.md similarity index 100% rename from site/content/en/docs/latest/user/http-urlrewrite.md rename to site/content/en/latest/user/http-urlrewrite.md diff --git a/site/content/en/docs/latest/user/installation.md b/site/content/en/latest/user/installation.md similarity index 100% rename from site/content/en/docs/latest/user/installation.md rename to site/content/en/latest/user/installation.md diff --git a/site/content/en/docs/latest/user/multicluster-service.md b/site/content/en/latest/user/multicluster-service.md similarity index 100% rename from site/content/en/docs/latest/user/multicluster-service.md rename to site/content/en/latest/user/multicluster-service.md diff --git a/site/content/en/docs/latest/user/proxy-observability.md b/site/content/en/latest/user/proxy-observability.md similarity index 100% rename from site/content/en/docs/latest/user/proxy-observability.md rename to site/content/en/latest/user/proxy-observability.md diff --git a/site/content/en/docs/latest/user/quickstart.md b/site/content/en/latest/user/quickstart.md similarity index 100% rename from site/content/en/docs/latest/user/quickstart.md rename to site/content/en/latest/user/quickstart.md diff --git a/site/content/en/docs/latest/user/rate-limit.md b/site/content/en/latest/user/rate-limit.md similarity index 100% rename from site/content/en/docs/latest/user/rate-limit.md rename to site/content/en/latest/user/rate-limit.md diff --git a/site/content/en/docs/latest/user/secure-gateways.md b/site/content/en/latest/user/secure-gateways.md similarity index 100% rename from site/content/en/docs/latest/user/secure-gateways.md rename to site/content/en/latest/user/secure-gateways.md diff --git a/site/content/en/docs/latest/user/tcp-routing.md b/site/content/en/latest/user/tcp-routing.md similarity index 100% rename from site/content/en/docs/latest/user/tcp-routing.md rename to site/content/en/latest/user/tcp-routing.md diff --git a/site/content/en/docs/latest/user/tls-cert-manager.md b/site/content/en/latest/user/tls-cert-manager.md similarity index 100% rename from site/content/en/docs/latest/user/tls-cert-manager.md rename to site/content/en/latest/user/tls-cert-manager.md diff --git a/site/content/en/docs/latest/user/tls-passthrough.md b/site/content/en/latest/user/tls-passthrough.md similarity index 100% rename from site/content/en/docs/latest/user/tls-passthrough.md rename to site/content/en/latest/user/tls-passthrough.md diff --git a/site/content/en/docs/latest/user/tls-termination.md b/site/content/en/latest/user/tls-termination.md similarity index 100% rename from site/content/en/docs/latest/user/tls-termination.md rename to site/content/en/latest/user/tls-termination.md diff --git a/site/content/en/docs/latest/user/udp-routing.md b/site/content/en/latest/user/udp-routing.md similarity index 100% rename from site/content/en/docs/latest/user/udp-routing.md rename to site/content/en/latest/user/udp-routing.md diff --git a/site/content/en/docs/v0.2.0/_index.md b/site/content/en/v0.2.0/_index.md similarity index 67% rename from site/content/en/docs/v0.2.0/_index.md rename to site/content/en/v0.2.0/_index.md index 045c5cfab1c5..3772c64b1ccc 100644 --- a/site/content/en/docs/v0.2.0/_index.md +++ b/site/content/en/v0.2.0/_index.md @@ -1,8 +1,10 @@ ---- -title: "Welcome to Envoy Gateway" -description: v0.2.0 version of Envoy Gateway -linktitle: v0.2.0 ---- ++++ +title = "Welcome to Envoy Gateway" +description = "Envoy Gateway Documents" + +[[cascade]] +type = "docs" ++++ Envoy Gateway is an open source project for managing **Envoy Proxy** as a standalone or Kubernetes-based application gateway. **Gateway API** resources are used to dynamically provision and configure the managed Envoy Proxies. diff --git a/site/content/en/v0.2.0/contributions/CODEOWNERS.md b/site/content/en/v0.2.0/contributions/CODEOWNERS.md new file mode 100644 index 000000000000..9e596002bb33 --- /dev/null +++ b/site/content/en/v0.2.0/contributions/CODEOWNERS.md @@ -0,0 +1,18 @@ +--- +title: "Maintainers" +--- + +## The following maintainers, listed in alphabetical order, own everything + +- @AliceProxy +- @arkodg +- @Xunzhuo +- @zirain +- @qicz + +## Emeritus Maintainers + +- @danehans +- @alexgervais +- @skriss +- @youngnick diff --git a/site/content/en/v0.2.0/contributions/CODE_OF_CONDUCT.md b/site/content/en/v0.2.0/contributions/CODE_OF_CONDUCT.md new file mode 100644 index 000000000000..1f17c0889458 --- /dev/null +++ b/site/content/en/v0.2.0/contributions/CODE_OF_CONDUCT.md @@ -0,0 +1,5 @@ +--- +title: "Code of Conduct" +--- + +Gateway follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). diff --git a/site/content/en/v0.2.0/contributions/CONTRIBUTING.md b/site/content/en/v0.2.0/contributions/CONTRIBUTING.md new file mode 100644 index 000000000000..21dcd9a1941a --- /dev/null +++ b/site/content/en/v0.2.0/contributions/CONTRIBUTING.md @@ -0,0 +1,189 @@ +--- +title: "Contributing" +weight: 3 +--- + +We welcome contributions from the community. Please carefully review the [project goals](GOALS.md) +and following guidelines to streamline your contributions. + +## Communication + +* Before starting work on a major feature, please contact us via GitHub or Slack. We will ensure no + one else is working on it and ask you to open a GitHub issue. +* A "major feature" is defined as any change that is > 100 LOC altered (not including tests), or + changes any user-facing behavior. We will use the GitHub issue to discuss the feature and come to + agreement. This is to prevent your time being wasted, as well as ours. The GitHub review process + for major features is also important so that [affiliations with commit access](CODEOWNERS.md) can + come to agreement on the design. If it's appropriate to write a design document, the document must + be hosted either in the GitHub issue, or linked to from the issue and hosted in a world-readable + location. +* Small patches and bug fixes don't need prior communication. + +## Inclusivity + +The Envoy Gateway community has an explicit goal to be inclusive to all. As such, all PRs must adhere +to the following guidelines for all code, APIs, and documentation: + +* The following words and phrases are not allowed: + * *Whitelist*: use allowlist instead. + * *Blacklist*: use denylist or blocklist instead. + * *Master*: use primary instead. + * *Slave*: use secondary or replica instead. +* Documentation should be written in an inclusive style. The [Google developer + documentation](https://developers.google.com/style/inclusive-documentation) contains an excellent + reference on this topic. +* The above policy is not considered definitive and may be amended in the future as industry best + practices evolve. Additional comments on this topic may be provided by maintainers during code + review. + +## Submitting a PR + +* Fork the repo. +* Hack +* DCO sign-off each commit. This can be done with `git commit -s`. +* Submit your PR. +* Tests will automatically run for you. +* We will **not** merge any PR that is not passing tests. +* PRs are expected to have 100% test coverage for added code. This can be verified with a coverage + build. If your PR cannot have 100% coverage for some reason please clearly explain why when you + open it. +* Any PR that changes user-facing behavior **must** have associated documentation in the [docs](https://github.com/envoyproxy/gateway/tree/main/docs) folder of the repo as + well as the [changelog](../releases). +* All code comments and documentation are expected to have proper English grammar and punctuation. + If you are not a fluent English speaker (or a bad writer ;-)) please let us know and we will try + to find some help but there are no guarantees. +* Your PR title should be descriptive, and generally start with type that contains a subsystem name with `()` if necessary + and summary followed by a colon. format `chore/docs/feat/fix/refactor/style/test: summary`. + Examples: + * "docs: fix grammar error" + * "feat(translator): add new feature" + * "fix: fix xx bug" + * "chore: change ci & build tools etc" +* Your PR commit message will be used as the commit message when your PR is merged. You should + update this field if your PR diverges during review. +* Your PR description should have details on what the PR does. If it fixes an existing issue it + should end with "Fixes #XXX". +* If your PR is co-authored or based on an earlier PR from another contributor, + please attribute them with `Co-authored-by: name `. See + GitHub's [multiple author + guidance](https://help.github.com/en/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors) + for further details. +* When all tests are passing and all other conditions described herein are satisfied, a maintainer + will be assigned to review and merge the PR. +* Once you submit a PR, *please do not rebase it*. It's much easier to review if subsequent commits + are new commits and/or merges. We squash and merge so the number of commits you have in the PR + doesn't matter. +* We expect that once a PR is opened, it will be actively worked on until it is merged or closed. + We reserve the right to close PRs that are not making progress. This is generally defined as no + changes for 7 days. Obviously PRs that are closed due to lack of activity can be reopened later. + Closing stale PRs helps us to keep on top of all the work currently in flight. + +## Maintainer PR Review Policy + +* See [CODEOWNERS.md](CODEOWNERS.md) for the current list of maintainers. +* A maintainer representing a different affiliation from the PR owner is required to review and + approve the PR. +* When the project matures, it is expected that a "domain expert" for the code the PR touches should + review the PR. This person does not require commit access, just domain knowledge. +* The above rules may be waived for PRs which only update docs or comments, or trivial changes to + tests and tools (where trivial is decided by the maintainer in question). +* If there is a question on who should review a PR please discuss in Slack. +* Anyone is welcome to review any PR that they want, whether they are a maintainer or not. +* Please make sure that the PR title, commit message, and description are updated if the PR changes + significantly during review. +* Please **clean up the title and body** before merging. By default, GitHub fills the squash merge + title with the original title, and the commit body with every individual commit from the PR. + The maintainer doing the merge should make sure the title follows the guidelines above and should + overwrite the body with the original commit message from the PR (cleaning it up if necessary) + while preserving the PR author's final DCO sign-off. + +## Decision making + +This is a new and complex project, and we need to make a lot of decisions very quickly. +To this end, we've settled on this process for making (possibly contentious) decisions: + +* For decisions that need a record, we create an issue. +* In that issue, we discuss opinions, then a maintainer can call for a vote in a comment. +* Maintainers can cast binding votes on that comment by reacting or replying in another comment. +* Non-maintainer community members are welcome to cast non-binding votes by either of these methods. +* Voting will be resolved by simple majority. +* In the event of deadlocks, the question will be put to steering instead. + +## DCO: Sign your work + +The sign-off is a simple line at the end of the explanation for the +patch, which certifies that you wrote it or otherwise have the right to +pass it on as an open-source patch. The rules are pretty simple: if you +can certify the below (from +[developercertificate.org](https://developercertificate.org/)): + +``` +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +then you just add a line to every git commit message: + + Signed-off-by: Joe Smith + +using your real name (sorry, no pseudonyms or anonymous contributions.) + +You can add the sign-off when creating the git commit via `git commit -s`. + +If you want this to be automatic you can set up some aliases: + +```bash +git config --add alias.amend "commit -s --amend" +git config --add alias.c "commit -s" +``` + +## Fixing DCO + +If your PR fails the DCO check, it's necessary to fix the entire commit history in the PR. Best +practice is to [squash](https://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) +the commit history to a single commit, append the DCO sign-off as described above, and [force +push](https://git-scm.com/docs/git-push#git-push---force). For example, if you have 2 commits in +your history: + +```bash +git rebase -i HEAD^^ +(interactive squash + DCO append) +git push origin -f +``` + +Note, that in general rewriting history in this way is a hindrance to the review process and this +should only be done to correct a DCO mistake. diff --git a/site/content/en/v0.2.0/contributions/DEVELOP.md b/site/content/en/v0.2.0/contributions/DEVELOP.md new file mode 100644 index 000000000000..a6fd3846f565 --- /dev/null +++ b/site/content/en/v0.2.0/contributions/DEVELOP.md @@ -0,0 +1,162 @@ +--- +title: "Developer Guide" +weight: 2 +--- + +Envoy Gateway is built using a [make][]-based build system. Our CI is based on [Github Actions][] using [workflows][]. + +## Prerequisites + +### go + +* Version: 1.20 +* Installation Guide: https://go.dev/doc/install + +### make + +* Recommended Version: 4.0 or later +* Installation Guide: https://www.gnu.org/software/make + +### docker + +* Optional when you want to build a Docker image or run `make` inside Docker. +* Recommended Version: 20.10.16 +* Installation Guide: https://docs.docker.com/engine/install + +### python3 + +* Need a `python3` program +* Must have a functioning `venv` module; this is part of the standard + library, but some distributions (such as Debian and Ubuntu) replace + it with a stub and require you to install a `python3-venv` package + separately. + +## Quickstart + +* Run `make help` to see all the available targets to build, test and run Envoy Gateway. + +### Building + +* Run `make build` to build all the binaries. +* Run `make build BINS="envoy-gateway"` to build the Envoy Gateway binary. +* Run `make build BINS="egctl"` to build the egctl binary. + +__Note:__ The binaries get generated in the `bin/$OS/$ARCH` directory, for example, `bin/linux/amd64/`. + +### Testing + +* Run `make test` to run the golang tests. + +* Run `make testdata` to generate the golden YAML testdata files. + +### Running Linters + +* Run `make lint` to make sure your code passes all the linter checks. +__Note:__ The `golangci-lint` configuration resides [here](https://github.com/envoyproxy/gateway/blob/main/tools/linter/golangci-lint/.golangci.yml). + +### Building and Pushing the Image + +* Run `IMAGE=docker.io/you/gateway-dev make image` to build the docker image. +* Run `IMAGE=docker.io/you/gateway-dev make push-multiarch` to build and push the multi-arch docker image. + +__Note:__ Replace `IMAGE` with your registry's image name. + +### Deploying Envoy Gateway for Test/Dev + +* Run `make create-cluster` to create a [Kind][] cluster. + +#### Option 1: Use the Latest [gateway-dev][] Image + +* Run `TAG=latest make kube-deploy` to deploy Envoy Gateway in the Kind cluster using the latest image. Replace `latest` + to use a different image tag. + +#### Option 2: Use a Custom Image + +* Run `make kube-install-image` to build an image from the tip of your current branch and load it in the Kind cluster. +* Run `IMAGE_PULL_POLICY=IfNotPresent make kube-deploy` to install Envoy Gateway into the Kind cluster using your custom image. + +### Deploying Envoy Gateway in Kubernetes + +* Run `TAG=latest make kube-deploy` to deploy Envoy Gateway using the latest image into a Kubernetes cluster (linked to + the current kube context). Preface the command with `IMAGE` or replace `TAG` to use a different Envoy Gateway image or + tag. +* Run `make kube-undeploy` to uninstall Envoy Gateway from the cluster. + +__Note:__ Envoy Gateway is tested against Kubernetes v1.24.0. + +### Demo Setup + +* Run `make kube-demo` to deploy a demo backend service, gatewayclass, gateway and httproute resource +(similar to steps outlined in the [Quickstart][] docs) and test the configuration. +* Run `make kube-demo-undeploy` to delete the resources created by the `make kube-demo` command. + +### Run Gateway API Conformance Tests + +The commands below deploy Envoy Gateway to a Kubernetes cluster and run the Gateway API conformance tests. Refer to the +Gateway API [conformance homepage][] to learn more about the tests. If Envoy Gateway is already installed, run +`TAG=latest make run-conformance` to run the conformance tests. + +#### On a Linux Host + +* Run `TAG=latest make conformance` to create a Kind cluster, install Envoy Gateway using the latest [gateway-dev][] + image, and run Gateway API conformance tests. + +#### On a Mac Host + +Since Mac doesn't support [directly exposing][] the Docker network to the Mac host, use one of the following +workarounds to run conformance tests: + +* Deploy your own Kubernetes cluster or use Docker Desktop with [Kubernetes support][] and then run + `TAG=latest make kube-deploy run-conformance`. This will install Envoy Gateway using the latest [gateway-dev][] image + to the Kubernetes cluster using the current kubectl context and run the conformance tests. Use `make kube-undeploy` to + uninstall Envoy Gateway. +* Install and run [Docker Mac Net Connect][mac_connect] and then run `TAG=latest make conformance`. + +__Note:__ Preface commands with `IMAGE` or replace `TAG` to use a different Envoy Gateway image or tag. If `TAG` +is unspecified, the short SHA of your current branch is used. + +### Debugging the Envoy Config + +An easy way to view the envoy config that Envoy Gateway is using is to port-forward to the admin interface port +(currently `19000`) on the Envoy deployment that corresponds to a Gateway so that it can be accessed locally. + +Get the name of the Envoy deployment. The following example is for Gateway `eg` in the `default` namespace: + +```shell +export ENVOY_DEPLOYMENT=$(kubectl get deploy -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg -o jsonpath='{.items[0].metadata.name}') +``` + +Port forward the admin interface port: + +```shell +kubectl port-forward deploy/${ENVOY_DEPLOYMENT} -n envoy-gateway-system 19000:19000 +``` + +Now you are able to view the running Envoy configuration by navigating to `127.0.0.1:19000/config_dump`. + +There are many other endpoints on the [Envoy admin interface][] that may be helpful when debugging. + +### JWT Testing + +An example [JSON Web Token (JWT)][jwt] and [JSON Web Key Set (JWKS)][jwks] are used for the [request authentication][] +user guide. The JWT was created by the [JWT Debugger][], using the `RS256` algorithm. The public key from the JWTs +verify signature was copied to [JWK Creator][] for generating the JWK. The JWK Creator was configured with matching +settings, i.e. `Signing` public key use and the `RS256` algorithm. The generated JWK was wrapped in a JWKS structure +and is hosted in the repo. + +[Quickstart]: https://github.com/envoyproxy/gateway/blob/main/docs/latest/user/quickstart.md +[make]: https://www.gnu.org/software/make/ +[Github Actions]: https://docs.github.com/en/actions +[workflows]: https://github.com/envoyproxy/gateway/tree/main/.github/workflows +[Kind]: https://kind.sigs.k8s.io/ +[conformance homepage]: https://gateway-api.sigs.k8s.io/concepts/conformance/ +[directly exposing]: https://kind.sigs.k8s.io/docs/user/loadbalancer/ +[Kubernetes support]: https://docs.docker.com/desktop/kubernetes/ +[gateway-dev]: https://hub.docker.com/r/envoyproxy/gateway-dev/tags +[mac_connect]: https://github.com/chipmk/docker-mac-net-connect +[Envoy admin interface]: https://www.envoyproxy.io/docs/envoy/latest/operations/admin#operations-admin-interface +[jwt]: https://tools.ietf.org/html/rfc7519 +[jwks]: https://tools.ietf.org/html/rfc7517 +[request authentication]: https://gateway.envoyproxy.io/latest/user/authn.html +[JWT Debugger]: https://jwt.io/ +[JWK Creator]: https://russelldavies.github.io/jwk-creator/ diff --git a/site/content/en/v0.2.0/contributions/DOCS.md b/site/content/en/v0.2.0/contributions/DOCS.md new file mode 100644 index 000000000000..1abae95763c5 --- /dev/null +++ b/site/content/en/v0.2.0/contributions/DOCS.md @@ -0,0 +1,65 @@ +--- +title: "Working on the Envoy Gateway Docs" +--- + +The documentation for the Envoy Gateway lives in the `docs/` directory. Any +individual document can be written using either [reStructuredText] or [Markdown], +you can choose the format that you're most comfortable with when working on the +documentation. + +## Documentation Structure + +We supported the versioned Docs now, the directory name under docs represents +the version of docs. The root of the latest site is in `docs/latest/index.rst`. +This is probably where to start if you're trying to understand how things fit together. + +Note that the new contents should be added to `docs/latest` and will be cut off at +the next release. The contents under `docs/v0.2.0` are auto-generated, +and usually do not need to make changes to them, unless if you find the current release pages have +some incorrect contents. If so, you should send a PR to update contents both of `docs/latest` +and `docs/v0.2.0`. + +It's important to note that a given document _must_ have a reference in some +`.. toctree::` section for the document to be reachable. Not everything needs +to be in `docs/index.rst`'s `toctree` though. + +You can access the website which represents the current release in default, +and you can access the website which contains the latest version changes in +[Here][latest-website] or at the footer of the pages. + +## Documentation Workflow + +To work with the docs, just edit reStructuredText or Markdown files in `docs`, +then run + +```bash +make docs +``` + +This will create `docs/html` with the built HTML pages. You can view the docs +either simply by pointing a web browser at the `file://` path to your +`docs/html`, or by firing up a static webserver from that directory, e.g. + +``` shell +make docs-serve +``` + +If you want to generate a new release version of the docs, like `v0.3.0`, then run + +```bash +make docs-release TAG=v0.3.0 +``` + +This will update the VERSION file at the project root, which records current release version, +and it will be used in the pages version context and binary version output. Also, this will generate +new dir `docs/v0.3.0`, which contains docs at v0.3.0 and updates artifact links to `v0.3.0` +in all files under `docs/v0.3.0/user`, like `quickstart.md`, `http-routing.md` and etc. + +## Publishing Docs + +Whenever docs are pushed to `main`, CI will publish the built docs to GitHub +Pages. For more details, see `.github/workflows/docs.yaml`. + +[reStructuredText]: https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html +[Markdown]: https://daringfireball.net/projects/markdown/syntax +[latest-website]: https://gateway.envoyproxy.io/latest diff --git a/site/content/en/v0.2.0/contributions/RELEASING.md b/site/content/en/v0.2.0/contributions/RELEASING.md new file mode 100644 index 000000000000..617baf1933e0 --- /dev/null +++ b/site/content/en/v0.2.0/contributions/RELEASING.md @@ -0,0 +1,230 @@ +--- +title: "Release Process" +--- + +This document guides maintainers through the process of creating an Envoy Gateway release. + +- [Release Candidate](#release-candidate) +- [Minor Release](#minor-release) +- [Announce the Release](#announce-the-release) + +## Release Candidate + +The following steps should be used for creating a release candidate. + +### Prerequisites + +- Permissions to push to the Envoy Gateway repository. + +Set environment variables for use in subsequent steps: + +```shell +export MAJOR_VERSION=0 +export MINOR_VERSION=3 +export RELEASE_CANDIDATE_NUMBER=1 +export GITHUB_REMOTE=origin +``` + +1. Clone the repo, checkout the `main` branch, ensure it’s up-to-date, and your local branch is clean. +2. Create a topic branch for adding the release notes and updating the [VERSION][] file with the release version. Refer to previous [release notes][] and [VERSION][] for additional details. +3. Sign, commit, and push your changes to your fork. +4. Submit a [Pull Request][] to merge the changes into the `main` branch. Do not proceed until your PR has merged and + the [Build and Test][] has successfully completed. +5. Create a new release branch from `main`. The release branch should be named + `release/v${MAJOR_VERSION}.${MINOR_VERSION}`, e.g. `release/v0.3`. + + ```shell + git checkout -b release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +6. Push the branch to the Envoy Gateway repo. + + ```shell + git push ${GITHUB_REMOTE} release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +7. Create a topic branch for updating the Envoy proxy image to the tag supported by the release. Reference [PR #958][] + for additional details on updating the image tag. +8. Sign, commit, and push your changes to your fork. +9. Submit a [Pull Request][] to merge the changes into the `release/v${MAJOR_VERSION}.${MINOR_VERSION}` branch. Do not + proceed until your PR has merged into the release branch and the [Build and Test][] has completed for your PR. +10. Ensure your release branch is up-to-date and tag the head of your release branch with the release candidate number. + + ```shell + git tag -a v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} -m 'Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} Release Candidate' + ``` + +11. Push the tag to the Envoy Gateway repository. + + ```shell + git push ${GITHUB_REMOTE} v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} + ``` + +12. This will trigger the [release GitHub action][] that generates the release, release artifacts, etc. +13. Confirm that the [release workflow][] completed successfully. +14. Confirm that the Envoy Gateway [image][] with the correct release tag was published to Docker Hub. +15. Confirm that the [release][] was created. +16. Note that the [Quickstart Guide][] references are __not__ updated for release candidates. However, test + the quickstart steps using the release candidate by manually updating the links. +17. [Generate][] the GitHub changelog. +18. Ensure you check the "This is a pre-release" checkbox when editing the GitHub release. +19. If you find any bugs in this process, please create an issue. + +### Setup cherry picker action + +After release branch cut, RM (Release Manager) should add job [cherrypick action](../../../.github/workflows/cherrypick.yaml) for target release. + +Configuration looks like following: + +```yaml + cherry_pick_release_v0_4: + runs-on: ubuntu-latest + name: Cherry pick into release-v0.4 + if: ${{ contains(github.event.pull_request.labels.*.name, 'cherrypick/release-v0.4') && github.event.pull_request.merged == true }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Cherry pick into release/v0.4 + uses: carloscastrojumo/github-cherry-pick-action@v1.0.9 + with: + branch: release/v0.4 + title: "[release/v0.4] {old_title}" + body: "Cherry picking #{old_pull_request_id} onto release/v0.4" + labels: | + cherrypick/release-v0.4 + # put release manager here + reviewers: | + AliceProxy +``` + +Replace `v0.4` with real branch name, and `AliceProxy` with the real name of RM. + +## Minor Release + +The following steps should be used for creating a minor release. + +### Prerequisites + +- Permissions to push to the Envoy Gateway repository. +- A release branch that has been cut from the corresponding release candidate. Refer to the + [Release Candidate](#release-candidate) section for additional details on cutting a release candidate. + +Set environment variables for use in subsequent steps: + +```shell +export MAJOR_VERSION=0 +export MINOR_VERSION=3 +export GITHUB_REMOTE=origin +``` + +1. Clone the repo, checkout the `main` branch, ensure it’s up-to-date, and your local branch is clean. +2. Create a topic branch for adding the release notes, release announcement, and versioned release docs. + + 1. Create the release notes. Reference previous [release notes][] for additional details. __Note:__ The release + notes should be an accumulation of the release candidate release notes and any changes since the release + candidate. + 2. Create a release announcement. Refer to [PR #635] as an example release announcement. + 3. Include the release in the compatibility matrix. Refer to [PR #1002] as an example. + 4. Generate the versioned release docs: + + ``` shell + make docs-release TAG=v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +3. Sign, commit, and push your changes to your fork. +4. Submit a [Pull Request][] to merge the changes into the `main` branch. Do not proceed until all your PRs have merged + and the [Build and Test][] has completed for your final PR. + +5. Checkout the release branch. + + ```shell + git checkout -b release/v${MAJOR_VERSION}.${MINOR_VERSION} $GITHUB_REMOTE/release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +6. If the tip of the release branch does not match the tip of `main`, perform the following: + + 1. Create a topic branch from the release branch. + 2. Cherry-pick the commits from `main` that differ from the release branch. + 3. Run tests locally, e.g. `make lint`. + 4. Sign, commit, and push your topic branch to your Envoy Gateway fork. + 5. Submit a PR to merge the topic from of your fork into the Envoy Gateway release branch. + 6. Do not proceed until the PR has merged and CI passes for the merged PR. + 7. If you are still on your topic branch, change to the release branch: + + ```shell + git checkout release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + + 8. Ensure your local release branch is up-to-date: + + ```shell + git pull $GITHUB_REMOTE release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +7. Tag the head of your release branch with the release tag. For example: + + ```shell + git tag -a v${MAJOR_VERSION}.${MINOR_VERSION}.0 -m 'Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION}.0 Release' + ``` + + __Note:__ The tag version differs from the release branch by including the `.0` patch version. + +8. Push the tag to the Envoy Gateway repository. + + ```shell + git push origin v${MAJOR_VERSION}.${MINOR_VERSION}.0 + ``` + +9. This will trigger the [release GitHub action][] that generates the release, release artifacts, etc. +10. Confirm that the [release workflow][] completed successfully. +11. Confirm that the Envoy Gateway [image][] with the correct release tag was published to Docker Hub. +12. Confirm that the [release][] was created. +13. Confirm that the steps in the [Quickstart Guide][] work as expected. +14. [Generate][] the GitHub changelog and include the following text at the beginning of the release page: + + ```console + # Release Announcement + + Check out the [v${MAJOR_VERSION}.${MINOR_VERSION} release announcement] + (https://gateway.envoyproxy.io/releases/v${MAJOR_VERSION}.${MINOR_VERSION}.html) to learn more about the release. + ``` + +If you find any bugs in this process, please create an issue. + +## Announce the Release + +It's important that the world knows about the release. Use the following steps to announce the release. + +1. Set the release information in the Envoy Gateway Slack channel. For example: + + ```shell + Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION} has been released: https://github.com/envoyproxy/gateway/releases/tag/v${MAJOR_VERSION}.${MINOR_VERSION}.0 + ``` + +2. Send a message to the Envoy Gateway Slack channel. For example: + + ```shell + On behalf of the entire Envoy Gateway community, I am pleased to announce the release of Envoy Gateway + v${MAJOR_VERSION}.${MINOR_VERSION}. A big thank you to all the contributors that made this release possible. + Refer to the official v${MAJOR_VERSION}.${MINOR_VERSION} announcement for release details and the project docs + to start using Envoy Gateway. + ... + ``` + + Link to the GitHub release and release announcement page that highlights the release. + +[release notes]: https://github.com/envoyproxy/gateway/tree/main/release-notes +[Pull Request]: https://github.com/envoyproxy/gateway/pulls +[Quickstart Guide]: https://github.com/envoyproxy/gateway/blob/main/docs/user/quickstart.md +[Build and Test]: https://github.com/envoyproxy/gateway/blob/main/.github/workflows/build_and_test.yaml +[release GitHub action]: https://github.com/envoyproxy/gateway/blob/main/.github/workflows/release.yaml +[release workflow]: https://github.com/envoyproxy/gateway/actions/workflows/release.yaml +[image]: https://hub.docker.com/r/envoyproxy/gateway/tags +[release]: https://github.com/envoyproxy/gateway/releases +[Generate]: https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes +[PR #635]: https://github.com/envoyproxy/gateway/pull/635 +[PR #958]: https://github.com/envoyproxy/gateway/pull/958 +[PR #1002]: https://github.com/envoyproxy/gateway/pull/1002 +[VERSION]: https://github.com/envoyproxy/gateway/blob/main/VERSION diff --git a/site/content/en/v0.2.0/contributions/_index.md b/site/content/en/v0.2.0/contributions/_index.md new file mode 100644 index 000000000000..3255d996472a --- /dev/null +++ b/site/content/en/v0.2.0/contributions/_index.md @@ -0,0 +1,5 @@ +--- +title: Get Involved +description: "This section includes contents related to **Contributions**" +weight: 100 +--- diff --git a/site/content/en/docs/v0.2.0/design/_index.md b/site/content/en/v0.2.0/design/_index.md similarity index 100% rename from site/content/en/docs/v0.2.0/design/_index.md rename to site/content/en/v0.2.0/design/_index.md diff --git a/site/content/en/docs/v0.2.0/design/config-api.md b/site/content/en/v0.2.0/design/config-api.md similarity index 100% rename from site/content/en/docs/v0.2.0/design/config-api.md rename to site/content/en/v0.2.0/design/config-api.md diff --git a/site/content/en/docs/v0.2.0/design/gatewayapi-translator.md b/site/content/en/v0.2.0/design/gatewayapi-translator.md similarity index 100% rename from site/content/en/docs/v0.2.0/design/gatewayapi-translator.md rename to site/content/en/v0.2.0/design/gatewayapi-translator.md diff --git a/site/content/en/GOALS.md b/site/content/en/v0.2.0/design/goals.md similarity index 99% rename from site/content/en/GOALS.md rename to site/content/en/v0.2.0/design/goals.md index be4bdb76f6bc..fd38b2004c61 100644 --- a/site/content/en/GOALS.md +++ b/site/content/en/v0.2.0/design/goals.md @@ -1,8 +1,8 @@ --- title: "Goals" +weight: 1 --- - The high-level goal of the Envoy Gateway project is to attract more users to Envoy by lowering barriers to adoption through expressive, extensible, role-oriented APIs that support a multitude of ingress and L7/L4 traffic routing use cases; and provide a common foundation for vendors to build value-added products without having to re-engineer @@ -11,6 +11,7 @@ fundamental interactions. ## Objectives ### Expressive API + The Envoy Gateway project will expose a simple and expressive API, with defaults set for many capabilities. The API will be the Kubernetes-native [Gateway API][], plus Envoy-specific extensions and extension points. This @@ -26,6 +27,7 @@ This expressive API will not be implemented by Envoy Proxy, but rather an offici on top. ### Batteries included + Envoy Gateway will simplify how Envoy is deployed and managed, allowing application developers to focus on delivering core business value. @@ -40,6 +42,7 @@ will enjoy a simplified management model that doesn't require extensive knowledg operate. ### All environments + Envoy Gateway will support running natively in Kubernetes environments as well as non-Kubernetes deployments. Initially, Kubernetes will receive the most focus, with the aim of having Envoy Gateway become the de facto @@ -47,6 +50,7 @@ standard for Kubernetes ingress supporting the [Gateway API][]. Additional goals include multi-cluster support and various runtime environments. ### Extensibility + Vendors will have the ability to provide value-added products built on the Envoy Gateway foundation. It will remain easy for end-users to leverage common Envoy Proxy extension points such as providing an implementation @@ -60,21 +64,26 @@ allowing vendors to shift to a higher management plane layer. ## Non-objectives ### Cannibalize vendor models + Vendors need to have the ability to drive commercial value, so the goal is not to cannibalize any existing vendor monetization model, though some vendors may be affected by it. ### Disrupt current Envoy usage patterns + Envoy Gateway is purely an additive convenience layer and is not meant to disrupt any usage pattern of any user with Envoy Proxy, xDS, or go-control-plane. ## Personas + _In order of priority_ ### 1. Application developer + The application developer spends the majority of their time developing business logic code. They require the ability to manage access to their application. ### 2. Infrastructure administrators + The infrastructure administrators are responsible for the installation, maintenance, and operation of API gateways appliances in infrastructure, such as CRDs, roles, service accounts, certificates, etc. Infrastructure administrators support the needs of application developers by managing instances of Envoy Gateway. diff --git a/site/content/en/docs/v0.2.0/design/roadmap.md b/site/content/en/v0.2.0/design/roadmap.md similarity index 100% rename from site/content/en/docs/v0.2.0/design/roadmap.md rename to site/content/en/v0.2.0/design/roadmap.md diff --git a/site/content/en/docs/v0.2.0/design/system-design.md b/site/content/en/v0.2.0/design/system-design.md similarity index 100% rename from site/content/en/docs/v0.2.0/design/system-design.md rename to site/content/en/v0.2.0/design/system-design.md diff --git a/site/content/en/docs/v0.2.0/design/watching.md b/site/content/en/v0.2.0/design/watching.md similarity index 100% rename from site/content/en/docs/v0.2.0/design/watching.md rename to site/content/en/v0.2.0/design/watching.md diff --git a/site/content/en/docs/v0.2.0/images/architecture.png b/site/content/en/v0.2.0/images/architecture.png similarity index 100% rename from site/content/en/docs/v0.2.0/images/architecture.png rename to site/content/en/v0.2.0/images/architecture.png diff --git a/site/content/en/docs/v0.2.0/user/_index.md b/site/content/en/v0.2.0/user/_index.md similarity index 100% rename from site/content/en/docs/v0.2.0/user/_index.md rename to site/content/en/v0.2.0/user/_index.md diff --git a/site/content/en/docs/v0.2.0/user/http-redirect.md b/site/content/en/v0.2.0/user/http-redirect.md similarity index 100% rename from site/content/en/docs/v0.2.0/user/http-redirect.md rename to site/content/en/v0.2.0/user/http-redirect.md diff --git a/site/content/en/docs/v0.2.0/user/http-request-headers.md b/site/content/en/v0.2.0/user/http-request-headers.md similarity index 100% rename from site/content/en/docs/v0.2.0/user/http-request-headers.md rename to site/content/en/v0.2.0/user/http-request-headers.md diff --git a/site/content/en/docs/v0.2.0/user/http-routing.md b/site/content/en/v0.2.0/user/http-routing.md similarity index 100% rename from site/content/en/docs/v0.2.0/user/http-routing.md rename to site/content/en/v0.2.0/user/http-routing.md diff --git a/site/content/en/docs/v0.2.0/user/http-traffic-splitting.md b/site/content/en/v0.2.0/user/http-traffic-splitting.md similarity index 100% rename from site/content/en/docs/v0.2.0/user/http-traffic-splitting.md rename to site/content/en/v0.2.0/user/http-traffic-splitting.md diff --git a/site/content/en/docs/v0.2.0/user/quickstart.md b/site/content/en/v0.2.0/user/quickstart.md similarity index 100% rename from site/content/en/docs/v0.2.0/user/quickstart.md rename to site/content/en/v0.2.0/user/quickstart.md diff --git a/site/content/en/docs/v0.2.0/user/secure-gateways.md b/site/content/en/v0.2.0/user/secure-gateways.md similarity index 100% rename from site/content/en/docs/v0.2.0/user/secure-gateways.md rename to site/content/en/v0.2.0/user/secure-gateways.md diff --git a/site/content/en/docs/v0.2.0/user/tls-passthrough.md b/site/content/en/v0.2.0/user/tls-passthrough.md similarity index 100% rename from site/content/en/docs/v0.2.0/user/tls-passthrough.md rename to site/content/en/v0.2.0/user/tls-passthrough.md diff --git a/site/content/en/docs/v0.3.0/_index.md b/site/content/en/v0.3.0/_index.md similarity index 67% rename from site/content/en/docs/v0.3.0/_index.md rename to site/content/en/v0.3.0/_index.md index 35bb3ad518fb..3772c64b1ccc 100644 --- a/site/content/en/docs/v0.3.0/_index.md +++ b/site/content/en/v0.3.0/_index.md @@ -1,8 +1,10 @@ ---- -title: "Welcome to Envoy Gateway" -description: v0.3.0 version of Envoy Gateway -linktitle: v0.3.0 ---- ++++ +title = "Welcome to Envoy Gateway" +description = "Envoy Gateway Documents" + +[[cascade]] +type = "docs" ++++ Envoy Gateway is an open source project for managing **Envoy Proxy** as a standalone or Kubernetes-based application gateway. **Gateway API** resources are used to dynamically provision and configure the managed Envoy Proxies. diff --git a/site/content/en/docs/v0.5.0/api/_index.md b/site/content/en/v0.3.0/api/_index.md similarity index 87% rename from site/content/en/docs/v0.5.0/api/_index.md rename to site/content/en/v0.3.0/api/_index.md index 1d7c67c8c151..396d9ffcefcf 100644 --- a/site/content/en/docs/v0.5.0/api/_index.md +++ b/site/content/en/v0.3.0/api/_index.md @@ -1,4 +1,5 @@ --- title: "API" description: This section includes APIs of Envoy Gateway. +weight: 80 --- diff --git a/site/content/en/docs/v0.3.0/api/config_types.md b/site/content/en/v0.3.0/api/config_types.md similarity index 100% rename from site/content/en/docs/v0.3.0/api/config_types.md rename to site/content/en/v0.3.0/api/config_types.md diff --git a/site/content/en/docs/v0.3.0/api/extension_types.md b/site/content/en/v0.3.0/api/extension_types.md similarity index 100% rename from site/content/en/docs/v0.3.0/api/extension_types.md rename to site/content/en/v0.3.0/api/extension_types.md diff --git a/site/content/en/v0.3.0/contributions/CODEOWNERS.md b/site/content/en/v0.3.0/contributions/CODEOWNERS.md new file mode 100644 index 000000000000..9e596002bb33 --- /dev/null +++ b/site/content/en/v0.3.0/contributions/CODEOWNERS.md @@ -0,0 +1,18 @@ +--- +title: "Maintainers" +--- + +## The following maintainers, listed in alphabetical order, own everything + +- @AliceProxy +- @arkodg +- @Xunzhuo +- @zirain +- @qicz + +## Emeritus Maintainers + +- @danehans +- @alexgervais +- @skriss +- @youngnick diff --git a/site/content/en/v0.3.0/contributions/CODE_OF_CONDUCT.md b/site/content/en/v0.3.0/contributions/CODE_OF_CONDUCT.md new file mode 100644 index 000000000000..1f17c0889458 --- /dev/null +++ b/site/content/en/v0.3.0/contributions/CODE_OF_CONDUCT.md @@ -0,0 +1,5 @@ +--- +title: "Code of Conduct" +--- + +Gateway follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). diff --git a/site/content/en/v0.3.0/contributions/CONTRIBUTING.md b/site/content/en/v0.3.0/contributions/CONTRIBUTING.md new file mode 100644 index 000000000000..21dcd9a1941a --- /dev/null +++ b/site/content/en/v0.3.0/contributions/CONTRIBUTING.md @@ -0,0 +1,189 @@ +--- +title: "Contributing" +weight: 3 +--- + +We welcome contributions from the community. Please carefully review the [project goals](GOALS.md) +and following guidelines to streamline your contributions. + +## Communication + +* Before starting work on a major feature, please contact us via GitHub or Slack. We will ensure no + one else is working on it and ask you to open a GitHub issue. +* A "major feature" is defined as any change that is > 100 LOC altered (not including tests), or + changes any user-facing behavior. We will use the GitHub issue to discuss the feature and come to + agreement. This is to prevent your time being wasted, as well as ours. The GitHub review process + for major features is also important so that [affiliations with commit access](CODEOWNERS.md) can + come to agreement on the design. If it's appropriate to write a design document, the document must + be hosted either in the GitHub issue, or linked to from the issue and hosted in a world-readable + location. +* Small patches and bug fixes don't need prior communication. + +## Inclusivity + +The Envoy Gateway community has an explicit goal to be inclusive to all. As such, all PRs must adhere +to the following guidelines for all code, APIs, and documentation: + +* The following words and phrases are not allowed: + * *Whitelist*: use allowlist instead. + * *Blacklist*: use denylist or blocklist instead. + * *Master*: use primary instead. + * *Slave*: use secondary or replica instead. +* Documentation should be written in an inclusive style. The [Google developer + documentation](https://developers.google.com/style/inclusive-documentation) contains an excellent + reference on this topic. +* The above policy is not considered definitive and may be amended in the future as industry best + practices evolve. Additional comments on this topic may be provided by maintainers during code + review. + +## Submitting a PR + +* Fork the repo. +* Hack +* DCO sign-off each commit. This can be done with `git commit -s`. +* Submit your PR. +* Tests will automatically run for you. +* We will **not** merge any PR that is not passing tests. +* PRs are expected to have 100% test coverage for added code. This can be verified with a coverage + build. If your PR cannot have 100% coverage for some reason please clearly explain why when you + open it. +* Any PR that changes user-facing behavior **must** have associated documentation in the [docs](https://github.com/envoyproxy/gateway/tree/main/docs) folder of the repo as + well as the [changelog](../releases). +* All code comments and documentation are expected to have proper English grammar and punctuation. + If you are not a fluent English speaker (or a bad writer ;-)) please let us know and we will try + to find some help but there are no guarantees. +* Your PR title should be descriptive, and generally start with type that contains a subsystem name with `()` if necessary + and summary followed by a colon. format `chore/docs/feat/fix/refactor/style/test: summary`. + Examples: + * "docs: fix grammar error" + * "feat(translator): add new feature" + * "fix: fix xx bug" + * "chore: change ci & build tools etc" +* Your PR commit message will be used as the commit message when your PR is merged. You should + update this field if your PR diverges during review. +* Your PR description should have details on what the PR does. If it fixes an existing issue it + should end with "Fixes #XXX". +* If your PR is co-authored or based on an earlier PR from another contributor, + please attribute them with `Co-authored-by: name `. See + GitHub's [multiple author + guidance](https://help.github.com/en/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors) + for further details. +* When all tests are passing and all other conditions described herein are satisfied, a maintainer + will be assigned to review and merge the PR. +* Once you submit a PR, *please do not rebase it*. It's much easier to review if subsequent commits + are new commits and/or merges. We squash and merge so the number of commits you have in the PR + doesn't matter. +* We expect that once a PR is opened, it will be actively worked on until it is merged or closed. + We reserve the right to close PRs that are not making progress. This is generally defined as no + changes for 7 days. Obviously PRs that are closed due to lack of activity can be reopened later. + Closing stale PRs helps us to keep on top of all the work currently in flight. + +## Maintainer PR Review Policy + +* See [CODEOWNERS.md](CODEOWNERS.md) for the current list of maintainers. +* A maintainer representing a different affiliation from the PR owner is required to review and + approve the PR. +* When the project matures, it is expected that a "domain expert" for the code the PR touches should + review the PR. This person does not require commit access, just domain knowledge. +* The above rules may be waived for PRs which only update docs or comments, or trivial changes to + tests and tools (where trivial is decided by the maintainer in question). +* If there is a question on who should review a PR please discuss in Slack. +* Anyone is welcome to review any PR that they want, whether they are a maintainer or not. +* Please make sure that the PR title, commit message, and description are updated if the PR changes + significantly during review. +* Please **clean up the title and body** before merging. By default, GitHub fills the squash merge + title with the original title, and the commit body with every individual commit from the PR. + The maintainer doing the merge should make sure the title follows the guidelines above and should + overwrite the body with the original commit message from the PR (cleaning it up if necessary) + while preserving the PR author's final DCO sign-off. + +## Decision making + +This is a new and complex project, and we need to make a lot of decisions very quickly. +To this end, we've settled on this process for making (possibly contentious) decisions: + +* For decisions that need a record, we create an issue. +* In that issue, we discuss opinions, then a maintainer can call for a vote in a comment. +* Maintainers can cast binding votes on that comment by reacting or replying in another comment. +* Non-maintainer community members are welcome to cast non-binding votes by either of these methods. +* Voting will be resolved by simple majority. +* In the event of deadlocks, the question will be put to steering instead. + +## DCO: Sign your work + +The sign-off is a simple line at the end of the explanation for the +patch, which certifies that you wrote it or otherwise have the right to +pass it on as an open-source patch. The rules are pretty simple: if you +can certify the below (from +[developercertificate.org](https://developercertificate.org/)): + +``` +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +then you just add a line to every git commit message: + + Signed-off-by: Joe Smith + +using your real name (sorry, no pseudonyms or anonymous contributions.) + +You can add the sign-off when creating the git commit via `git commit -s`. + +If you want this to be automatic you can set up some aliases: + +```bash +git config --add alias.amend "commit -s --amend" +git config --add alias.c "commit -s" +``` + +## Fixing DCO + +If your PR fails the DCO check, it's necessary to fix the entire commit history in the PR. Best +practice is to [squash](https://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) +the commit history to a single commit, append the DCO sign-off as described above, and [force +push](https://git-scm.com/docs/git-push#git-push---force). For example, if you have 2 commits in +your history: + +```bash +git rebase -i HEAD^^ +(interactive squash + DCO append) +git push origin -f +``` + +Note, that in general rewriting history in this way is a hindrance to the review process and this +should only be done to correct a DCO mistake. diff --git a/site/content/en/v0.3.0/contributions/DEVELOP.md b/site/content/en/v0.3.0/contributions/DEVELOP.md new file mode 100644 index 000000000000..a6fd3846f565 --- /dev/null +++ b/site/content/en/v0.3.0/contributions/DEVELOP.md @@ -0,0 +1,162 @@ +--- +title: "Developer Guide" +weight: 2 +--- + +Envoy Gateway is built using a [make][]-based build system. Our CI is based on [Github Actions][] using [workflows][]. + +## Prerequisites + +### go + +* Version: 1.20 +* Installation Guide: https://go.dev/doc/install + +### make + +* Recommended Version: 4.0 or later +* Installation Guide: https://www.gnu.org/software/make + +### docker + +* Optional when you want to build a Docker image or run `make` inside Docker. +* Recommended Version: 20.10.16 +* Installation Guide: https://docs.docker.com/engine/install + +### python3 + +* Need a `python3` program +* Must have a functioning `venv` module; this is part of the standard + library, but some distributions (such as Debian and Ubuntu) replace + it with a stub and require you to install a `python3-venv` package + separately. + +## Quickstart + +* Run `make help` to see all the available targets to build, test and run Envoy Gateway. + +### Building + +* Run `make build` to build all the binaries. +* Run `make build BINS="envoy-gateway"` to build the Envoy Gateway binary. +* Run `make build BINS="egctl"` to build the egctl binary. + +__Note:__ The binaries get generated in the `bin/$OS/$ARCH` directory, for example, `bin/linux/amd64/`. + +### Testing + +* Run `make test` to run the golang tests. + +* Run `make testdata` to generate the golden YAML testdata files. + +### Running Linters + +* Run `make lint` to make sure your code passes all the linter checks. +__Note:__ The `golangci-lint` configuration resides [here](https://github.com/envoyproxy/gateway/blob/main/tools/linter/golangci-lint/.golangci.yml). + +### Building and Pushing the Image + +* Run `IMAGE=docker.io/you/gateway-dev make image` to build the docker image. +* Run `IMAGE=docker.io/you/gateway-dev make push-multiarch` to build and push the multi-arch docker image. + +__Note:__ Replace `IMAGE` with your registry's image name. + +### Deploying Envoy Gateway for Test/Dev + +* Run `make create-cluster` to create a [Kind][] cluster. + +#### Option 1: Use the Latest [gateway-dev][] Image + +* Run `TAG=latest make kube-deploy` to deploy Envoy Gateway in the Kind cluster using the latest image. Replace `latest` + to use a different image tag. + +#### Option 2: Use a Custom Image + +* Run `make kube-install-image` to build an image from the tip of your current branch and load it in the Kind cluster. +* Run `IMAGE_PULL_POLICY=IfNotPresent make kube-deploy` to install Envoy Gateway into the Kind cluster using your custom image. + +### Deploying Envoy Gateway in Kubernetes + +* Run `TAG=latest make kube-deploy` to deploy Envoy Gateway using the latest image into a Kubernetes cluster (linked to + the current kube context). Preface the command with `IMAGE` or replace `TAG` to use a different Envoy Gateway image or + tag. +* Run `make kube-undeploy` to uninstall Envoy Gateway from the cluster. + +__Note:__ Envoy Gateway is tested against Kubernetes v1.24.0. + +### Demo Setup + +* Run `make kube-demo` to deploy a demo backend service, gatewayclass, gateway and httproute resource +(similar to steps outlined in the [Quickstart][] docs) and test the configuration. +* Run `make kube-demo-undeploy` to delete the resources created by the `make kube-demo` command. + +### Run Gateway API Conformance Tests + +The commands below deploy Envoy Gateway to a Kubernetes cluster and run the Gateway API conformance tests. Refer to the +Gateway API [conformance homepage][] to learn more about the tests. If Envoy Gateway is already installed, run +`TAG=latest make run-conformance` to run the conformance tests. + +#### On a Linux Host + +* Run `TAG=latest make conformance` to create a Kind cluster, install Envoy Gateway using the latest [gateway-dev][] + image, and run Gateway API conformance tests. + +#### On a Mac Host + +Since Mac doesn't support [directly exposing][] the Docker network to the Mac host, use one of the following +workarounds to run conformance tests: + +* Deploy your own Kubernetes cluster or use Docker Desktop with [Kubernetes support][] and then run + `TAG=latest make kube-deploy run-conformance`. This will install Envoy Gateway using the latest [gateway-dev][] image + to the Kubernetes cluster using the current kubectl context and run the conformance tests. Use `make kube-undeploy` to + uninstall Envoy Gateway. +* Install and run [Docker Mac Net Connect][mac_connect] and then run `TAG=latest make conformance`. + +__Note:__ Preface commands with `IMAGE` or replace `TAG` to use a different Envoy Gateway image or tag. If `TAG` +is unspecified, the short SHA of your current branch is used. + +### Debugging the Envoy Config + +An easy way to view the envoy config that Envoy Gateway is using is to port-forward to the admin interface port +(currently `19000`) on the Envoy deployment that corresponds to a Gateway so that it can be accessed locally. + +Get the name of the Envoy deployment. The following example is for Gateway `eg` in the `default` namespace: + +```shell +export ENVOY_DEPLOYMENT=$(kubectl get deploy -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg -o jsonpath='{.items[0].metadata.name}') +``` + +Port forward the admin interface port: + +```shell +kubectl port-forward deploy/${ENVOY_DEPLOYMENT} -n envoy-gateway-system 19000:19000 +``` + +Now you are able to view the running Envoy configuration by navigating to `127.0.0.1:19000/config_dump`. + +There are many other endpoints on the [Envoy admin interface][] that may be helpful when debugging. + +### JWT Testing + +An example [JSON Web Token (JWT)][jwt] and [JSON Web Key Set (JWKS)][jwks] are used for the [request authentication][] +user guide. The JWT was created by the [JWT Debugger][], using the `RS256` algorithm. The public key from the JWTs +verify signature was copied to [JWK Creator][] for generating the JWK. The JWK Creator was configured with matching +settings, i.e. `Signing` public key use and the `RS256` algorithm. The generated JWK was wrapped in a JWKS structure +and is hosted in the repo. + +[Quickstart]: https://github.com/envoyproxy/gateway/blob/main/docs/latest/user/quickstart.md +[make]: https://www.gnu.org/software/make/ +[Github Actions]: https://docs.github.com/en/actions +[workflows]: https://github.com/envoyproxy/gateway/tree/main/.github/workflows +[Kind]: https://kind.sigs.k8s.io/ +[conformance homepage]: https://gateway-api.sigs.k8s.io/concepts/conformance/ +[directly exposing]: https://kind.sigs.k8s.io/docs/user/loadbalancer/ +[Kubernetes support]: https://docs.docker.com/desktop/kubernetes/ +[gateway-dev]: https://hub.docker.com/r/envoyproxy/gateway-dev/tags +[mac_connect]: https://github.com/chipmk/docker-mac-net-connect +[Envoy admin interface]: https://www.envoyproxy.io/docs/envoy/latest/operations/admin#operations-admin-interface +[jwt]: https://tools.ietf.org/html/rfc7519 +[jwks]: https://tools.ietf.org/html/rfc7517 +[request authentication]: https://gateway.envoyproxy.io/latest/user/authn.html +[JWT Debugger]: https://jwt.io/ +[JWK Creator]: https://russelldavies.github.io/jwk-creator/ diff --git a/site/content/en/v0.3.0/contributions/DOCS.md b/site/content/en/v0.3.0/contributions/DOCS.md new file mode 100644 index 000000000000..1abae95763c5 --- /dev/null +++ b/site/content/en/v0.3.0/contributions/DOCS.md @@ -0,0 +1,65 @@ +--- +title: "Working on the Envoy Gateway Docs" +--- + +The documentation for the Envoy Gateway lives in the `docs/` directory. Any +individual document can be written using either [reStructuredText] or [Markdown], +you can choose the format that you're most comfortable with when working on the +documentation. + +## Documentation Structure + +We supported the versioned Docs now, the directory name under docs represents +the version of docs. The root of the latest site is in `docs/latest/index.rst`. +This is probably where to start if you're trying to understand how things fit together. + +Note that the new contents should be added to `docs/latest` and will be cut off at +the next release. The contents under `docs/v0.2.0` are auto-generated, +and usually do not need to make changes to them, unless if you find the current release pages have +some incorrect contents. If so, you should send a PR to update contents both of `docs/latest` +and `docs/v0.2.0`. + +It's important to note that a given document _must_ have a reference in some +`.. toctree::` section for the document to be reachable. Not everything needs +to be in `docs/index.rst`'s `toctree` though. + +You can access the website which represents the current release in default, +and you can access the website which contains the latest version changes in +[Here][latest-website] or at the footer of the pages. + +## Documentation Workflow + +To work with the docs, just edit reStructuredText or Markdown files in `docs`, +then run + +```bash +make docs +``` + +This will create `docs/html` with the built HTML pages. You can view the docs +either simply by pointing a web browser at the `file://` path to your +`docs/html`, or by firing up a static webserver from that directory, e.g. + +``` shell +make docs-serve +``` + +If you want to generate a new release version of the docs, like `v0.3.0`, then run + +```bash +make docs-release TAG=v0.3.0 +``` + +This will update the VERSION file at the project root, which records current release version, +and it will be used in the pages version context and binary version output. Also, this will generate +new dir `docs/v0.3.0`, which contains docs at v0.3.0 and updates artifact links to `v0.3.0` +in all files under `docs/v0.3.0/user`, like `quickstart.md`, `http-routing.md` and etc. + +## Publishing Docs + +Whenever docs are pushed to `main`, CI will publish the built docs to GitHub +Pages. For more details, see `.github/workflows/docs.yaml`. + +[reStructuredText]: https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html +[Markdown]: https://daringfireball.net/projects/markdown/syntax +[latest-website]: https://gateway.envoyproxy.io/latest diff --git a/site/content/en/v0.3.0/contributions/RELEASING.md b/site/content/en/v0.3.0/contributions/RELEASING.md new file mode 100644 index 000000000000..617baf1933e0 --- /dev/null +++ b/site/content/en/v0.3.0/contributions/RELEASING.md @@ -0,0 +1,230 @@ +--- +title: "Release Process" +--- + +This document guides maintainers through the process of creating an Envoy Gateway release. + +- [Release Candidate](#release-candidate) +- [Minor Release](#minor-release) +- [Announce the Release](#announce-the-release) + +## Release Candidate + +The following steps should be used for creating a release candidate. + +### Prerequisites + +- Permissions to push to the Envoy Gateway repository. + +Set environment variables for use in subsequent steps: + +```shell +export MAJOR_VERSION=0 +export MINOR_VERSION=3 +export RELEASE_CANDIDATE_NUMBER=1 +export GITHUB_REMOTE=origin +``` + +1. Clone the repo, checkout the `main` branch, ensure it’s up-to-date, and your local branch is clean. +2. Create a topic branch for adding the release notes and updating the [VERSION][] file with the release version. Refer to previous [release notes][] and [VERSION][] for additional details. +3. Sign, commit, and push your changes to your fork. +4. Submit a [Pull Request][] to merge the changes into the `main` branch. Do not proceed until your PR has merged and + the [Build and Test][] has successfully completed. +5. Create a new release branch from `main`. The release branch should be named + `release/v${MAJOR_VERSION}.${MINOR_VERSION}`, e.g. `release/v0.3`. + + ```shell + git checkout -b release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +6. Push the branch to the Envoy Gateway repo. + + ```shell + git push ${GITHUB_REMOTE} release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +7. Create a topic branch for updating the Envoy proxy image to the tag supported by the release. Reference [PR #958][] + for additional details on updating the image tag. +8. Sign, commit, and push your changes to your fork. +9. Submit a [Pull Request][] to merge the changes into the `release/v${MAJOR_VERSION}.${MINOR_VERSION}` branch. Do not + proceed until your PR has merged into the release branch and the [Build and Test][] has completed for your PR. +10. Ensure your release branch is up-to-date and tag the head of your release branch with the release candidate number. + + ```shell + git tag -a v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} -m 'Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} Release Candidate' + ``` + +11. Push the tag to the Envoy Gateway repository. + + ```shell + git push ${GITHUB_REMOTE} v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} + ``` + +12. This will trigger the [release GitHub action][] that generates the release, release artifacts, etc. +13. Confirm that the [release workflow][] completed successfully. +14. Confirm that the Envoy Gateway [image][] with the correct release tag was published to Docker Hub. +15. Confirm that the [release][] was created. +16. Note that the [Quickstart Guide][] references are __not__ updated for release candidates. However, test + the quickstart steps using the release candidate by manually updating the links. +17. [Generate][] the GitHub changelog. +18. Ensure you check the "This is a pre-release" checkbox when editing the GitHub release. +19. If you find any bugs in this process, please create an issue. + +### Setup cherry picker action + +After release branch cut, RM (Release Manager) should add job [cherrypick action](../../../.github/workflows/cherrypick.yaml) for target release. + +Configuration looks like following: + +```yaml + cherry_pick_release_v0_4: + runs-on: ubuntu-latest + name: Cherry pick into release-v0.4 + if: ${{ contains(github.event.pull_request.labels.*.name, 'cherrypick/release-v0.4') && github.event.pull_request.merged == true }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Cherry pick into release/v0.4 + uses: carloscastrojumo/github-cherry-pick-action@v1.0.9 + with: + branch: release/v0.4 + title: "[release/v0.4] {old_title}" + body: "Cherry picking #{old_pull_request_id} onto release/v0.4" + labels: | + cherrypick/release-v0.4 + # put release manager here + reviewers: | + AliceProxy +``` + +Replace `v0.4` with real branch name, and `AliceProxy` with the real name of RM. + +## Minor Release + +The following steps should be used for creating a minor release. + +### Prerequisites + +- Permissions to push to the Envoy Gateway repository. +- A release branch that has been cut from the corresponding release candidate. Refer to the + [Release Candidate](#release-candidate) section for additional details on cutting a release candidate. + +Set environment variables for use in subsequent steps: + +```shell +export MAJOR_VERSION=0 +export MINOR_VERSION=3 +export GITHUB_REMOTE=origin +``` + +1. Clone the repo, checkout the `main` branch, ensure it’s up-to-date, and your local branch is clean. +2. Create a topic branch for adding the release notes, release announcement, and versioned release docs. + + 1. Create the release notes. Reference previous [release notes][] for additional details. __Note:__ The release + notes should be an accumulation of the release candidate release notes and any changes since the release + candidate. + 2. Create a release announcement. Refer to [PR #635] as an example release announcement. + 3. Include the release in the compatibility matrix. Refer to [PR #1002] as an example. + 4. Generate the versioned release docs: + + ``` shell + make docs-release TAG=v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +3. Sign, commit, and push your changes to your fork. +4. Submit a [Pull Request][] to merge the changes into the `main` branch. Do not proceed until all your PRs have merged + and the [Build and Test][] has completed for your final PR. + +5. Checkout the release branch. + + ```shell + git checkout -b release/v${MAJOR_VERSION}.${MINOR_VERSION} $GITHUB_REMOTE/release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +6. If the tip of the release branch does not match the tip of `main`, perform the following: + + 1. Create a topic branch from the release branch. + 2. Cherry-pick the commits from `main` that differ from the release branch. + 3. Run tests locally, e.g. `make lint`. + 4. Sign, commit, and push your topic branch to your Envoy Gateway fork. + 5. Submit a PR to merge the topic from of your fork into the Envoy Gateway release branch. + 6. Do not proceed until the PR has merged and CI passes for the merged PR. + 7. If you are still on your topic branch, change to the release branch: + + ```shell + git checkout release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + + 8. Ensure your local release branch is up-to-date: + + ```shell + git pull $GITHUB_REMOTE release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +7. Tag the head of your release branch with the release tag. For example: + + ```shell + git tag -a v${MAJOR_VERSION}.${MINOR_VERSION}.0 -m 'Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION}.0 Release' + ``` + + __Note:__ The tag version differs from the release branch by including the `.0` patch version. + +8. Push the tag to the Envoy Gateway repository. + + ```shell + git push origin v${MAJOR_VERSION}.${MINOR_VERSION}.0 + ``` + +9. This will trigger the [release GitHub action][] that generates the release, release artifacts, etc. +10. Confirm that the [release workflow][] completed successfully. +11. Confirm that the Envoy Gateway [image][] with the correct release tag was published to Docker Hub. +12. Confirm that the [release][] was created. +13. Confirm that the steps in the [Quickstart Guide][] work as expected. +14. [Generate][] the GitHub changelog and include the following text at the beginning of the release page: + + ```console + # Release Announcement + + Check out the [v${MAJOR_VERSION}.${MINOR_VERSION} release announcement] + (https://gateway.envoyproxy.io/releases/v${MAJOR_VERSION}.${MINOR_VERSION}.html) to learn more about the release. + ``` + +If you find any bugs in this process, please create an issue. + +## Announce the Release + +It's important that the world knows about the release. Use the following steps to announce the release. + +1. Set the release information in the Envoy Gateway Slack channel. For example: + + ```shell + Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION} has been released: https://github.com/envoyproxy/gateway/releases/tag/v${MAJOR_VERSION}.${MINOR_VERSION}.0 + ``` + +2. Send a message to the Envoy Gateway Slack channel. For example: + + ```shell + On behalf of the entire Envoy Gateway community, I am pleased to announce the release of Envoy Gateway + v${MAJOR_VERSION}.${MINOR_VERSION}. A big thank you to all the contributors that made this release possible. + Refer to the official v${MAJOR_VERSION}.${MINOR_VERSION} announcement for release details and the project docs + to start using Envoy Gateway. + ... + ``` + + Link to the GitHub release and release announcement page that highlights the release. + +[release notes]: https://github.com/envoyproxy/gateway/tree/main/release-notes +[Pull Request]: https://github.com/envoyproxy/gateway/pulls +[Quickstart Guide]: https://github.com/envoyproxy/gateway/blob/main/docs/user/quickstart.md +[Build and Test]: https://github.com/envoyproxy/gateway/blob/main/.github/workflows/build_and_test.yaml +[release GitHub action]: https://github.com/envoyproxy/gateway/blob/main/.github/workflows/release.yaml +[release workflow]: https://github.com/envoyproxy/gateway/actions/workflows/release.yaml +[image]: https://hub.docker.com/r/envoyproxy/gateway/tags +[release]: https://github.com/envoyproxy/gateway/releases +[Generate]: https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes +[PR #635]: https://github.com/envoyproxy/gateway/pull/635 +[PR #958]: https://github.com/envoyproxy/gateway/pull/958 +[PR #1002]: https://github.com/envoyproxy/gateway/pull/1002 +[VERSION]: https://github.com/envoyproxy/gateway/blob/main/VERSION diff --git a/site/content/en/v0.3.0/contributions/_index.md b/site/content/en/v0.3.0/contributions/_index.md new file mode 100644 index 000000000000..3255d996472a --- /dev/null +++ b/site/content/en/v0.3.0/contributions/_index.md @@ -0,0 +1,5 @@ +--- +title: Get Involved +description: "This section includes contents related to **Contributions**" +weight: 100 +--- diff --git a/site/content/en/docs/v0.3.0/design/_index.md b/site/content/en/v0.3.0/design/_index.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/_index.md rename to site/content/en/v0.3.0/design/_index.md diff --git a/site/content/en/docs/v0.3.0/design/config-api.md b/site/content/en/v0.3.0/design/config-api.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/config-api.md rename to site/content/en/v0.3.0/design/config-api.md diff --git a/site/content/en/docs/v0.3.0/design/egctl.md b/site/content/en/v0.3.0/design/egctl.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/egctl.md rename to site/content/en/v0.3.0/design/egctl.md diff --git a/site/content/en/docs/v0.3.0/design/gatewayapi-support.md b/site/content/en/v0.3.0/design/gatewayapi-support.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/gatewayapi-support.md rename to site/content/en/v0.3.0/design/gatewayapi-support.md diff --git a/site/content/en/docs/v0.3.0/design/gatewayapi-translator.md b/site/content/en/v0.3.0/design/gatewayapi-translator.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/gatewayapi-translator.md rename to site/content/en/v0.3.0/design/gatewayapi-translator.md diff --git a/site/content/en/v0.3.0/design/goals.md b/site/content/en/v0.3.0/design/goals.md new file mode 100644 index 000000000000..fd38b2004c61 --- /dev/null +++ b/site/content/en/v0.3.0/design/goals.md @@ -0,0 +1,91 @@ +--- +title: "Goals" +weight: 1 +--- + +The high-level goal of the Envoy Gateway project is to attract more users to Envoy by lowering barriers to adoption +through expressive, extensible, role-oriented APIs that support a multitude of ingress and L7/L4 traffic routing +use cases; and provide a common foundation for vendors to build value-added products without having to re-engineer +fundamental interactions. + +## Objectives + +### Expressive API + +The Envoy Gateway project will expose a simple and expressive API, with defaults set for many capabilities. + +The API will be the Kubernetes-native [Gateway API][], plus Envoy-specific extensions and extension points. This +expressive and familiar API will make Envoy accessible to more users, especially application developers, and make Envoy +a stronger option for "getting started" as compared to other proxies. Application developers will use the API out of +the box without needing to understand in-depth concepts of Envoy Proxy or use OSS wrappers. The API will use familiar +nouns that [users](#personas) understand. + +The core full-featured Envoy xDS APIs will remain available for those who need more capability and for those who +add functionality on top of Envoy Gateway, such as commercial API gateway products. + +This expressive API will not be implemented by Envoy Proxy, but rather an officially supported translation layer +on top. + +### Batteries included + +Envoy Gateway will simplify how Envoy is deployed and managed, allowing application developers to focus on +delivering core business value. + +The project plans to include additional infrastructure components required by users to fulfill their Ingress and API +gateway needs: It will handle Envoy infrastructure provisioning (e.g. Kubernetes Service, Deployment, et cetera), and +possibly infrastructure provisioning of related sidecar services. It will include sensible defaults with the ability to +override. It will include channels for improving ops by exposing status through API conditions and Kubernetes status +sub-resources. + +Making an application accessible needs to be a trivial task for any developer. Similarly, infrastructure administrators +will enjoy a simplified management model that doesn't require extensive knowledge of the solution's architecture to +operate. + +### All environments + +Envoy Gateway will support running natively in Kubernetes environments as well as non-Kubernetes deployments. + +Initially, Kubernetes will receive the most focus, with the aim of having Envoy Gateway become the de facto +standard for Kubernetes ingress supporting the [Gateway API][]. +Additional goals include multi-cluster support and various runtime environments. + +### Extensibility + +Vendors will have the ability to provide value-added products built on the Envoy Gateway foundation. + +It will remain easy for end-users to leverage common Envoy Proxy extension points such as providing an implementation +for authentication methods and rate-limiting. For advanced use cases, users will have the ability to use the full power +of xDS. + +Since a general-purpose API cannot address all use cases, Envoy Gateway will provide additional extension points +for flexibility. As such, Envoy Gateway will form the base of vendor-provided managed control plane solutions, +allowing vendors to shift to a higher management plane layer. + +## Non-objectives + +### Cannibalize vendor models + +Vendors need to have the ability to drive commercial value, so the goal is not to cannibalize any existing vendor +monetization model, though some vendors may be affected by it. + +### Disrupt current Envoy usage patterns + +Envoy Gateway is purely an additive convenience layer and is not meant to disrupt any usage pattern of any user +with Envoy Proxy, xDS, or go-control-plane. + +## Personas + +_In order of priority_ + +### 1. Application developer + +The application developer spends the majority of their time developing business logic code. They require the ability to +manage access to their application. + +### 2. Infrastructure administrators + +The infrastructure administrators are responsible for the installation, maintenance, and operation of +API gateways appliances in infrastructure, such as CRDs, roles, service accounts, certificates, etc. +Infrastructure administrators support the needs of application developers by managing instances of Envoy Gateway. + +[Gateway API]: https://gateway-api.sigs.k8s.io/ diff --git a/site/content/en/docs/v0.3.0/design/ratelimit.md b/site/content/en/v0.3.0/design/ratelimit.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/ratelimit.md rename to site/content/en/v0.3.0/design/ratelimit.md diff --git a/site/content/en/docs/v0.3.0/design/request-authentication.md b/site/content/en/v0.3.0/design/request-authentication.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/request-authentication.md rename to site/content/en/v0.3.0/design/request-authentication.md diff --git a/site/content/en/docs/v0.3.0/design/roadmap.md b/site/content/en/v0.3.0/design/roadmap.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/roadmap.md rename to site/content/en/v0.3.0/design/roadmap.md diff --git a/site/content/en/docs/v0.3.0/design/system-design.md b/site/content/en/v0.3.0/design/system-design.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/system-design.md rename to site/content/en/v0.3.0/design/system-design.md diff --git a/site/content/en/docs/v0.3.0/design/tcp-udp-design.md b/site/content/en/v0.3.0/design/tcp-udp-design.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/tcp-udp-design.md rename to site/content/en/v0.3.0/design/tcp-udp-design.md diff --git a/site/content/en/docs/v0.3.0/design/watching.md b/site/content/en/v0.3.0/design/watching.md similarity index 100% rename from site/content/en/docs/v0.3.0/design/watching.md rename to site/content/en/v0.3.0/design/watching.md diff --git a/site/content/en/docs/v0.3.0/images/architecture.png b/site/content/en/v0.3.0/images/architecture.png similarity index 100% rename from site/content/en/docs/v0.3.0/images/architecture.png rename to site/content/en/v0.3.0/images/architecture.png diff --git a/site/content/en/docs/v0.3.0/user/_index.md b/site/content/en/v0.3.0/user/_index.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/_index.md rename to site/content/en/v0.3.0/user/_index.md diff --git a/site/content/en/docs/v0.3.0/user/authn.md b/site/content/en/v0.3.0/user/authn.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/authn.md rename to site/content/en/v0.3.0/user/authn.md diff --git a/site/content/en/docs/v0.3.0/user/grpc-routing.md b/site/content/en/v0.3.0/user/grpc-routing.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/grpc-routing.md rename to site/content/en/v0.3.0/user/grpc-routing.md diff --git a/site/content/en/docs/v0.3.0/user/http-redirect.md b/site/content/en/v0.3.0/user/http-redirect.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/http-redirect.md rename to site/content/en/v0.3.0/user/http-redirect.md diff --git a/site/content/en/docs/v0.3.0/user/http-request-headers.md b/site/content/en/v0.3.0/user/http-request-headers.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/http-request-headers.md rename to site/content/en/v0.3.0/user/http-request-headers.md diff --git a/site/content/en/docs/v0.3.0/user/http-response-headers.md b/site/content/en/v0.3.0/user/http-response-headers.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/http-response-headers.md rename to site/content/en/v0.3.0/user/http-response-headers.md diff --git a/site/content/en/docs/v0.3.0/user/http-routing.md b/site/content/en/v0.3.0/user/http-routing.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/http-routing.md rename to site/content/en/v0.3.0/user/http-routing.md diff --git a/site/content/en/docs/v0.3.0/user/http-traffic-splitting.md b/site/content/en/v0.3.0/user/http-traffic-splitting.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/http-traffic-splitting.md rename to site/content/en/v0.3.0/user/http-traffic-splitting.md diff --git a/site/content/en/docs/v0.3.0/user/http-urlrewrite.md b/site/content/en/v0.3.0/user/http-urlrewrite.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/http-urlrewrite.md rename to site/content/en/v0.3.0/user/http-urlrewrite.md diff --git a/site/content/en/docs/v0.3.0/user/quickstart.md b/site/content/en/v0.3.0/user/quickstart.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/quickstart.md rename to site/content/en/v0.3.0/user/quickstart.md diff --git a/site/content/en/docs/v0.3.0/user/rate-limit.md b/site/content/en/v0.3.0/user/rate-limit.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/rate-limit.md rename to site/content/en/v0.3.0/user/rate-limit.md diff --git a/site/content/en/docs/v0.3.0/user/secure-gateways.md b/site/content/en/v0.3.0/user/secure-gateways.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/secure-gateways.md rename to site/content/en/v0.3.0/user/secure-gateways.md diff --git a/site/content/en/docs/v0.3.0/user/tcp-routing.md b/site/content/en/v0.3.0/user/tcp-routing.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/tcp-routing.md rename to site/content/en/v0.3.0/user/tcp-routing.md diff --git a/site/content/en/docs/v0.3.0/user/tls-passthrough.md b/site/content/en/v0.3.0/user/tls-passthrough.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/tls-passthrough.md rename to site/content/en/v0.3.0/user/tls-passthrough.md diff --git a/site/content/en/docs/v0.3.0/user/udp-routing.md b/site/content/en/v0.3.0/user/udp-routing.md similarity index 100% rename from site/content/en/docs/v0.3.0/user/udp-routing.md rename to site/content/en/v0.3.0/user/udp-routing.md diff --git a/site/content/en/docs/latest/_index.md b/site/content/en/v0.4.0/_index.md similarity index 66% rename from site/content/en/docs/latest/_index.md rename to site/content/en/v0.4.0/_index.md index bb29abe2d512..3772c64b1ccc 100644 --- a/site/content/en/docs/latest/_index.md +++ b/site/content/en/v0.4.0/_index.md @@ -1,9 +1,10 @@ ---- -title: "Welcome to Envoy Gateway" -description: latest version of Envoy Gateway -linktitle: latest -weight: 1 ---- ++++ +title = "Welcome to Envoy Gateway" +description = "Envoy Gateway Documents" + +[[cascade]] +type = "docs" ++++ Envoy Gateway is an open source project for managing **Envoy Proxy** as a standalone or Kubernetes-based application gateway. **Gateway API** resources are used to dynamically provision and configure the managed Envoy Proxies. diff --git a/site/content/en/docs/v0.4.0/api/_index.md b/site/content/en/v0.4.0/api/_index.md similarity index 87% rename from site/content/en/docs/v0.4.0/api/_index.md rename to site/content/en/v0.4.0/api/_index.md index 1d7c67c8c151..396d9ffcefcf 100644 --- a/site/content/en/docs/v0.4.0/api/_index.md +++ b/site/content/en/v0.4.0/api/_index.md @@ -1,4 +1,5 @@ --- title: "API" description: This section includes APIs of Envoy Gateway. +weight: 80 --- diff --git a/site/content/en/docs/v0.4.0/api/config_types.md b/site/content/en/v0.4.0/api/config_types.md similarity index 100% rename from site/content/en/docs/v0.4.0/api/config_types.md rename to site/content/en/v0.4.0/api/config_types.md diff --git a/site/content/en/docs/v0.4.0/api/extension_types.md b/site/content/en/v0.4.0/api/extension_types.md similarity index 100% rename from site/content/en/docs/v0.4.0/api/extension_types.md rename to site/content/en/v0.4.0/api/extension_types.md diff --git a/site/content/en/v0.4.0/contributions/CODEOWNERS.md b/site/content/en/v0.4.0/contributions/CODEOWNERS.md new file mode 100644 index 000000000000..9e596002bb33 --- /dev/null +++ b/site/content/en/v0.4.0/contributions/CODEOWNERS.md @@ -0,0 +1,18 @@ +--- +title: "Maintainers" +--- + +## The following maintainers, listed in alphabetical order, own everything + +- @AliceProxy +- @arkodg +- @Xunzhuo +- @zirain +- @qicz + +## Emeritus Maintainers + +- @danehans +- @alexgervais +- @skriss +- @youngnick diff --git a/site/content/en/v0.4.0/contributions/CODE_OF_CONDUCT.md b/site/content/en/v0.4.0/contributions/CODE_OF_CONDUCT.md new file mode 100644 index 000000000000..1f17c0889458 --- /dev/null +++ b/site/content/en/v0.4.0/contributions/CODE_OF_CONDUCT.md @@ -0,0 +1,5 @@ +--- +title: "Code of Conduct" +--- + +Gateway follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). diff --git a/site/content/en/v0.4.0/contributions/CONTRIBUTING.md b/site/content/en/v0.4.0/contributions/CONTRIBUTING.md new file mode 100644 index 000000000000..21dcd9a1941a --- /dev/null +++ b/site/content/en/v0.4.0/contributions/CONTRIBUTING.md @@ -0,0 +1,189 @@ +--- +title: "Contributing" +weight: 3 +--- + +We welcome contributions from the community. Please carefully review the [project goals](GOALS.md) +and following guidelines to streamline your contributions. + +## Communication + +* Before starting work on a major feature, please contact us via GitHub or Slack. We will ensure no + one else is working on it and ask you to open a GitHub issue. +* A "major feature" is defined as any change that is > 100 LOC altered (not including tests), or + changes any user-facing behavior. We will use the GitHub issue to discuss the feature and come to + agreement. This is to prevent your time being wasted, as well as ours. The GitHub review process + for major features is also important so that [affiliations with commit access](CODEOWNERS.md) can + come to agreement on the design. If it's appropriate to write a design document, the document must + be hosted either in the GitHub issue, or linked to from the issue and hosted in a world-readable + location. +* Small patches and bug fixes don't need prior communication. + +## Inclusivity + +The Envoy Gateway community has an explicit goal to be inclusive to all. As such, all PRs must adhere +to the following guidelines for all code, APIs, and documentation: + +* The following words and phrases are not allowed: + * *Whitelist*: use allowlist instead. + * *Blacklist*: use denylist or blocklist instead. + * *Master*: use primary instead. + * *Slave*: use secondary or replica instead. +* Documentation should be written in an inclusive style. The [Google developer + documentation](https://developers.google.com/style/inclusive-documentation) contains an excellent + reference on this topic. +* The above policy is not considered definitive and may be amended in the future as industry best + practices evolve. Additional comments on this topic may be provided by maintainers during code + review. + +## Submitting a PR + +* Fork the repo. +* Hack +* DCO sign-off each commit. This can be done with `git commit -s`. +* Submit your PR. +* Tests will automatically run for you. +* We will **not** merge any PR that is not passing tests. +* PRs are expected to have 100% test coverage for added code. This can be verified with a coverage + build. If your PR cannot have 100% coverage for some reason please clearly explain why when you + open it. +* Any PR that changes user-facing behavior **must** have associated documentation in the [docs](https://github.com/envoyproxy/gateway/tree/main/docs) folder of the repo as + well as the [changelog](../releases). +* All code comments and documentation are expected to have proper English grammar and punctuation. + If you are not a fluent English speaker (or a bad writer ;-)) please let us know and we will try + to find some help but there are no guarantees. +* Your PR title should be descriptive, and generally start with type that contains a subsystem name with `()` if necessary + and summary followed by a colon. format `chore/docs/feat/fix/refactor/style/test: summary`. + Examples: + * "docs: fix grammar error" + * "feat(translator): add new feature" + * "fix: fix xx bug" + * "chore: change ci & build tools etc" +* Your PR commit message will be used as the commit message when your PR is merged. You should + update this field if your PR diverges during review. +* Your PR description should have details on what the PR does. If it fixes an existing issue it + should end with "Fixes #XXX". +* If your PR is co-authored or based on an earlier PR from another contributor, + please attribute them with `Co-authored-by: name `. See + GitHub's [multiple author + guidance](https://help.github.com/en/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors) + for further details. +* When all tests are passing and all other conditions described herein are satisfied, a maintainer + will be assigned to review and merge the PR. +* Once you submit a PR, *please do not rebase it*. It's much easier to review if subsequent commits + are new commits and/or merges. We squash and merge so the number of commits you have in the PR + doesn't matter. +* We expect that once a PR is opened, it will be actively worked on until it is merged or closed. + We reserve the right to close PRs that are not making progress. This is generally defined as no + changes for 7 days. Obviously PRs that are closed due to lack of activity can be reopened later. + Closing stale PRs helps us to keep on top of all the work currently in flight. + +## Maintainer PR Review Policy + +* See [CODEOWNERS.md](CODEOWNERS.md) for the current list of maintainers. +* A maintainer representing a different affiliation from the PR owner is required to review and + approve the PR. +* When the project matures, it is expected that a "domain expert" for the code the PR touches should + review the PR. This person does not require commit access, just domain knowledge. +* The above rules may be waived for PRs which only update docs or comments, or trivial changes to + tests and tools (where trivial is decided by the maintainer in question). +* If there is a question on who should review a PR please discuss in Slack. +* Anyone is welcome to review any PR that they want, whether they are a maintainer or not. +* Please make sure that the PR title, commit message, and description are updated if the PR changes + significantly during review. +* Please **clean up the title and body** before merging. By default, GitHub fills the squash merge + title with the original title, and the commit body with every individual commit from the PR. + The maintainer doing the merge should make sure the title follows the guidelines above and should + overwrite the body with the original commit message from the PR (cleaning it up if necessary) + while preserving the PR author's final DCO sign-off. + +## Decision making + +This is a new and complex project, and we need to make a lot of decisions very quickly. +To this end, we've settled on this process for making (possibly contentious) decisions: + +* For decisions that need a record, we create an issue. +* In that issue, we discuss opinions, then a maintainer can call for a vote in a comment. +* Maintainers can cast binding votes on that comment by reacting or replying in another comment. +* Non-maintainer community members are welcome to cast non-binding votes by either of these methods. +* Voting will be resolved by simple majority. +* In the event of deadlocks, the question will be put to steering instead. + +## DCO: Sign your work + +The sign-off is a simple line at the end of the explanation for the +patch, which certifies that you wrote it or otherwise have the right to +pass it on as an open-source patch. The rules are pretty simple: if you +can certify the below (from +[developercertificate.org](https://developercertificate.org/)): + +``` +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +then you just add a line to every git commit message: + + Signed-off-by: Joe Smith + +using your real name (sorry, no pseudonyms or anonymous contributions.) + +You can add the sign-off when creating the git commit via `git commit -s`. + +If you want this to be automatic you can set up some aliases: + +```bash +git config --add alias.amend "commit -s --amend" +git config --add alias.c "commit -s" +``` + +## Fixing DCO + +If your PR fails the DCO check, it's necessary to fix the entire commit history in the PR. Best +practice is to [squash](https://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) +the commit history to a single commit, append the DCO sign-off as described above, and [force +push](https://git-scm.com/docs/git-push#git-push---force). For example, if you have 2 commits in +your history: + +```bash +git rebase -i HEAD^^ +(interactive squash + DCO append) +git push origin -f +``` + +Note, that in general rewriting history in this way is a hindrance to the review process and this +should only be done to correct a DCO mistake. diff --git a/site/content/en/v0.4.0/contributions/DEVELOP.md b/site/content/en/v0.4.0/contributions/DEVELOP.md new file mode 100644 index 000000000000..a6fd3846f565 --- /dev/null +++ b/site/content/en/v0.4.0/contributions/DEVELOP.md @@ -0,0 +1,162 @@ +--- +title: "Developer Guide" +weight: 2 +--- + +Envoy Gateway is built using a [make][]-based build system. Our CI is based on [Github Actions][] using [workflows][]. + +## Prerequisites + +### go + +* Version: 1.20 +* Installation Guide: https://go.dev/doc/install + +### make + +* Recommended Version: 4.0 or later +* Installation Guide: https://www.gnu.org/software/make + +### docker + +* Optional when you want to build a Docker image or run `make` inside Docker. +* Recommended Version: 20.10.16 +* Installation Guide: https://docs.docker.com/engine/install + +### python3 + +* Need a `python3` program +* Must have a functioning `venv` module; this is part of the standard + library, but some distributions (such as Debian and Ubuntu) replace + it with a stub and require you to install a `python3-venv` package + separately. + +## Quickstart + +* Run `make help` to see all the available targets to build, test and run Envoy Gateway. + +### Building + +* Run `make build` to build all the binaries. +* Run `make build BINS="envoy-gateway"` to build the Envoy Gateway binary. +* Run `make build BINS="egctl"` to build the egctl binary. + +__Note:__ The binaries get generated in the `bin/$OS/$ARCH` directory, for example, `bin/linux/amd64/`. + +### Testing + +* Run `make test` to run the golang tests. + +* Run `make testdata` to generate the golden YAML testdata files. + +### Running Linters + +* Run `make lint` to make sure your code passes all the linter checks. +__Note:__ The `golangci-lint` configuration resides [here](https://github.com/envoyproxy/gateway/blob/main/tools/linter/golangci-lint/.golangci.yml). + +### Building and Pushing the Image + +* Run `IMAGE=docker.io/you/gateway-dev make image` to build the docker image. +* Run `IMAGE=docker.io/you/gateway-dev make push-multiarch` to build and push the multi-arch docker image. + +__Note:__ Replace `IMAGE` with your registry's image name. + +### Deploying Envoy Gateway for Test/Dev + +* Run `make create-cluster` to create a [Kind][] cluster. + +#### Option 1: Use the Latest [gateway-dev][] Image + +* Run `TAG=latest make kube-deploy` to deploy Envoy Gateway in the Kind cluster using the latest image. Replace `latest` + to use a different image tag. + +#### Option 2: Use a Custom Image + +* Run `make kube-install-image` to build an image from the tip of your current branch and load it in the Kind cluster. +* Run `IMAGE_PULL_POLICY=IfNotPresent make kube-deploy` to install Envoy Gateway into the Kind cluster using your custom image. + +### Deploying Envoy Gateway in Kubernetes + +* Run `TAG=latest make kube-deploy` to deploy Envoy Gateway using the latest image into a Kubernetes cluster (linked to + the current kube context). Preface the command with `IMAGE` or replace `TAG` to use a different Envoy Gateway image or + tag. +* Run `make kube-undeploy` to uninstall Envoy Gateway from the cluster. + +__Note:__ Envoy Gateway is tested against Kubernetes v1.24.0. + +### Demo Setup + +* Run `make kube-demo` to deploy a demo backend service, gatewayclass, gateway and httproute resource +(similar to steps outlined in the [Quickstart][] docs) and test the configuration. +* Run `make kube-demo-undeploy` to delete the resources created by the `make kube-demo` command. + +### Run Gateway API Conformance Tests + +The commands below deploy Envoy Gateway to a Kubernetes cluster and run the Gateway API conformance tests. Refer to the +Gateway API [conformance homepage][] to learn more about the tests. If Envoy Gateway is already installed, run +`TAG=latest make run-conformance` to run the conformance tests. + +#### On a Linux Host + +* Run `TAG=latest make conformance` to create a Kind cluster, install Envoy Gateway using the latest [gateway-dev][] + image, and run Gateway API conformance tests. + +#### On a Mac Host + +Since Mac doesn't support [directly exposing][] the Docker network to the Mac host, use one of the following +workarounds to run conformance tests: + +* Deploy your own Kubernetes cluster or use Docker Desktop with [Kubernetes support][] and then run + `TAG=latest make kube-deploy run-conformance`. This will install Envoy Gateway using the latest [gateway-dev][] image + to the Kubernetes cluster using the current kubectl context and run the conformance tests. Use `make kube-undeploy` to + uninstall Envoy Gateway. +* Install and run [Docker Mac Net Connect][mac_connect] and then run `TAG=latest make conformance`. + +__Note:__ Preface commands with `IMAGE` or replace `TAG` to use a different Envoy Gateway image or tag. If `TAG` +is unspecified, the short SHA of your current branch is used. + +### Debugging the Envoy Config + +An easy way to view the envoy config that Envoy Gateway is using is to port-forward to the admin interface port +(currently `19000`) on the Envoy deployment that corresponds to a Gateway so that it can be accessed locally. + +Get the name of the Envoy deployment. The following example is for Gateway `eg` in the `default` namespace: + +```shell +export ENVOY_DEPLOYMENT=$(kubectl get deploy -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg -o jsonpath='{.items[0].metadata.name}') +``` + +Port forward the admin interface port: + +```shell +kubectl port-forward deploy/${ENVOY_DEPLOYMENT} -n envoy-gateway-system 19000:19000 +``` + +Now you are able to view the running Envoy configuration by navigating to `127.0.0.1:19000/config_dump`. + +There are many other endpoints on the [Envoy admin interface][] that may be helpful when debugging. + +### JWT Testing + +An example [JSON Web Token (JWT)][jwt] and [JSON Web Key Set (JWKS)][jwks] are used for the [request authentication][] +user guide. The JWT was created by the [JWT Debugger][], using the `RS256` algorithm. The public key from the JWTs +verify signature was copied to [JWK Creator][] for generating the JWK. The JWK Creator was configured with matching +settings, i.e. `Signing` public key use and the `RS256` algorithm. The generated JWK was wrapped in a JWKS structure +and is hosted in the repo. + +[Quickstart]: https://github.com/envoyproxy/gateway/blob/main/docs/latest/user/quickstart.md +[make]: https://www.gnu.org/software/make/ +[Github Actions]: https://docs.github.com/en/actions +[workflows]: https://github.com/envoyproxy/gateway/tree/main/.github/workflows +[Kind]: https://kind.sigs.k8s.io/ +[conformance homepage]: https://gateway-api.sigs.k8s.io/concepts/conformance/ +[directly exposing]: https://kind.sigs.k8s.io/docs/user/loadbalancer/ +[Kubernetes support]: https://docs.docker.com/desktop/kubernetes/ +[gateway-dev]: https://hub.docker.com/r/envoyproxy/gateway-dev/tags +[mac_connect]: https://github.com/chipmk/docker-mac-net-connect +[Envoy admin interface]: https://www.envoyproxy.io/docs/envoy/latest/operations/admin#operations-admin-interface +[jwt]: https://tools.ietf.org/html/rfc7519 +[jwks]: https://tools.ietf.org/html/rfc7517 +[request authentication]: https://gateway.envoyproxy.io/latest/user/authn.html +[JWT Debugger]: https://jwt.io/ +[JWK Creator]: https://russelldavies.github.io/jwk-creator/ diff --git a/site/content/en/v0.4.0/contributions/DOCS.md b/site/content/en/v0.4.0/contributions/DOCS.md new file mode 100644 index 000000000000..1abae95763c5 --- /dev/null +++ b/site/content/en/v0.4.0/contributions/DOCS.md @@ -0,0 +1,65 @@ +--- +title: "Working on the Envoy Gateway Docs" +--- + +The documentation for the Envoy Gateway lives in the `docs/` directory. Any +individual document can be written using either [reStructuredText] or [Markdown], +you can choose the format that you're most comfortable with when working on the +documentation. + +## Documentation Structure + +We supported the versioned Docs now, the directory name under docs represents +the version of docs. The root of the latest site is in `docs/latest/index.rst`. +This is probably where to start if you're trying to understand how things fit together. + +Note that the new contents should be added to `docs/latest` and will be cut off at +the next release. The contents under `docs/v0.2.0` are auto-generated, +and usually do not need to make changes to them, unless if you find the current release pages have +some incorrect contents. If so, you should send a PR to update contents both of `docs/latest` +and `docs/v0.2.0`. + +It's important to note that a given document _must_ have a reference in some +`.. toctree::` section for the document to be reachable. Not everything needs +to be in `docs/index.rst`'s `toctree` though. + +You can access the website which represents the current release in default, +and you can access the website which contains the latest version changes in +[Here][latest-website] or at the footer of the pages. + +## Documentation Workflow + +To work with the docs, just edit reStructuredText or Markdown files in `docs`, +then run + +```bash +make docs +``` + +This will create `docs/html` with the built HTML pages. You can view the docs +either simply by pointing a web browser at the `file://` path to your +`docs/html`, or by firing up a static webserver from that directory, e.g. + +``` shell +make docs-serve +``` + +If you want to generate a new release version of the docs, like `v0.3.0`, then run + +```bash +make docs-release TAG=v0.3.0 +``` + +This will update the VERSION file at the project root, which records current release version, +and it will be used in the pages version context and binary version output. Also, this will generate +new dir `docs/v0.3.0`, which contains docs at v0.3.0 and updates artifact links to `v0.3.0` +in all files under `docs/v0.3.0/user`, like `quickstart.md`, `http-routing.md` and etc. + +## Publishing Docs + +Whenever docs are pushed to `main`, CI will publish the built docs to GitHub +Pages. For more details, see `.github/workflows/docs.yaml`. + +[reStructuredText]: https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html +[Markdown]: https://daringfireball.net/projects/markdown/syntax +[latest-website]: https://gateway.envoyproxy.io/latest diff --git a/site/content/en/v0.4.0/contributions/RELEASING.md b/site/content/en/v0.4.0/contributions/RELEASING.md new file mode 100644 index 000000000000..617baf1933e0 --- /dev/null +++ b/site/content/en/v0.4.0/contributions/RELEASING.md @@ -0,0 +1,230 @@ +--- +title: "Release Process" +--- + +This document guides maintainers through the process of creating an Envoy Gateway release. + +- [Release Candidate](#release-candidate) +- [Minor Release](#minor-release) +- [Announce the Release](#announce-the-release) + +## Release Candidate + +The following steps should be used for creating a release candidate. + +### Prerequisites + +- Permissions to push to the Envoy Gateway repository. + +Set environment variables for use in subsequent steps: + +```shell +export MAJOR_VERSION=0 +export MINOR_VERSION=3 +export RELEASE_CANDIDATE_NUMBER=1 +export GITHUB_REMOTE=origin +``` + +1. Clone the repo, checkout the `main` branch, ensure it’s up-to-date, and your local branch is clean. +2. Create a topic branch for adding the release notes and updating the [VERSION][] file with the release version. Refer to previous [release notes][] and [VERSION][] for additional details. +3. Sign, commit, and push your changes to your fork. +4. Submit a [Pull Request][] to merge the changes into the `main` branch. Do not proceed until your PR has merged and + the [Build and Test][] has successfully completed. +5. Create a new release branch from `main`. The release branch should be named + `release/v${MAJOR_VERSION}.${MINOR_VERSION}`, e.g. `release/v0.3`. + + ```shell + git checkout -b release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +6. Push the branch to the Envoy Gateway repo. + + ```shell + git push ${GITHUB_REMOTE} release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +7. Create a topic branch for updating the Envoy proxy image to the tag supported by the release. Reference [PR #958][] + for additional details on updating the image tag. +8. Sign, commit, and push your changes to your fork. +9. Submit a [Pull Request][] to merge the changes into the `release/v${MAJOR_VERSION}.${MINOR_VERSION}` branch. Do not + proceed until your PR has merged into the release branch and the [Build and Test][] has completed for your PR. +10. Ensure your release branch is up-to-date and tag the head of your release branch with the release candidate number. + + ```shell + git tag -a v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} -m 'Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} Release Candidate' + ``` + +11. Push the tag to the Envoy Gateway repository. + + ```shell + git push ${GITHUB_REMOTE} v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} + ``` + +12. This will trigger the [release GitHub action][] that generates the release, release artifacts, etc. +13. Confirm that the [release workflow][] completed successfully. +14. Confirm that the Envoy Gateway [image][] with the correct release tag was published to Docker Hub. +15. Confirm that the [release][] was created. +16. Note that the [Quickstart Guide][] references are __not__ updated for release candidates. However, test + the quickstart steps using the release candidate by manually updating the links. +17. [Generate][] the GitHub changelog. +18. Ensure you check the "This is a pre-release" checkbox when editing the GitHub release. +19. If you find any bugs in this process, please create an issue. + +### Setup cherry picker action + +After release branch cut, RM (Release Manager) should add job [cherrypick action](../../../.github/workflows/cherrypick.yaml) for target release. + +Configuration looks like following: + +```yaml + cherry_pick_release_v0_4: + runs-on: ubuntu-latest + name: Cherry pick into release-v0.4 + if: ${{ contains(github.event.pull_request.labels.*.name, 'cherrypick/release-v0.4') && github.event.pull_request.merged == true }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Cherry pick into release/v0.4 + uses: carloscastrojumo/github-cherry-pick-action@v1.0.9 + with: + branch: release/v0.4 + title: "[release/v0.4] {old_title}" + body: "Cherry picking #{old_pull_request_id} onto release/v0.4" + labels: | + cherrypick/release-v0.4 + # put release manager here + reviewers: | + AliceProxy +``` + +Replace `v0.4` with real branch name, and `AliceProxy` with the real name of RM. + +## Minor Release + +The following steps should be used for creating a minor release. + +### Prerequisites + +- Permissions to push to the Envoy Gateway repository. +- A release branch that has been cut from the corresponding release candidate. Refer to the + [Release Candidate](#release-candidate) section for additional details on cutting a release candidate. + +Set environment variables for use in subsequent steps: + +```shell +export MAJOR_VERSION=0 +export MINOR_VERSION=3 +export GITHUB_REMOTE=origin +``` + +1. Clone the repo, checkout the `main` branch, ensure it’s up-to-date, and your local branch is clean. +2. Create a topic branch for adding the release notes, release announcement, and versioned release docs. + + 1. Create the release notes. Reference previous [release notes][] for additional details. __Note:__ The release + notes should be an accumulation of the release candidate release notes and any changes since the release + candidate. + 2. Create a release announcement. Refer to [PR #635] as an example release announcement. + 3. Include the release in the compatibility matrix. Refer to [PR #1002] as an example. + 4. Generate the versioned release docs: + + ``` shell + make docs-release TAG=v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +3. Sign, commit, and push your changes to your fork. +4. Submit a [Pull Request][] to merge the changes into the `main` branch. Do not proceed until all your PRs have merged + and the [Build and Test][] has completed for your final PR. + +5. Checkout the release branch. + + ```shell + git checkout -b release/v${MAJOR_VERSION}.${MINOR_VERSION} $GITHUB_REMOTE/release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +6. If the tip of the release branch does not match the tip of `main`, perform the following: + + 1. Create a topic branch from the release branch. + 2. Cherry-pick the commits from `main` that differ from the release branch. + 3. Run tests locally, e.g. `make lint`. + 4. Sign, commit, and push your topic branch to your Envoy Gateway fork. + 5. Submit a PR to merge the topic from of your fork into the Envoy Gateway release branch. + 6. Do not proceed until the PR has merged and CI passes for the merged PR. + 7. If you are still on your topic branch, change to the release branch: + + ```shell + git checkout release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + + 8. Ensure your local release branch is up-to-date: + + ```shell + git pull $GITHUB_REMOTE release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +7. Tag the head of your release branch with the release tag. For example: + + ```shell + git tag -a v${MAJOR_VERSION}.${MINOR_VERSION}.0 -m 'Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION}.0 Release' + ``` + + __Note:__ The tag version differs from the release branch by including the `.0` patch version. + +8. Push the tag to the Envoy Gateway repository. + + ```shell + git push origin v${MAJOR_VERSION}.${MINOR_VERSION}.0 + ``` + +9. This will trigger the [release GitHub action][] that generates the release, release artifacts, etc. +10. Confirm that the [release workflow][] completed successfully. +11. Confirm that the Envoy Gateway [image][] with the correct release tag was published to Docker Hub. +12. Confirm that the [release][] was created. +13. Confirm that the steps in the [Quickstart Guide][] work as expected. +14. [Generate][] the GitHub changelog and include the following text at the beginning of the release page: + + ```console + # Release Announcement + + Check out the [v${MAJOR_VERSION}.${MINOR_VERSION} release announcement] + (https://gateway.envoyproxy.io/releases/v${MAJOR_VERSION}.${MINOR_VERSION}.html) to learn more about the release. + ``` + +If you find any bugs in this process, please create an issue. + +## Announce the Release + +It's important that the world knows about the release. Use the following steps to announce the release. + +1. Set the release information in the Envoy Gateway Slack channel. For example: + + ```shell + Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION} has been released: https://github.com/envoyproxy/gateway/releases/tag/v${MAJOR_VERSION}.${MINOR_VERSION}.0 + ``` + +2. Send a message to the Envoy Gateway Slack channel. For example: + + ```shell + On behalf of the entire Envoy Gateway community, I am pleased to announce the release of Envoy Gateway + v${MAJOR_VERSION}.${MINOR_VERSION}. A big thank you to all the contributors that made this release possible. + Refer to the official v${MAJOR_VERSION}.${MINOR_VERSION} announcement for release details and the project docs + to start using Envoy Gateway. + ... + ``` + + Link to the GitHub release and release announcement page that highlights the release. + +[release notes]: https://github.com/envoyproxy/gateway/tree/main/release-notes +[Pull Request]: https://github.com/envoyproxy/gateway/pulls +[Quickstart Guide]: https://github.com/envoyproxy/gateway/blob/main/docs/user/quickstart.md +[Build and Test]: https://github.com/envoyproxy/gateway/blob/main/.github/workflows/build_and_test.yaml +[release GitHub action]: https://github.com/envoyproxy/gateway/blob/main/.github/workflows/release.yaml +[release workflow]: https://github.com/envoyproxy/gateway/actions/workflows/release.yaml +[image]: https://hub.docker.com/r/envoyproxy/gateway/tags +[release]: https://github.com/envoyproxy/gateway/releases +[Generate]: https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes +[PR #635]: https://github.com/envoyproxy/gateway/pull/635 +[PR #958]: https://github.com/envoyproxy/gateway/pull/958 +[PR #1002]: https://github.com/envoyproxy/gateway/pull/1002 +[VERSION]: https://github.com/envoyproxy/gateway/blob/main/VERSION diff --git a/site/content/en/v0.4.0/contributions/_index.md b/site/content/en/v0.4.0/contributions/_index.md new file mode 100644 index 000000000000..3255d996472a --- /dev/null +++ b/site/content/en/v0.4.0/contributions/_index.md @@ -0,0 +1,5 @@ +--- +title: Get Involved +description: "This section includes contents related to **Contributions**" +weight: 100 +--- diff --git a/site/content/en/docs/v0.4.0/design/_index.md b/site/content/en/v0.4.0/design/_index.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/_index.md rename to site/content/en/v0.4.0/design/_index.md diff --git a/site/content/en/docs/v0.4.0/design/bootstrap.md b/site/content/en/v0.4.0/design/bootstrap.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/bootstrap.md rename to site/content/en/v0.4.0/design/bootstrap.md diff --git a/site/content/en/docs/v0.4.0/design/config-api.md b/site/content/en/v0.4.0/design/config-api.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/config-api.md rename to site/content/en/v0.4.0/design/config-api.md diff --git a/site/content/en/docs/v0.4.0/design/egctl.md b/site/content/en/v0.4.0/design/egctl.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/egctl.md rename to site/content/en/v0.4.0/design/egctl.md diff --git a/site/content/en/docs/v0.4.0/design/extending-envoy-gateway.md b/site/content/en/v0.4.0/design/extending-envoy-gateway.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/extending-envoy-gateway.md rename to site/content/en/v0.4.0/design/extending-envoy-gateway.md diff --git a/site/content/en/docs/v0.4.0/design/gatewayapi-translator.md b/site/content/en/v0.4.0/design/gatewayapi-translator.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/gatewayapi-translator.md rename to site/content/en/v0.4.0/design/gatewayapi-translator.md diff --git a/site/content/en/v0.4.0/design/goals.md b/site/content/en/v0.4.0/design/goals.md new file mode 100644 index 000000000000..fd38b2004c61 --- /dev/null +++ b/site/content/en/v0.4.0/design/goals.md @@ -0,0 +1,91 @@ +--- +title: "Goals" +weight: 1 +--- + +The high-level goal of the Envoy Gateway project is to attract more users to Envoy by lowering barriers to adoption +through expressive, extensible, role-oriented APIs that support a multitude of ingress and L7/L4 traffic routing +use cases; and provide a common foundation for vendors to build value-added products without having to re-engineer +fundamental interactions. + +## Objectives + +### Expressive API + +The Envoy Gateway project will expose a simple and expressive API, with defaults set for many capabilities. + +The API will be the Kubernetes-native [Gateway API][], plus Envoy-specific extensions and extension points. This +expressive and familiar API will make Envoy accessible to more users, especially application developers, and make Envoy +a stronger option for "getting started" as compared to other proxies. Application developers will use the API out of +the box without needing to understand in-depth concepts of Envoy Proxy or use OSS wrappers. The API will use familiar +nouns that [users](#personas) understand. + +The core full-featured Envoy xDS APIs will remain available for those who need more capability and for those who +add functionality on top of Envoy Gateway, such as commercial API gateway products. + +This expressive API will not be implemented by Envoy Proxy, but rather an officially supported translation layer +on top. + +### Batteries included + +Envoy Gateway will simplify how Envoy is deployed and managed, allowing application developers to focus on +delivering core business value. + +The project plans to include additional infrastructure components required by users to fulfill their Ingress and API +gateway needs: It will handle Envoy infrastructure provisioning (e.g. Kubernetes Service, Deployment, et cetera), and +possibly infrastructure provisioning of related sidecar services. It will include sensible defaults with the ability to +override. It will include channels for improving ops by exposing status through API conditions and Kubernetes status +sub-resources. + +Making an application accessible needs to be a trivial task for any developer. Similarly, infrastructure administrators +will enjoy a simplified management model that doesn't require extensive knowledge of the solution's architecture to +operate. + +### All environments + +Envoy Gateway will support running natively in Kubernetes environments as well as non-Kubernetes deployments. + +Initially, Kubernetes will receive the most focus, with the aim of having Envoy Gateway become the de facto +standard for Kubernetes ingress supporting the [Gateway API][]. +Additional goals include multi-cluster support and various runtime environments. + +### Extensibility + +Vendors will have the ability to provide value-added products built on the Envoy Gateway foundation. + +It will remain easy for end-users to leverage common Envoy Proxy extension points such as providing an implementation +for authentication methods and rate-limiting. For advanced use cases, users will have the ability to use the full power +of xDS. + +Since a general-purpose API cannot address all use cases, Envoy Gateway will provide additional extension points +for flexibility. As such, Envoy Gateway will form the base of vendor-provided managed control plane solutions, +allowing vendors to shift to a higher management plane layer. + +## Non-objectives + +### Cannibalize vendor models + +Vendors need to have the ability to drive commercial value, so the goal is not to cannibalize any existing vendor +monetization model, though some vendors may be affected by it. + +### Disrupt current Envoy usage patterns + +Envoy Gateway is purely an additive convenience layer and is not meant to disrupt any usage pattern of any user +with Envoy Proxy, xDS, or go-control-plane. + +## Personas + +_In order of priority_ + +### 1. Application developer + +The application developer spends the majority of their time developing business logic code. They require the ability to +manage access to their application. + +### 2. Infrastructure administrators + +The infrastructure administrators are responsible for the installation, maintenance, and operation of +API gateways appliances in infrastructure, such as CRDs, roles, service accounts, certificates, etc. +Infrastructure administrators support the needs of application developers by managing instances of Envoy Gateway. + +[Gateway API]: https://gateway-api.sigs.k8s.io/ diff --git a/site/content/en/docs/v0.4.0/design/rate-limit.md b/site/content/en/v0.4.0/design/rate-limit.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/rate-limit.md rename to site/content/en/v0.4.0/design/rate-limit.md diff --git a/site/content/en/docs/v0.4.0/design/request-authentication.md b/site/content/en/v0.4.0/design/request-authentication.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/request-authentication.md rename to site/content/en/v0.4.0/design/request-authentication.md diff --git a/site/content/en/docs/v0.4.0/design/roadmap.md b/site/content/en/v0.4.0/design/roadmap.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/roadmap.md rename to site/content/en/v0.4.0/design/roadmap.md diff --git a/site/content/en/docs/v0.4.0/design/system-design.md b/site/content/en/v0.4.0/design/system-design.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/system-design.md rename to site/content/en/v0.4.0/design/system-design.md diff --git a/site/content/en/docs/v0.4.0/design/tcp-udp-design.md b/site/content/en/v0.4.0/design/tcp-udp-design.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/tcp-udp-design.md rename to site/content/en/v0.4.0/design/tcp-udp-design.md diff --git a/site/content/en/docs/v0.4.0/design/watching.md b/site/content/en/v0.4.0/design/watching.md similarity index 100% rename from site/content/en/docs/v0.4.0/design/watching.md rename to site/content/en/v0.4.0/design/watching.md diff --git a/site/content/en/docs/v0.4.0/images/architecture.png b/site/content/en/v0.4.0/images/architecture.png similarity index 100% rename from site/content/en/docs/v0.4.0/images/architecture.png rename to site/content/en/v0.4.0/images/architecture.png diff --git a/site/content/en/docs/v0.4.0/images/extension-example.png b/site/content/en/v0.4.0/images/extension-example.png similarity index 100% rename from site/content/en/docs/v0.4.0/images/extension-example.png rename to site/content/en/v0.4.0/images/extension-example.png diff --git a/site/content/en/docs/v0.4.0/user/_index.md b/site/content/en/v0.4.0/user/_index.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/_index.md rename to site/content/en/v0.4.0/user/_index.md diff --git a/site/content/en/docs/v0.4.0/user/authn.md b/site/content/en/v0.4.0/user/authn.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/authn.md rename to site/content/en/v0.4.0/user/authn.md diff --git a/site/content/en/docs/v0.4.0/user/customize-envoyproxy.md b/site/content/en/v0.4.0/user/customize-envoyproxy.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/customize-envoyproxy.md rename to site/content/en/v0.4.0/user/customize-envoyproxy.md diff --git a/site/content/en/docs/v0.4.0/user/deployment-mode.md b/site/content/en/v0.4.0/user/deployment-mode.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/deployment-mode.md rename to site/content/en/v0.4.0/user/deployment-mode.md diff --git a/site/content/en/docs/v0.4.0/user/egctl.md b/site/content/en/v0.4.0/user/egctl.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/egctl.md rename to site/content/en/v0.4.0/user/egctl.md diff --git a/site/content/en/docs/v0.4.0/user/gatewayapi-support.md b/site/content/en/v0.4.0/user/gatewayapi-support.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/gatewayapi-support.md rename to site/content/en/v0.4.0/user/gatewayapi-support.md diff --git a/site/content/en/docs/v0.4.0/user/grpc-routing.md b/site/content/en/v0.4.0/user/grpc-routing.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/grpc-routing.md rename to site/content/en/v0.4.0/user/grpc-routing.md diff --git a/site/content/en/docs/v0.4.0/user/http-redirect.md b/site/content/en/v0.4.0/user/http-redirect.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/http-redirect.md rename to site/content/en/v0.4.0/user/http-redirect.md diff --git a/site/content/en/docs/v0.4.0/user/http-request-headers.md b/site/content/en/v0.4.0/user/http-request-headers.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/http-request-headers.md rename to site/content/en/v0.4.0/user/http-request-headers.md diff --git a/site/content/en/docs/v0.4.0/user/http-response-headers.md b/site/content/en/v0.4.0/user/http-response-headers.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/http-response-headers.md rename to site/content/en/v0.4.0/user/http-response-headers.md diff --git a/site/content/en/docs/v0.4.0/user/http-routing.md b/site/content/en/v0.4.0/user/http-routing.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/http-routing.md rename to site/content/en/v0.4.0/user/http-routing.md diff --git a/site/content/en/docs/v0.4.0/user/http-traffic-splitting.md b/site/content/en/v0.4.0/user/http-traffic-splitting.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/http-traffic-splitting.md rename to site/content/en/v0.4.0/user/http-traffic-splitting.md diff --git a/site/content/en/docs/v0.4.0/user/http-urlrewrite.md b/site/content/en/v0.4.0/user/http-urlrewrite.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/http-urlrewrite.md rename to site/content/en/v0.4.0/user/http-urlrewrite.md diff --git a/site/content/en/docs/v0.4.0/user/quickstart.md b/site/content/en/v0.4.0/user/quickstart.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/quickstart.md rename to site/content/en/v0.4.0/user/quickstart.md diff --git a/site/content/en/docs/v0.4.0/user/rate-limit.md b/site/content/en/v0.4.0/user/rate-limit.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/rate-limit.md rename to site/content/en/v0.4.0/user/rate-limit.md diff --git a/site/content/en/docs/v0.4.0/user/secure-gateways.md b/site/content/en/v0.4.0/user/secure-gateways.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/secure-gateways.md rename to site/content/en/v0.4.0/user/secure-gateways.md diff --git a/site/content/en/docs/v0.4.0/user/tcp-routing.md b/site/content/en/v0.4.0/user/tcp-routing.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/tcp-routing.md rename to site/content/en/v0.4.0/user/tcp-routing.md diff --git a/site/content/en/docs/v0.4.0/user/tls-passthrough.md b/site/content/en/v0.4.0/user/tls-passthrough.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/tls-passthrough.md rename to site/content/en/v0.4.0/user/tls-passthrough.md diff --git a/site/content/en/docs/v0.4.0/user/udp-routing.md b/site/content/en/v0.4.0/user/udp-routing.md similarity index 100% rename from site/content/en/docs/v0.4.0/user/udp-routing.md rename to site/content/en/v0.4.0/user/udp-routing.md diff --git a/site/content/en/v0.5.0/_index.md b/site/content/en/v0.5.0/_index.md new file mode 100644 index 000000000000..3772c64b1ccc --- /dev/null +++ b/site/content/en/v0.5.0/_index.md @@ -0,0 +1,10 @@ ++++ +title = "Welcome to Envoy Gateway" +description = "Envoy Gateway Documents" + +[[cascade]] +type = "docs" ++++ + +Envoy Gateway is an open source project for managing **Envoy Proxy** as a standalone or Kubernetes-based application +gateway. **Gateway API** resources are used to dynamically provision and configure the managed Envoy Proxies. diff --git a/site/content/en/docs/v0.3.0/api/_index.md b/site/content/en/v0.5.0/api/_index.md similarity index 87% rename from site/content/en/docs/v0.3.0/api/_index.md rename to site/content/en/v0.5.0/api/_index.md index 1d7c67c8c151..396d9ffcefcf 100644 --- a/site/content/en/docs/v0.3.0/api/_index.md +++ b/site/content/en/v0.5.0/api/_index.md @@ -1,4 +1,5 @@ --- title: "API" description: This section includes APIs of Envoy Gateway. +weight: 80 --- diff --git a/site/content/en/docs/v0.5.0/api/config_types.md b/site/content/en/v0.5.0/api/config_types.md similarity index 100% rename from site/content/en/docs/v0.5.0/api/config_types.md rename to site/content/en/v0.5.0/api/config_types.md diff --git a/site/content/en/docs/v0.5.0/api/extension_types.md b/site/content/en/v0.5.0/api/extension_types.md similarity index 100% rename from site/content/en/docs/v0.5.0/api/extension_types.md rename to site/content/en/v0.5.0/api/extension_types.md diff --git a/site/content/en/v0.5.0/contributions/CODEOWNERS.md b/site/content/en/v0.5.0/contributions/CODEOWNERS.md new file mode 100644 index 000000000000..9e596002bb33 --- /dev/null +++ b/site/content/en/v0.5.0/contributions/CODEOWNERS.md @@ -0,0 +1,18 @@ +--- +title: "Maintainers" +--- + +## The following maintainers, listed in alphabetical order, own everything + +- @AliceProxy +- @arkodg +- @Xunzhuo +- @zirain +- @qicz + +## Emeritus Maintainers + +- @danehans +- @alexgervais +- @skriss +- @youngnick diff --git a/site/content/en/v0.5.0/contributions/CODE_OF_CONDUCT.md b/site/content/en/v0.5.0/contributions/CODE_OF_CONDUCT.md new file mode 100644 index 000000000000..1f17c0889458 --- /dev/null +++ b/site/content/en/v0.5.0/contributions/CODE_OF_CONDUCT.md @@ -0,0 +1,5 @@ +--- +title: "Code of Conduct" +--- + +Gateway follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). diff --git a/site/content/en/v0.5.0/contributions/CONTRIBUTING.md b/site/content/en/v0.5.0/contributions/CONTRIBUTING.md new file mode 100644 index 000000000000..21dcd9a1941a --- /dev/null +++ b/site/content/en/v0.5.0/contributions/CONTRIBUTING.md @@ -0,0 +1,189 @@ +--- +title: "Contributing" +weight: 3 +--- + +We welcome contributions from the community. Please carefully review the [project goals](GOALS.md) +and following guidelines to streamline your contributions. + +## Communication + +* Before starting work on a major feature, please contact us via GitHub or Slack. We will ensure no + one else is working on it and ask you to open a GitHub issue. +* A "major feature" is defined as any change that is > 100 LOC altered (not including tests), or + changes any user-facing behavior. We will use the GitHub issue to discuss the feature and come to + agreement. This is to prevent your time being wasted, as well as ours. The GitHub review process + for major features is also important so that [affiliations with commit access](CODEOWNERS.md) can + come to agreement on the design. If it's appropriate to write a design document, the document must + be hosted either in the GitHub issue, or linked to from the issue and hosted in a world-readable + location. +* Small patches and bug fixes don't need prior communication. + +## Inclusivity + +The Envoy Gateway community has an explicit goal to be inclusive to all. As such, all PRs must adhere +to the following guidelines for all code, APIs, and documentation: + +* The following words and phrases are not allowed: + * *Whitelist*: use allowlist instead. + * *Blacklist*: use denylist or blocklist instead. + * *Master*: use primary instead. + * *Slave*: use secondary or replica instead. +* Documentation should be written in an inclusive style. The [Google developer + documentation](https://developers.google.com/style/inclusive-documentation) contains an excellent + reference on this topic. +* The above policy is not considered definitive and may be amended in the future as industry best + practices evolve. Additional comments on this topic may be provided by maintainers during code + review. + +## Submitting a PR + +* Fork the repo. +* Hack +* DCO sign-off each commit. This can be done with `git commit -s`. +* Submit your PR. +* Tests will automatically run for you. +* We will **not** merge any PR that is not passing tests. +* PRs are expected to have 100% test coverage for added code. This can be verified with a coverage + build. If your PR cannot have 100% coverage for some reason please clearly explain why when you + open it. +* Any PR that changes user-facing behavior **must** have associated documentation in the [docs](https://github.com/envoyproxy/gateway/tree/main/docs) folder of the repo as + well as the [changelog](../releases). +* All code comments and documentation are expected to have proper English grammar and punctuation. + If you are not a fluent English speaker (or a bad writer ;-)) please let us know and we will try + to find some help but there are no guarantees. +* Your PR title should be descriptive, and generally start with type that contains a subsystem name with `()` if necessary + and summary followed by a colon. format `chore/docs/feat/fix/refactor/style/test: summary`. + Examples: + * "docs: fix grammar error" + * "feat(translator): add new feature" + * "fix: fix xx bug" + * "chore: change ci & build tools etc" +* Your PR commit message will be used as the commit message when your PR is merged. You should + update this field if your PR diverges during review. +* Your PR description should have details on what the PR does. If it fixes an existing issue it + should end with "Fixes #XXX". +* If your PR is co-authored or based on an earlier PR from another contributor, + please attribute them with `Co-authored-by: name `. See + GitHub's [multiple author + guidance](https://help.github.com/en/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors) + for further details. +* When all tests are passing and all other conditions described herein are satisfied, a maintainer + will be assigned to review and merge the PR. +* Once you submit a PR, *please do not rebase it*. It's much easier to review if subsequent commits + are new commits and/or merges. We squash and merge so the number of commits you have in the PR + doesn't matter. +* We expect that once a PR is opened, it will be actively worked on until it is merged or closed. + We reserve the right to close PRs that are not making progress. This is generally defined as no + changes for 7 days. Obviously PRs that are closed due to lack of activity can be reopened later. + Closing stale PRs helps us to keep on top of all the work currently in flight. + +## Maintainer PR Review Policy + +* See [CODEOWNERS.md](CODEOWNERS.md) for the current list of maintainers. +* A maintainer representing a different affiliation from the PR owner is required to review and + approve the PR. +* When the project matures, it is expected that a "domain expert" for the code the PR touches should + review the PR. This person does not require commit access, just domain knowledge. +* The above rules may be waived for PRs which only update docs or comments, or trivial changes to + tests and tools (where trivial is decided by the maintainer in question). +* If there is a question on who should review a PR please discuss in Slack. +* Anyone is welcome to review any PR that they want, whether they are a maintainer or not. +* Please make sure that the PR title, commit message, and description are updated if the PR changes + significantly during review. +* Please **clean up the title and body** before merging. By default, GitHub fills the squash merge + title with the original title, and the commit body with every individual commit from the PR. + The maintainer doing the merge should make sure the title follows the guidelines above and should + overwrite the body with the original commit message from the PR (cleaning it up if necessary) + while preserving the PR author's final DCO sign-off. + +## Decision making + +This is a new and complex project, and we need to make a lot of decisions very quickly. +To this end, we've settled on this process for making (possibly contentious) decisions: + +* For decisions that need a record, we create an issue. +* In that issue, we discuss opinions, then a maintainer can call for a vote in a comment. +* Maintainers can cast binding votes on that comment by reacting or replying in another comment. +* Non-maintainer community members are welcome to cast non-binding votes by either of these methods. +* Voting will be resolved by simple majority. +* In the event of deadlocks, the question will be put to steering instead. + +## DCO: Sign your work + +The sign-off is a simple line at the end of the explanation for the +patch, which certifies that you wrote it or otherwise have the right to +pass it on as an open-source patch. The rules are pretty simple: if you +can certify the below (from +[developercertificate.org](https://developercertificate.org/)): + +``` +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +then you just add a line to every git commit message: + + Signed-off-by: Joe Smith + +using your real name (sorry, no pseudonyms or anonymous contributions.) + +You can add the sign-off when creating the git commit via `git commit -s`. + +If you want this to be automatic you can set up some aliases: + +```bash +git config --add alias.amend "commit -s --amend" +git config --add alias.c "commit -s" +``` + +## Fixing DCO + +If your PR fails the DCO check, it's necessary to fix the entire commit history in the PR. Best +practice is to [squash](https://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) +the commit history to a single commit, append the DCO sign-off as described above, and [force +push](https://git-scm.com/docs/git-push#git-push---force). For example, if you have 2 commits in +your history: + +```bash +git rebase -i HEAD^^ +(interactive squash + DCO append) +git push origin -f +``` + +Note, that in general rewriting history in this way is a hindrance to the review process and this +should only be done to correct a DCO mistake. diff --git a/site/content/en/v0.5.0/contributions/DEVELOP.md b/site/content/en/v0.5.0/contributions/DEVELOP.md new file mode 100644 index 000000000000..a6fd3846f565 --- /dev/null +++ b/site/content/en/v0.5.0/contributions/DEVELOP.md @@ -0,0 +1,162 @@ +--- +title: "Developer Guide" +weight: 2 +--- + +Envoy Gateway is built using a [make][]-based build system. Our CI is based on [Github Actions][] using [workflows][]. + +## Prerequisites + +### go + +* Version: 1.20 +* Installation Guide: https://go.dev/doc/install + +### make + +* Recommended Version: 4.0 or later +* Installation Guide: https://www.gnu.org/software/make + +### docker + +* Optional when you want to build a Docker image or run `make` inside Docker. +* Recommended Version: 20.10.16 +* Installation Guide: https://docs.docker.com/engine/install + +### python3 + +* Need a `python3` program +* Must have a functioning `venv` module; this is part of the standard + library, but some distributions (such as Debian and Ubuntu) replace + it with a stub and require you to install a `python3-venv` package + separately. + +## Quickstart + +* Run `make help` to see all the available targets to build, test and run Envoy Gateway. + +### Building + +* Run `make build` to build all the binaries. +* Run `make build BINS="envoy-gateway"` to build the Envoy Gateway binary. +* Run `make build BINS="egctl"` to build the egctl binary. + +__Note:__ The binaries get generated in the `bin/$OS/$ARCH` directory, for example, `bin/linux/amd64/`. + +### Testing + +* Run `make test` to run the golang tests. + +* Run `make testdata` to generate the golden YAML testdata files. + +### Running Linters + +* Run `make lint` to make sure your code passes all the linter checks. +__Note:__ The `golangci-lint` configuration resides [here](https://github.com/envoyproxy/gateway/blob/main/tools/linter/golangci-lint/.golangci.yml). + +### Building and Pushing the Image + +* Run `IMAGE=docker.io/you/gateway-dev make image` to build the docker image. +* Run `IMAGE=docker.io/you/gateway-dev make push-multiarch` to build and push the multi-arch docker image. + +__Note:__ Replace `IMAGE` with your registry's image name. + +### Deploying Envoy Gateway for Test/Dev + +* Run `make create-cluster` to create a [Kind][] cluster. + +#### Option 1: Use the Latest [gateway-dev][] Image + +* Run `TAG=latest make kube-deploy` to deploy Envoy Gateway in the Kind cluster using the latest image. Replace `latest` + to use a different image tag. + +#### Option 2: Use a Custom Image + +* Run `make kube-install-image` to build an image from the tip of your current branch and load it in the Kind cluster. +* Run `IMAGE_PULL_POLICY=IfNotPresent make kube-deploy` to install Envoy Gateway into the Kind cluster using your custom image. + +### Deploying Envoy Gateway in Kubernetes + +* Run `TAG=latest make kube-deploy` to deploy Envoy Gateway using the latest image into a Kubernetes cluster (linked to + the current kube context). Preface the command with `IMAGE` or replace `TAG` to use a different Envoy Gateway image or + tag. +* Run `make kube-undeploy` to uninstall Envoy Gateway from the cluster. + +__Note:__ Envoy Gateway is tested against Kubernetes v1.24.0. + +### Demo Setup + +* Run `make kube-demo` to deploy a demo backend service, gatewayclass, gateway and httproute resource +(similar to steps outlined in the [Quickstart][] docs) and test the configuration. +* Run `make kube-demo-undeploy` to delete the resources created by the `make kube-demo` command. + +### Run Gateway API Conformance Tests + +The commands below deploy Envoy Gateway to a Kubernetes cluster and run the Gateway API conformance tests. Refer to the +Gateway API [conformance homepage][] to learn more about the tests. If Envoy Gateway is already installed, run +`TAG=latest make run-conformance` to run the conformance tests. + +#### On a Linux Host + +* Run `TAG=latest make conformance` to create a Kind cluster, install Envoy Gateway using the latest [gateway-dev][] + image, and run Gateway API conformance tests. + +#### On a Mac Host + +Since Mac doesn't support [directly exposing][] the Docker network to the Mac host, use one of the following +workarounds to run conformance tests: + +* Deploy your own Kubernetes cluster or use Docker Desktop with [Kubernetes support][] and then run + `TAG=latest make kube-deploy run-conformance`. This will install Envoy Gateway using the latest [gateway-dev][] image + to the Kubernetes cluster using the current kubectl context and run the conformance tests. Use `make kube-undeploy` to + uninstall Envoy Gateway. +* Install and run [Docker Mac Net Connect][mac_connect] and then run `TAG=latest make conformance`. + +__Note:__ Preface commands with `IMAGE` or replace `TAG` to use a different Envoy Gateway image or tag. If `TAG` +is unspecified, the short SHA of your current branch is used. + +### Debugging the Envoy Config + +An easy way to view the envoy config that Envoy Gateway is using is to port-forward to the admin interface port +(currently `19000`) on the Envoy deployment that corresponds to a Gateway so that it can be accessed locally. + +Get the name of the Envoy deployment. The following example is for Gateway `eg` in the `default` namespace: + +```shell +export ENVOY_DEPLOYMENT=$(kubectl get deploy -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg -o jsonpath='{.items[0].metadata.name}') +``` + +Port forward the admin interface port: + +```shell +kubectl port-forward deploy/${ENVOY_DEPLOYMENT} -n envoy-gateway-system 19000:19000 +``` + +Now you are able to view the running Envoy configuration by navigating to `127.0.0.1:19000/config_dump`. + +There are many other endpoints on the [Envoy admin interface][] that may be helpful when debugging. + +### JWT Testing + +An example [JSON Web Token (JWT)][jwt] and [JSON Web Key Set (JWKS)][jwks] are used for the [request authentication][] +user guide. The JWT was created by the [JWT Debugger][], using the `RS256` algorithm. The public key from the JWTs +verify signature was copied to [JWK Creator][] for generating the JWK. The JWK Creator was configured with matching +settings, i.e. `Signing` public key use and the `RS256` algorithm. The generated JWK was wrapped in a JWKS structure +and is hosted in the repo. + +[Quickstart]: https://github.com/envoyproxy/gateway/blob/main/docs/latest/user/quickstart.md +[make]: https://www.gnu.org/software/make/ +[Github Actions]: https://docs.github.com/en/actions +[workflows]: https://github.com/envoyproxy/gateway/tree/main/.github/workflows +[Kind]: https://kind.sigs.k8s.io/ +[conformance homepage]: https://gateway-api.sigs.k8s.io/concepts/conformance/ +[directly exposing]: https://kind.sigs.k8s.io/docs/user/loadbalancer/ +[Kubernetes support]: https://docs.docker.com/desktop/kubernetes/ +[gateway-dev]: https://hub.docker.com/r/envoyproxy/gateway-dev/tags +[mac_connect]: https://github.com/chipmk/docker-mac-net-connect +[Envoy admin interface]: https://www.envoyproxy.io/docs/envoy/latest/operations/admin#operations-admin-interface +[jwt]: https://tools.ietf.org/html/rfc7519 +[jwks]: https://tools.ietf.org/html/rfc7517 +[request authentication]: https://gateway.envoyproxy.io/latest/user/authn.html +[JWT Debugger]: https://jwt.io/ +[JWK Creator]: https://russelldavies.github.io/jwk-creator/ diff --git a/site/content/en/v0.5.0/contributions/DOCS.md b/site/content/en/v0.5.0/contributions/DOCS.md new file mode 100644 index 000000000000..1abae95763c5 --- /dev/null +++ b/site/content/en/v0.5.0/contributions/DOCS.md @@ -0,0 +1,65 @@ +--- +title: "Working on the Envoy Gateway Docs" +--- + +The documentation for the Envoy Gateway lives in the `docs/` directory. Any +individual document can be written using either [reStructuredText] or [Markdown], +you can choose the format that you're most comfortable with when working on the +documentation. + +## Documentation Structure + +We supported the versioned Docs now, the directory name under docs represents +the version of docs. The root of the latest site is in `docs/latest/index.rst`. +This is probably where to start if you're trying to understand how things fit together. + +Note that the new contents should be added to `docs/latest` and will be cut off at +the next release. The contents under `docs/v0.2.0` are auto-generated, +and usually do not need to make changes to them, unless if you find the current release pages have +some incorrect contents. If so, you should send a PR to update contents both of `docs/latest` +and `docs/v0.2.0`. + +It's important to note that a given document _must_ have a reference in some +`.. toctree::` section for the document to be reachable. Not everything needs +to be in `docs/index.rst`'s `toctree` though. + +You can access the website which represents the current release in default, +and you can access the website which contains the latest version changes in +[Here][latest-website] or at the footer of the pages. + +## Documentation Workflow + +To work with the docs, just edit reStructuredText or Markdown files in `docs`, +then run + +```bash +make docs +``` + +This will create `docs/html` with the built HTML pages. You can view the docs +either simply by pointing a web browser at the `file://` path to your +`docs/html`, or by firing up a static webserver from that directory, e.g. + +``` shell +make docs-serve +``` + +If you want to generate a new release version of the docs, like `v0.3.0`, then run + +```bash +make docs-release TAG=v0.3.0 +``` + +This will update the VERSION file at the project root, which records current release version, +and it will be used in the pages version context and binary version output. Also, this will generate +new dir `docs/v0.3.0`, which contains docs at v0.3.0 and updates artifact links to `v0.3.0` +in all files under `docs/v0.3.0/user`, like `quickstart.md`, `http-routing.md` and etc. + +## Publishing Docs + +Whenever docs are pushed to `main`, CI will publish the built docs to GitHub +Pages. For more details, see `.github/workflows/docs.yaml`. + +[reStructuredText]: https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html +[Markdown]: https://daringfireball.net/projects/markdown/syntax +[latest-website]: https://gateway.envoyproxy.io/latest diff --git a/site/content/en/v0.5.0/contributions/RELEASING.md b/site/content/en/v0.5.0/contributions/RELEASING.md new file mode 100644 index 000000000000..617baf1933e0 --- /dev/null +++ b/site/content/en/v0.5.0/contributions/RELEASING.md @@ -0,0 +1,230 @@ +--- +title: "Release Process" +--- + +This document guides maintainers through the process of creating an Envoy Gateway release. + +- [Release Candidate](#release-candidate) +- [Minor Release](#minor-release) +- [Announce the Release](#announce-the-release) + +## Release Candidate + +The following steps should be used for creating a release candidate. + +### Prerequisites + +- Permissions to push to the Envoy Gateway repository. + +Set environment variables for use in subsequent steps: + +```shell +export MAJOR_VERSION=0 +export MINOR_VERSION=3 +export RELEASE_CANDIDATE_NUMBER=1 +export GITHUB_REMOTE=origin +``` + +1. Clone the repo, checkout the `main` branch, ensure it’s up-to-date, and your local branch is clean. +2. Create a topic branch for adding the release notes and updating the [VERSION][] file with the release version. Refer to previous [release notes][] and [VERSION][] for additional details. +3. Sign, commit, and push your changes to your fork. +4. Submit a [Pull Request][] to merge the changes into the `main` branch. Do not proceed until your PR has merged and + the [Build and Test][] has successfully completed. +5. Create a new release branch from `main`. The release branch should be named + `release/v${MAJOR_VERSION}.${MINOR_VERSION}`, e.g. `release/v0.3`. + + ```shell + git checkout -b release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +6. Push the branch to the Envoy Gateway repo. + + ```shell + git push ${GITHUB_REMOTE} release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +7. Create a topic branch for updating the Envoy proxy image to the tag supported by the release. Reference [PR #958][] + for additional details on updating the image tag. +8. Sign, commit, and push your changes to your fork. +9. Submit a [Pull Request][] to merge the changes into the `release/v${MAJOR_VERSION}.${MINOR_VERSION}` branch. Do not + proceed until your PR has merged into the release branch and the [Build and Test][] has completed for your PR. +10. Ensure your release branch is up-to-date and tag the head of your release branch with the release candidate number. + + ```shell + git tag -a v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} -m 'Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} Release Candidate' + ``` + +11. Push the tag to the Envoy Gateway repository. + + ```shell + git push ${GITHUB_REMOTE} v${MAJOR_VERSION}.${MINOR_VERSION}.0-rc.${RELEASE_CANDIDATE_NUMBER} + ``` + +12. This will trigger the [release GitHub action][] that generates the release, release artifacts, etc. +13. Confirm that the [release workflow][] completed successfully. +14. Confirm that the Envoy Gateway [image][] with the correct release tag was published to Docker Hub. +15. Confirm that the [release][] was created. +16. Note that the [Quickstart Guide][] references are __not__ updated for release candidates. However, test + the quickstart steps using the release candidate by manually updating the links. +17. [Generate][] the GitHub changelog. +18. Ensure you check the "This is a pre-release" checkbox when editing the GitHub release. +19. If you find any bugs in this process, please create an issue. + +### Setup cherry picker action + +After release branch cut, RM (Release Manager) should add job [cherrypick action](../../../.github/workflows/cherrypick.yaml) for target release. + +Configuration looks like following: + +```yaml + cherry_pick_release_v0_4: + runs-on: ubuntu-latest + name: Cherry pick into release-v0.4 + if: ${{ contains(github.event.pull_request.labels.*.name, 'cherrypick/release-v0.4') && github.event.pull_request.merged == true }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Cherry pick into release/v0.4 + uses: carloscastrojumo/github-cherry-pick-action@v1.0.9 + with: + branch: release/v0.4 + title: "[release/v0.4] {old_title}" + body: "Cherry picking #{old_pull_request_id} onto release/v0.4" + labels: | + cherrypick/release-v0.4 + # put release manager here + reviewers: | + AliceProxy +``` + +Replace `v0.4` with real branch name, and `AliceProxy` with the real name of RM. + +## Minor Release + +The following steps should be used for creating a minor release. + +### Prerequisites + +- Permissions to push to the Envoy Gateway repository. +- A release branch that has been cut from the corresponding release candidate. Refer to the + [Release Candidate](#release-candidate) section for additional details on cutting a release candidate. + +Set environment variables for use in subsequent steps: + +```shell +export MAJOR_VERSION=0 +export MINOR_VERSION=3 +export GITHUB_REMOTE=origin +``` + +1. Clone the repo, checkout the `main` branch, ensure it’s up-to-date, and your local branch is clean. +2. Create a topic branch for adding the release notes, release announcement, and versioned release docs. + + 1. Create the release notes. Reference previous [release notes][] for additional details. __Note:__ The release + notes should be an accumulation of the release candidate release notes and any changes since the release + candidate. + 2. Create a release announcement. Refer to [PR #635] as an example release announcement. + 3. Include the release in the compatibility matrix. Refer to [PR #1002] as an example. + 4. Generate the versioned release docs: + + ``` shell + make docs-release TAG=v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +3. Sign, commit, and push your changes to your fork. +4. Submit a [Pull Request][] to merge the changes into the `main` branch. Do not proceed until all your PRs have merged + and the [Build and Test][] has completed for your final PR. + +5. Checkout the release branch. + + ```shell + git checkout -b release/v${MAJOR_VERSION}.${MINOR_VERSION} $GITHUB_REMOTE/release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +6. If the tip of the release branch does not match the tip of `main`, perform the following: + + 1. Create a topic branch from the release branch. + 2. Cherry-pick the commits from `main` that differ from the release branch. + 3. Run tests locally, e.g. `make lint`. + 4. Sign, commit, and push your topic branch to your Envoy Gateway fork. + 5. Submit a PR to merge the topic from of your fork into the Envoy Gateway release branch. + 6. Do not proceed until the PR has merged and CI passes for the merged PR. + 7. If you are still on your topic branch, change to the release branch: + + ```shell + git checkout release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + + 8. Ensure your local release branch is up-to-date: + + ```shell + git pull $GITHUB_REMOTE release/v${MAJOR_VERSION}.${MINOR_VERSION} + ``` + +7. Tag the head of your release branch with the release tag. For example: + + ```shell + git tag -a v${MAJOR_VERSION}.${MINOR_VERSION}.0 -m 'Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION}.0 Release' + ``` + + __Note:__ The tag version differs from the release branch by including the `.0` patch version. + +8. Push the tag to the Envoy Gateway repository. + + ```shell + git push origin v${MAJOR_VERSION}.${MINOR_VERSION}.0 + ``` + +9. This will trigger the [release GitHub action][] that generates the release, release artifacts, etc. +10. Confirm that the [release workflow][] completed successfully. +11. Confirm that the Envoy Gateway [image][] with the correct release tag was published to Docker Hub. +12. Confirm that the [release][] was created. +13. Confirm that the steps in the [Quickstart Guide][] work as expected. +14. [Generate][] the GitHub changelog and include the following text at the beginning of the release page: + + ```console + # Release Announcement + + Check out the [v${MAJOR_VERSION}.${MINOR_VERSION} release announcement] + (https://gateway.envoyproxy.io/releases/v${MAJOR_VERSION}.${MINOR_VERSION}.html) to learn more about the release. + ``` + +If you find any bugs in this process, please create an issue. + +## Announce the Release + +It's important that the world knows about the release. Use the following steps to announce the release. + +1. Set the release information in the Envoy Gateway Slack channel. For example: + + ```shell + Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION} has been released: https://github.com/envoyproxy/gateway/releases/tag/v${MAJOR_VERSION}.${MINOR_VERSION}.0 + ``` + +2. Send a message to the Envoy Gateway Slack channel. For example: + + ```shell + On behalf of the entire Envoy Gateway community, I am pleased to announce the release of Envoy Gateway + v${MAJOR_VERSION}.${MINOR_VERSION}. A big thank you to all the contributors that made this release possible. + Refer to the official v${MAJOR_VERSION}.${MINOR_VERSION} announcement for release details and the project docs + to start using Envoy Gateway. + ... + ``` + + Link to the GitHub release and release announcement page that highlights the release. + +[release notes]: https://github.com/envoyproxy/gateway/tree/main/release-notes +[Pull Request]: https://github.com/envoyproxy/gateway/pulls +[Quickstart Guide]: https://github.com/envoyproxy/gateway/blob/main/docs/user/quickstart.md +[Build and Test]: https://github.com/envoyproxy/gateway/blob/main/.github/workflows/build_and_test.yaml +[release GitHub action]: https://github.com/envoyproxy/gateway/blob/main/.github/workflows/release.yaml +[release workflow]: https://github.com/envoyproxy/gateway/actions/workflows/release.yaml +[image]: https://hub.docker.com/r/envoyproxy/gateway/tags +[release]: https://github.com/envoyproxy/gateway/releases +[Generate]: https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes +[PR #635]: https://github.com/envoyproxy/gateway/pull/635 +[PR #958]: https://github.com/envoyproxy/gateway/pull/958 +[PR #1002]: https://github.com/envoyproxy/gateway/pull/1002 +[VERSION]: https://github.com/envoyproxy/gateway/blob/main/VERSION diff --git a/site/content/en/v0.5.0/contributions/_index.md b/site/content/en/v0.5.0/contributions/_index.md new file mode 100644 index 000000000000..3255d996472a --- /dev/null +++ b/site/content/en/v0.5.0/contributions/_index.md @@ -0,0 +1,5 @@ +--- +title: Get Involved +description: "This section includes contents related to **Contributions**" +weight: 100 +--- diff --git a/site/content/en/docs/v0.5.0/design/_index.md b/site/content/en/v0.5.0/design/_index.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/_index.md rename to site/content/en/v0.5.0/design/_index.md diff --git a/site/content/en/docs/v0.5.0/design/accesslog.md b/site/content/en/v0.5.0/design/accesslog.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/accesslog.md rename to site/content/en/v0.5.0/design/accesslog.md diff --git a/site/content/en/docs/v0.5.0/design/bootstrap.md b/site/content/en/v0.5.0/design/bootstrap.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/bootstrap.md rename to site/content/en/v0.5.0/design/bootstrap.md diff --git a/site/content/en/docs/v0.5.0/design/config-api.md b/site/content/en/v0.5.0/design/config-api.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/config-api.md rename to site/content/en/v0.5.0/design/config-api.md diff --git a/site/content/en/docs/v0.5.0/design/egctl.md b/site/content/en/v0.5.0/design/egctl.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/egctl.md rename to site/content/en/v0.5.0/design/egctl.md diff --git a/site/content/en/docs/v0.5.0/design/envoy-patch-policy.md b/site/content/en/v0.5.0/design/envoy-patch-policy.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/envoy-patch-policy.md rename to site/content/en/v0.5.0/design/envoy-patch-policy.md diff --git a/site/content/en/docs/v0.5.0/design/extending-envoy-gateway.md b/site/content/en/v0.5.0/design/extending-envoy-gateway.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/extending-envoy-gateway.md rename to site/content/en/v0.5.0/design/extending-envoy-gateway.md diff --git a/site/content/en/docs/v0.5.0/design/gatewayapi-translator.md b/site/content/en/v0.5.0/design/gatewayapi-translator.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/gatewayapi-translator.md rename to site/content/en/v0.5.0/design/gatewayapi-translator.md diff --git a/site/content/en/v0.5.0/design/goals.md b/site/content/en/v0.5.0/design/goals.md new file mode 100644 index 000000000000..fd38b2004c61 --- /dev/null +++ b/site/content/en/v0.5.0/design/goals.md @@ -0,0 +1,91 @@ +--- +title: "Goals" +weight: 1 +--- + +The high-level goal of the Envoy Gateway project is to attract more users to Envoy by lowering barriers to adoption +through expressive, extensible, role-oriented APIs that support a multitude of ingress and L7/L4 traffic routing +use cases; and provide a common foundation for vendors to build value-added products without having to re-engineer +fundamental interactions. + +## Objectives + +### Expressive API + +The Envoy Gateway project will expose a simple and expressive API, with defaults set for many capabilities. + +The API will be the Kubernetes-native [Gateway API][], plus Envoy-specific extensions and extension points. This +expressive and familiar API will make Envoy accessible to more users, especially application developers, and make Envoy +a stronger option for "getting started" as compared to other proxies. Application developers will use the API out of +the box without needing to understand in-depth concepts of Envoy Proxy or use OSS wrappers. The API will use familiar +nouns that [users](#personas) understand. + +The core full-featured Envoy xDS APIs will remain available for those who need more capability and for those who +add functionality on top of Envoy Gateway, such as commercial API gateway products. + +This expressive API will not be implemented by Envoy Proxy, but rather an officially supported translation layer +on top. + +### Batteries included + +Envoy Gateway will simplify how Envoy is deployed and managed, allowing application developers to focus on +delivering core business value. + +The project plans to include additional infrastructure components required by users to fulfill their Ingress and API +gateway needs: It will handle Envoy infrastructure provisioning (e.g. Kubernetes Service, Deployment, et cetera), and +possibly infrastructure provisioning of related sidecar services. It will include sensible defaults with the ability to +override. It will include channels for improving ops by exposing status through API conditions and Kubernetes status +sub-resources. + +Making an application accessible needs to be a trivial task for any developer. Similarly, infrastructure administrators +will enjoy a simplified management model that doesn't require extensive knowledge of the solution's architecture to +operate. + +### All environments + +Envoy Gateway will support running natively in Kubernetes environments as well as non-Kubernetes deployments. + +Initially, Kubernetes will receive the most focus, with the aim of having Envoy Gateway become the de facto +standard for Kubernetes ingress supporting the [Gateway API][]. +Additional goals include multi-cluster support and various runtime environments. + +### Extensibility + +Vendors will have the ability to provide value-added products built on the Envoy Gateway foundation. + +It will remain easy for end-users to leverage common Envoy Proxy extension points such as providing an implementation +for authentication methods and rate-limiting. For advanced use cases, users will have the ability to use the full power +of xDS. + +Since a general-purpose API cannot address all use cases, Envoy Gateway will provide additional extension points +for flexibility. As such, Envoy Gateway will form the base of vendor-provided managed control plane solutions, +allowing vendors to shift to a higher management plane layer. + +## Non-objectives + +### Cannibalize vendor models + +Vendors need to have the ability to drive commercial value, so the goal is not to cannibalize any existing vendor +monetization model, though some vendors may be affected by it. + +### Disrupt current Envoy usage patterns + +Envoy Gateway is purely an additive convenience layer and is not meant to disrupt any usage pattern of any user +with Envoy Proxy, xDS, or go-control-plane. + +## Personas + +_In order of priority_ + +### 1. Application developer + +The application developer spends the majority of their time developing business logic code. They require the ability to +manage access to their application. + +### 2. Infrastructure administrators + +The infrastructure administrators are responsible for the installation, maintenance, and operation of +API gateways appliances in infrastructure, such as CRDs, roles, service accounts, certificates, etc. +Infrastructure administrators support the needs of application developers by managing instances of Envoy Gateway. + +[Gateway API]: https://gateway-api.sigs.k8s.io/ diff --git a/site/content/en/docs/v0.5.0/design/local-envoy-gateway.md b/site/content/en/v0.5.0/design/local-envoy-gateway.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/local-envoy-gateway.md rename to site/content/en/v0.5.0/design/local-envoy-gateway.md diff --git a/site/content/en/docs/v0.5.0/design/metrics.md b/site/content/en/v0.5.0/design/metrics.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/metrics.md rename to site/content/en/v0.5.0/design/metrics.md diff --git a/site/content/en/docs/v0.5.0/design/pprof.md b/site/content/en/v0.5.0/design/pprof.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/pprof.md rename to site/content/en/v0.5.0/design/pprof.md diff --git a/site/content/en/docs/v0.5.0/design/rate-limit.md b/site/content/en/v0.5.0/design/rate-limit.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/rate-limit.md rename to site/content/en/v0.5.0/design/rate-limit.md diff --git a/site/content/en/docs/v0.5.0/design/request-authentication.md b/site/content/en/v0.5.0/design/request-authentication.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/request-authentication.md rename to site/content/en/v0.5.0/design/request-authentication.md diff --git a/site/content/en/docs/v0.5.0/design/roadmap.md b/site/content/en/v0.5.0/design/roadmap.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/roadmap.md rename to site/content/en/v0.5.0/design/roadmap.md diff --git a/site/content/en/docs/v0.5.0/design/system-design.md b/site/content/en/v0.5.0/design/system-design.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/system-design.md rename to site/content/en/v0.5.0/design/system-design.md diff --git a/site/content/en/docs/v0.5.0/design/tcp-udp-design.md b/site/content/en/v0.5.0/design/tcp-udp-design.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/tcp-udp-design.md rename to site/content/en/v0.5.0/design/tcp-udp-design.md diff --git a/site/content/en/docs/v0.5.0/design/tracing.md b/site/content/en/v0.5.0/design/tracing.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/tracing.md rename to site/content/en/v0.5.0/design/tracing.md diff --git a/site/content/en/docs/v0.5.0/design/watching.md b/site/content/en/v0.5.0/design/watching.md similarity index 100% rename from site/content/en/docs/v0.5.0/design/watching.md rename to site/content/en/v0.5.0/design/watching.md diff --git a/site/content/en/v0.5.0/helm/_index.md b/site/content/en/v0.5.0/helm/_index.md new file mode 100644 index 000000000000..b4c6f79c6fda --- /dev/null +++ b/site/content/en/v0.5.0/helm/_index.md @@ -0,0 +1,5 @@ +--- +title: "Installation" +description: This section includes installation related contents of Envoy Gateway. +weight: 70 +--- diff --git a/site/content/en/docs/v0.5.0/helm/api.md b/site/content/en/v0.5.0/helm/api.md similarity index 99% rename from site/content/en/docs/v0.5.0/helm/api.md rename to site/content/en/v0.5.0/helm/api.md index ca33e2c5e1fe..130c82250ced 100644 --- a/site/content/en/docs/v0.5.0/helm/api.md +++ b/site/content/en/v0.5.0/helm/api.md @@ -1,5 +1,5 @@ --- -title: "Helm Chart Details" +title: "Helm Chart Values" --- ![Version: v0.0.0-latest](https://img.shields.io/badge/Version-v0.0.0--latest-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) diff --git a/site/content/en/docs/v0.5.0/images/architecture.png b/site/content/en/v0.5.0/images/architecture.png similarity index 100% rename from site/content/en/docs/v0.5.0/images/architecture.png rename to site/content/en/v0.5.0/images/architecture.png diff --git a/site/content/en/docs/v0.5.0/images/extension-example.png b/site/content/en/v0.5.0/images/extension-example.png similarity index 100% rename from site/content/en/docs/v0.5.0/images/extension-example.png rename to site/content/en/v0.5.0/images/extension-example.png diff --git a/site/content/en/docs/v0.5.0/user/_index.md b/site/content/en/v0.5.0/user/_index.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/_index.md rename to site/content/en/v0.5.0/user/_index.md diff --git a/site/content/en/docs/v0.5.0/user/authn.md b/site/content/en/v0.5.0/user/authn.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/authn.md rename to site/content/en/v0.5.0/user/authn.md diff --git a/site/content/en/docs/v0.5.0/user/customize-envoyproxy.md b/site/content/en/v0.5.0/user/customize-envoyproxy.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/customize-envoyproxy.md rename to site/content/en/v0.5.0/user/customize-envoyproxy.md diff --git a/site/content/en/docs/v0.5.0/user/deployment-mode.md b/site/content/en/v0.5.0/user/deployment-mode.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/deployment-mode.md rename to site/content/en/v0.5.0/user/deployment-mode.md diff --git a/site/content/en/docs/v0.5.0/user/egctl.md b/site/content/en/v0.5.0/user/egctl.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/egctl.md rename to site/content/en/v0.5.0/user/egctl.md diff --git a/site/content/en/docs/v0.5.0/user/envoy-patch-policy.md b/site/content/en/v0.5.0/user/envoy-patch-policy.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/envoy-patch-policy.md rename to site/content/en/v0.5.0/user/envoy-patch-policy.md diff --git a/site/content/en/docs/v0.5.0/user/gateway-address.md b/site/content/en/v0.5.0/user/gateway-address.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/gateway-address.md rename to site/content/en/v0.5.0/user/gateway-address.md diff --git a/site/content/en/docs/v0.5.0/user/gatewayapi-support.md b/site/content/en/v0.5.0/user/gatewayapi-support.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/gatewayapi-support.md rename to site/content/en/v0.5.0/user/gatewayapi-support.md diff --git a/site/content/en/docs/v0.5.0/user/grpc-routing.md b/site/content/en/v0.5.0/user/grpc-routing.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/grpc-routing.md rename to site/content/en/v0.5.0/user/grpc-routing.md diff --git a/site/content/en/docs/v0.5.0/user/http-redirect.md b/site/content/en/v0.5.0/user/http-redirect.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/http-redirect.md rename to site/content/en/v0.5.0/user/http-redirect.md diff --git a/site/content/en/docs/v0.5.0/user/http-request-headers.md b/site/content/en/v0.5.0/user/http-request-headers.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/http-request-headers.md rename to site/content/en/v0.5.0/user/http-request-headers.md diff --git a/site/content/en/docs/v0.5.0/user/http-request-mirroring.md b/site/content/en/v0.5.0/user/http-request-mirroring.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/http-request-mirroring.md rename to site/content/en/v0.5.0/user/http-request-mirroring.md diff --git a/site/content/en/docs/v0.5.0/user/http-response-headers.md b/site/content/en/v0.5.0/user/http-response-headers.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/http-response-headers.md rename to site/content/en/v0.5.0/user/http-response-headers.md diff --git a/site/content/en/docs/v0.5.0/user/http-routing.md b/site/content/en/v0.5.0/user/http-routing.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/http-routing.md rename to site/content/en/v0.5.0/user/http-routing.md diff --git a/site/content/en/docs/v0.5.0/user/http-traffic-splitting.md b/site/content/en/v0.5.0/user/http-traffic-splitting.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/http-traffic-splitting.md rename to site/content/en/v0.5.0/user/http-traffic-splitting.md diff --git a/site/content/en/docs/v0.5.0/user/http-urlrewrite.md b/site/content/en/v0.5.0/user/http-urlrewrite.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/http-urlrewrite.md rename to site/content/en/v0.5.0/user/http-urlrewrite.md diff --git a/site/content/en/docs/v0.5.0/user/installation.md b/site/content/en/v0.5.0/user/installation.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/installation.md rename to site/content/en/v0.5.0/user/installation.md diff --git a/site/content/en/docs/v0.5.0/user/proxy-observability.md b/site/content/en/v0.5.0/user/proxy-observability.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/proxy-observability.md rename to site/content/en/v0.5.0/user/proxy-observability.md diff --git a/site/content/en/docs/v0.5.0/user/quickstart.md b/site/content/en/v0.5.0/user/quickstart.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/quickstart.md rename to site/content/en/v0.5.0/user/quickstart.md diff --git a/site/content/en/docs/v0.5.0/user/rate-limit.md b/site/content/en/v0.5.0/user/rate-limit.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/rate-limit.md rename to site/content/en/v0.5.0/user/rate-limit.md diff --git a/site/content/en/docs/v0.5.0/user/secure-gateways.md b/site/content/en/v0.5.0/user/secure-gateways.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/secure-gateways.md rename to site/content/en/v0.5.0/user/secure-gateways.md diff --git a/site/content/en/docs/v0.5.0/user/tcp-routing.md b/site/content/en/v0.5.0/user/tcp-routing.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/tcp-routing.md rename to site/content/en/v0.5.0/user/tcp-routing.md diff --git a/site/content/en/docs/v0.5.0/user/tls-cert-manager.md b/site/content/en/v0.5.0/user/tls-cert-manager.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/tls-cert-manager.md rename to site/content/en/v0.5.0/user/tls-cert-manager.md diff --git a/site/content/en/docs/v0.5.0/user/tls-passthrough.md b/site/content/en/v0.5.0/user/tls-passthrough.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/tls-passthrough.md rename to site/content/en/v0.5.0/user/tls-passthrough.md diff --git a/site/content/en/docs/v0.5.0/user/tls-termination.md b/site/content/en/v0.5.0/user/tls-termination.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/tls-termination.md rename to site/content/en/v0.5.0/user/tls-termination.md diff --git a/site/content/en/docs/v0.5.0/user/udp-routing.md b/site/content/en/v0.5.0/user/udp-routing.md similarity index 100% rename from site/content/en/docs/v0.5.0/user/udp-routing.md rename to site/content/en/v0.5.0/user/udp-routing.md diff --git a/site/hugo.toml b/site/hugo.toml index d4adfb072610..6349a7b1115f 100644 --- a/site/hugo.toml +++ b/site/hugo.toml @@ -31,7 +31,6 @@ taxonomyCloudTitle = ["Tag Cloud", "Categories"] # set taxonomyPageHeader = [] to hide taxonomies on the page headers taxonomyPageHeader = ["tags", "categories"] - # Highlighting config pygmentsCodeFences = true pygmentsUseClasses = false @@ -145,9 +144,11 @@ navbar_logo = true # Set to true if you don't want the top navbar to be translucent when over a `block/cover`, like on the homepage. navbar_translucent_over_cover_disable = false # Enable to show the side bar menu in its compact state. -sidebar_menu_compact = false +sidebar_menu_compact = true # Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled) sidebar_search_disable = false +# Show expand/collapse icon for sidebar sections +sidebar_menu_foldable = true # Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events. # This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set. @@ -207,24 +208,41 @@ enable = true # Add your release versions here [[params.versions]] version = "latest" - url = "/docs/latest" + url = "/latest" # Add your release versions here [[params.versions]] version = "v0.5.0" - url = "/docs/v0.5.0" + url = "/v0.5.0" # Add your release versions here [[params.versions]] version = "v0.4.0" - url = "/docs/v0.4.0" + url = "/v0.4.0" # Add your release versions here [[params.versions]] version = "v0.3.0" - url = "/docs/v0.3.0" + url = "/v0.3.0" # Add your release versions here [[params.versions]] version = "v0.2.0" - url = "/docs/v0.2.0" + url = "/v0.2.0" + +[menu] + [[menu.main]] + name = "Documentation" + weight = -101 + pre = "" + url = "/latest" + [[menu.main]] + name = "Blog" + weight = -100 + pre = "" + url = "/blog" + [[menu.main]] + name = "GitHub" + weight = -99 + pre = "" + url = "https://github.com/envoyproxy/gateway"