diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 2244b4a14cd..84d14063cae 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -1,47 +1,67 @@ -name: Docs +name: Hugo Docs on: push: branches: - - "main" + - "main" + - "release/v*" paths-ignore: - - "**/*.png" + - "**/*.png" pull_request: branches: - - "main" + - "main" + - "release/v*" paths-ignore: - - "**/*.png" + - "**/*.png" jobs: docs-lint: runs-on: ubuntu-22.04 steps: - - name: Check out code - uses: actions/checkout@v4 + - name: Check out code + uses: actions/checkout@v4 - - name: Run markdown linter - uses: nosborn/github-action-markdown-cli@v3.3.0 - with: - files: docs/* - config_file: ".github/markdown_lint_config.json" + - name: Run markdown linter + uses: nosborn/github-action-markdown-cli@v3.3.0 + with: + files: site/content/* + config_file: ".github/markdown_lint_config.json" docs-build: runs-on: ubuntu-latest needs: docs-lint + permissions: + contents: write steps: - - uses: actions/checkout@v4 - - uses: ./tools/github-actions/setup-deps + - name: Git checkout + uses: actions/checkout@v3 + with: + submodules: true + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: 'latest' + extended: true + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: '18' + + - name: Install Site Dependencies + run: cd site && npm install - - name: Generate EG Pages - run: make docs + - name: Build Site + run: cd site && npm run build:production - # Upload docs for GitHub Pages - - name: Upload GitHub Pages artifact - uses: actions/upload-pages-artifact@v2.0.0 - with: - # Path of the directory containing the static assets. - path: docs/html - # Duration after which artifact will expire in days. - # retention-days: # optional, default is 1 + # Upload docs for GitHub Pages + - name: Upload GitHub Pages artifact + uses: actions/upload-pages-artifact@v2.0.0 + with: + # Path of the directory containing the static assets. + path: site/public + # Duration after which artifact will expire in days. + # retention-days: # optional, default is 1 # This workflow contains a single job called "build" docs-publish: @@ -61,6 +81,6 @@ jobs: url: ${{ steps.deployment.outputs.page_url }} steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v2.0.4 + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2.0.4 diff --git a/GOALS.md b/GOALS.md index 519be9f180f..8220a44de38 100644 --- a/GOALS.md +++ b/GOALS.md @@ -8,6 +8,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 @@ -23,6 +24,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. @@ -37,6 +39,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 @@ -44,6 +47,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 @@ -57,21 +61,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/docs/index.html b/docs/index.html deleted file mode 100644 index 9a7d823d866..00000000000 --- a/docs/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -
- - - diff --git a/docs/latest/about_docs.rst b/docs/latest/about_docs.rst deleted file mode 100644 index ecaa28247b9..00000000000 --- a/docs/latest/about_docs.rst +++ /dev/null @@ -1,9 +0,0 @@ -About the Documentation -======================= - -Learn how to contribute to Envoy Gateway documentation. - -.. toctree:: - :maxdepth: 1 - - dev/DOCS diff --git a/docs/latest/api_docs.rst b/docs/latest/api_docs.rst deleted file mode 100644 index b470527c50c..00000000000 --- a/docs/latest/api_docs.rst +++ /dev/null @@ -1,10 +0,0 @@ -API Docs -============== - -API reference documentation for Envoy Gateway. - -.. toctree:: - :maxdepth: 1 - - Config APIsManages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway
+{{< blocks/link-down color="white" >}} +{{< /blocks/cover >}} + +{{% blocks/lead color="black" %}} +Manage **Envoy Proxy** as a **Standalone** or **Kubernetes-based** Application Gateway. + +**Gateway API** are used to **dynamically** provision and configure the managed Envoy Proxies. +{{% /blocks/lead %}} + +{{% blocks/section type="row" color="secondary" %}} + +{{% blocks/feature icon="fa fa-commenting" title="Expressive API" %}} +Based on Gateway API, with reasonable default settings to simplify the Envoy user experience, without knowing details of Envoy proxy. +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa fa-battery-full" title="Batteries included" %}} +Automatically Envoy infrastructure provisioning and management. +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa fa-tree" title="All environments" %}} +Support for heterogeneous environments. Initially, Kubernetes will receive the most focus. +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa fa-cubes" title="Extensibility" %}} +Vendors will have the ability to provide value-added products built on the Envoy Gateway foundation. +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa fa-lock" title="Security"%}} +Supports a variety of Security features, such as TLS, TLS pass-through, secure gRPC, authentication. rate-limiting, etc. +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa fa-bolt" title="High Performance"%}} +Built on top of the high-performance Envoy proxy, which can handle millions of requests per second. +{{% /blocks/feature %}} + +{{% /blocks/section %}} + +{{% blocks/lead color="black" %}} +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** +fundamental interactions. + +{{% /blocks/lead %}} + +{{% blocks/section type="row" color="secondary" %}} + +{{% blocks/feature icon="fab fa-app-store-ios" title="Download **from Github**" url="https://github.com/envoyproxy/gateway/releases" %}} +Try Envoy Gateway in GitHub Releases +{{% /blocks/feature %}} + +{{% blocks/feature icon="fab fa-github" title="Contributions Welcome!" + url="/latest/contributions/" %}} +We do a [Pull Request](https://github.com/envoyproxy/gateway/pulls) +contributions workflow on **GitHub**. +{{% /blocks/feature %}} + +{{% blocks/feature icon="fab fa-slack" title="Contact us on Slack!" + url="https://envoyproxy.slack.com/archives/C03E6NHLESV" %}} +For announcement of latest features etc. +{{% /blocks/feature %}} + +{{% /blocks/section %}} + diff --git a/site/content/en/about/featured-background.jpg b/site/content/en/about/featured-background.jpg new file mode 100644 index 00000000000..b1f8c56bc29 Binary files /dev/null and b/site/content/en/about/featured-background.jpg differ diff --git a/site/content/en/about/index.md b/site/content/en/about/index.md new file mode 100644 index 00000000000..8de7cc5a654 --- /dev/null +++ b/site/content/en/about/index.md @@ -0,0 +1,126 @@ +--- +title: About Envoy Gateway +linkTitle: About +--- + +{{% blocks/cover title="About Envoy Gateway" height="auto" %}} + +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. + +Read on to find out more, or visit our [documentation](/latest/) to get started! +{{% /blocks/cover %}} + +{{% blocks/section color="black" %}} + +## Objectives + +--- + +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/section %}} + +{{% blocks/section color="secondary" %}} + +### ***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](https://gateway-api.sigs.k8s.io), 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](https://gateway-api.sigs.k8s.io/). +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. + +{{% /blocks/section %}} +{{% blocks/section color="black" %}} + +## 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. + +{{% /blocks/section %}} + +{{% blocks/section color="secondary" %}} + +## Personas + +***In order of priority*** + +--- + +### 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. + +--- + +### 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. + +{{% /blocks/section %}} diff --git a/site/content/en/blog/_index.md b/site/content/en/blog/_index.md new file mode 100644 index 00000000000..45f940a5823 --- /dev/null +++ b/site/content/en/blog/_index.md @@ -0,0 +1,7 @@ +--- +title: Blog +--- + +This is the **blog** section. It has two categories: News and Releases. + +Files in these directories will be listed in reverse chronological order. diff --git a/site/content/en/blog/compatibility/_index.md b/site/content/en/blog/compatibility/_index.md new file mode 100644 index 00000000000..5c1ae3b1db3 --- /dev/null +++ b/site/content/en/blog/compatibility/_index.md @@ -0,0 +1,4 @@ +--- +title: Compatibility Matrix +description: This section includes Compatibility Matrix of Envoy Gateway. +--- diff --git a/site/content/en/blog/compatibility/matrix/matrix.md b/site/content/en/blog/compatibility/matrix/matrix.md new file mode 100644 index 00000000000..4f7377b80af --- /dev/null +++ b/site/content/en/blog/compatibility/matrix/matrix.md @@ -0,0 +1,20 @@ +--- +title: Versions +date: 2022-10-01 +description: This section includes Compatibility Matrix of Envoy Gateway. +--- + +Envoy Gateway relies on the Envoy Proxy and the Gateway API, and runs +within a Kubernetes cluster. Not all versions of each of these products +can function together for Envoy Gateway. Supported version combinations +are listed below; **bold** type indicates the versions of the Envoy +Proxy and the Gateway API actually compiled into each Envoy Gateway +release. + +| Envoy Gateway version | Envoy Proxy version | Rate Limit version | Gateway API version | Kubernetes version | +| --------------------- | ------------------- | ------------------ | ------------------- | ------------------- | +| v0.5.0 | **v1.27-latest** | **e059638d** | **v0.7.1** | v1.25, v1.26, v1.27 | +| v0.4.0 | **v1.26-latest** | **542a6047** | **v0.6.2** | v1.25, v1.26, v1.27 | +| v0.3.0 | **v1.25-latest** | **f28024e3** | **v0.6.1** | v1.24, v1.25, v1.26 | +| v0.2.0 | **v1.23-latest** | | **v0.5.1** | v1.24 | +| latest | **dev-latest** | **master** | **v0.8.1** | v1.25, v1.26, v1.27 | diff --git a/site/content/en/blog/news/_index.md b/site/content/en/blog/news/_index.md new file mode 100644 index 00000000000..c609aa25431 --- /dev/null +++ b/site/content/en/blog/news/_index.md @@ -0,0 +1,4 @@ +--- +title: News +weight: 20 +--- diff --git a/site/content/en/blog/news/new-website/new-website.md b/site/content/en/blog/news/new-website/new-website.md new file mode 100644 index 00000000000..3ab77791826 --- /dev/null +++ b/site/content/en/blog/news/new-website/new-website.md @@ -0,0 +1,68 @@ +--- +date: 2023-10-08 +title: Welcome to new website! +linkTitle: Welcome to new website +description: > + We migrate our docs from Sphinx to Hugo now! +author: Xunzhuo Liu +--- + +{{% alert title="Summary" color="primary" %}} +Migrate from ***Sphinx*** to ***Hugo*** for Envoy Gateway Documents. +{{% /alert %}} + +## Introduction + +In the realm of static site generators, two names often come up: Sphinx and Hugo. While both are powerful tools, we recently made the decision to migrate our documentation from Sphinx to Hugo. This article aims to shed light on the reasons behind this move and the advantages we've discovered in using Hugo for static blogging. + +## Why Migrate? + +Sphinx, originally created for Python documentation, has served us well over the years. It offers a robust and flexible solution for technical documentation. However, as our needs evolved, we found ourselves seeking a tool that could offer faster build times, ease of use, and a more dynamic community. This led us to Hugo. + +## Advantages of Hugo + ++ **Speed**: Hugo is renowned for its speed. It can build a site in a fraction of the time it takes other static site generators. This is a significant advantage when working with large sites or when quick updates are necessary. + ++ **Ease of Use**: Hugo's simplicity is another strong point. It doesn't require a runtime environment, and its installation process is straightforward. Moreover, Hugo's content management is intuitive, making it easy for non-technical users to create and update content. + ++ **Flexibility**: Hugo supports a wide range of content types, from blog posts to documentation. It also allows for custom outputs, enabling us to tailor our site to our specific needs. + ++ **Active Community**: Hugo boasts a vibrant and active community. This means regular updates, a wealth of shared themes and plugins, and a responsive support network. + ++ **Multilingual Support**: Hugo's built-in support for multiple languages is a boon for global teams. It allows us to create content in various languages without the need for additional plugins or tools. + ++ **Markdown Support**: Hugo's native support for Markdown makes it easy to write and format content. This is particularly beneficial for technical writing, where code snippets and technical formatting are common. + +## Challenges Encountered During the Migration + +While the migration from Sphinx to Hugo has brought numerous benefits, it was not without its challenges and it really took me a lot of time on it. Here are some of the difficulties we encountered during the process: + ++ **Converting RST to Markdown**: Our documentation contained a large number of reStructuredText (RST) files, which needed to be converted to Markdown, the format Hugo uses. This required a careful and meticulous conversion process to ensure no information was lost or incorrectly formatted. + ++ **Adding Headings to tons of Markdown Files**: Hugo requires headings in its Markdown files, which our old documents did not have. We had to write scripts to add these headings in bulk, a task that required a deep understanding of both our content and Hugo's requirements. + ++ **Handling Multiple Versions**: Our documentation had already gone through five iterations, resulting in a large number of files to manage. We had to ensure that all versions were correctly migrated and that the versioning system in Hugo was correctly set up. + ++ **Designing a New Page Structure and Presentation**: To provide a better reading experience, we needed to design a new way to organize and present our pages. This involved understanding our readers' needs and how best to structure our content to meet those needs. + ++ **Updating Existing Toolchains**: The migration also required us to update our existing toolchains, including Makefile, CI, release processes, and auto-generation tools. This was a complex task that required a deep understanding of both our old and new systems. + +Despite these challenges, the benefits of migrating to Hugo have far outweighed the difficulties. The process, while complex, has provided us with a more efficient, user-friendly, and flexible system for managing our static blog. It's a testament to the power of Hugo and the value of continuous improvement in the tech world. + +## Conclusion + +While Sphinx has its strengths, our migration to Hugo has opened up new possibilities for our static blogging. The speed, ease of use, flexibility, and active community offered by Hugo have made it a powerful tool in our arsenal. + +## Some Words + +{{% alert title="Author" color="primary" %}} +[Xunzhuo Liu](https://github.com/Xunzhuo), the maintainer and steering committee member of Envoy Gateway. +{{% /alert %}} + +From the inception of my involvement in the project, I have placed great emphasis on user experience, including both developer and end-user experiences. I have built a rich toolchain, automated pipelines, Helm Charts, command-line tools, and documentation to enhance the overall experience of interacting with the project. + +My dedication to improving user experience was a driving force behind the decision to migrate from Sphinx to Hugo. I recognized the potential for Hugo to provide a more intuitive and efficient platform for managing the project's static blog. Despite the challenges encountered during the migration, my commitment to enhancing user experience ensured a successful transition. + +Through this migration, I have further demonstrated my commitment to continuous improvement and my ability to adapt to the evolving needs of the project. My work serves as a testament to the importance of user experience in software development and the value of embracing new tools and technologies to meet these needs. + +Enjoy new Envoy Gateway Website! ❤️ diff --git a/site/content/en/blog/presentations/_index.md b/site/content/en/blog/presentations/_index.md new file mode 100644 index 00000000000..c7e0ad1a052 --- /dev/null +++ b/site/content/en/blog/presentations/_index.md @@ -0,0 +1,4 @@ +--- +title: Presentations +weight: 20 +--- diff --git a/site/content/en/blog/presentations/kubecon-cn-2023/kubecon-cn-2023.md b/site/content/en/blog/presentations/kubecon-cn-2023/kubecon-cn-2023.md new file mode 100644 index 00000000000..613b9ae1574 --- /dev/null +++ b/site/content/en/blog/presentations/kubecon-cn-2023/kubecon-cn-2023.md @@ -0,0 +1,25 @@ +--- +title: "KubeCon China 2023" +date: 2023-09-28 +--- + +{{% alert title="Topic: Envoy Gateway: The API Gateway in the Cloud Native Era" color="warning" %}} + +***--- KubeCon China 2023*** + +{{% /alert %}} + +{{% alert title="Speaker" color="primary" %}} + ++ **Xunzhuo Liu**: Tencent, Envoy Gateway Maintainer ++ **Huabing Zhao**: Tetrate.io, Envoy Gateway Reviewer + +{{% /alert %}} + +{{% alert title="Slides" color="info" %}} +Download from [Link](https://static.sched.com/hosted_files/kccncosschn2023/60/KubeCon-Envoy%20Gateway_%20The%20API%20Gateway-in-the-Cloud-Native-Era.pptx?_gl=1*1aq9xw*_ga*MTM2MDcyNzI2My4xNjkwODU3ODMy*_ga_XH5XM35VHB*MTY5NjgzNjA1NC4xNS4xLjE2OTY4MzYwNjIuNTIuMC4w). +{{% /alert %}} + +## Watch Videos + +*To be uploaded...* diff --git a/site/content/en/blog/presentations/kubecon-eu-2023/kubecon-eu-2023.md b/site/content/en/blog/presentations/kubecon-eu-2023/kubecon-eu-2023.md new file mode 100644 index 00000000000..13a0ccb8c51 --- /dev/null +++ b/site/content/en/blog/presentations/kubecon-eu-2023/kubecon-eu-2023.md @@ -0,0 +1,24 @@ +--- +title: "KubeCon Europe 2023" +date: 2023-05-01 +--- + +{{% alert title="Topic: Envoy Gateway Update" color="warning" %}} + +***--- KubeCon Europe 2023*** + +{{% /alert %}} + +{{% alert title="Speaker" color="primary" %}} + ++ **Alice Wasko**: Ambassador Labs, Envoy Gateway Maintainer + +{{% /alert %}} + +{{% alert title="Slides" color="info" %}} +Download from [Link](https://static.sched.com/hosted_files/kccnceu2023/58/Kubecon_EU_2023_Envoy_Gateway_Update.pptx). +{{% /alert %}} + +## Watch Videos + +{{< youtube 4vnJxt9sVho >}} diff --git a/site/content/en/blog/presentations/kubecon-na-2022/kubecon-na-2022.md b/site/content/en/blog/presentations/kubecon-na-2022/kubecon-na-2022.md new file mode 100644 index 00000000000..4714c0f3d37 --- /dev/null +++ b/site/content/en/blog/presentations/kubecon-na-2022/kubecon-na-2022.md @@ -0,0 +1,25 @@ +--- +title: "KubeCon North America 2022" +date: 2022-10-28 +--- + +{{% alert title="Topic: Envoy Gateway Update" color="warning" %}} + +***--- KubeCon North America 2022*** + +{{% /alert %}} + +{{% alert title="Speaker" color="primary" %}} + ++ **Daneyon Hansen**: Solo.io, Envoy Gateway Maintainer ++ **Alice Wasko**: Ambassador Labs, Envoy Gateway Maintainer + +{{% /alert %}} + +{{% alert title="Slides" color="info" %}} +Download from [Link](https://static.sched.com/hosted_files/envoyconna22/2f/Envoy_Gateway_Project_Update_EnvoyCon_NA_2022.pptx). +{{% /alert %}} + +## Watch Videos + +{{< youtube 3MUOZc8XNCc >}} diff --git a/docs/v0.5.0/releases/README.md b/site/content/en/blog/releases/_index.md similarity index 98% rename from docs/v0.5.0/releases/README.md rename to site/content/en/blog/releases/_index.md index 4aa878e8407..fa3640ba5a9 100644 --- a/docs/v0.5.0/releases/README.md +++ b/site/content/en/blog/releases/_index.md @@ -1,4 +1,6 @@ -# Release Details +--- +title: "Release Announcement" +--- This document provides details for Envoy Gateway releases. Envoy Gateway follows the Semantic Versioning [v2.0.0 spec][] for release versioning. Since Envoy Gateway is a new project, minor releases are the only defined releases. Envoy diff --git a/docs/latest/releases/v0.2.md b/site/content/en/blog/releases/v0.2.md similarity index 95% rename from docs/latest/releases/v0.2.md rename to site/content/en/blog/releases/v0.2.md index a0dc0e885de..2328a4a4bb5 100644 --- a/docs/latest/releases/v0.2.md +++ b/site/content/en/blog/releases/v0.2.md @@ -1,16 +1,12 @@ --- title: Announcing Envoy Gateway v0.2 -linktitle: v0.2 subtitle: Major Update +linktitle: Release v0.2 description: Envoy Gateway v0.2 release announcement. publishdate: 2022-10-20 release: v0.2.0 skip_list: true -aliases: -- /releases/v0.2 -- /releases/v0.2.0 --- -# Envoy Gateway Release v0.2 We are pleased to announce the release of Envoy Gateway v0.2! diff --git a/docs/v0.5.0/releases/v0.3.md b/site/content/en/blog/releases/v0.3.md similarity index 94% rename from docs/v0.5.0/releases/v0.3.md rename to site/content/en/blog/releases/v0.3.md index 96d6d6d49eb..6be5b392a8a 100644 --- a/docs/v0.5.0/releases/v0.3.md +++ b/site/content/en/blog/releases/v0.3.md @@ -1,16 +1,12 @@ --- title: Announcing Envoy Gateway v0.3 -linktitle: v0.3 subtitle: Major Update +linktitle: Release v0.3 description: Envoy Gateway v0.3 release announcement. publishdate: 2023-02-09 release: v0.3.0 skip_list: true -aliases: -- /releases/v0.3 -- /releases/v0.3.0 --- -# Envoy Gateway Release v0.3 We are pleased to announce the release of Envoy Gateway v0.3! diff --git a/docs/v0.4.0/releases/v0.4.md b/site/content/en/blog/releases/v0.4.md similarity index 95% rename from docs/v0.4.0/releases/v0.4.md rename to site/content/en/blog/releases/v0.4.md index 81a9bc3a0ed..1ad763f35b4 100644 --- a/docs/v0.4.0/releases/v0.4.md +++ b/site/content/en/blog/releases/v0.4.md @@ -1,16 +1,12 @@ --- title: Announcing Envoy Gateway v0.4 -linktitle: v0.4 subtitle: Major Update +linktitle: Release v0.4 description: Envoy Gateway v0.4 release announcement. publishdate: 2023-04-24 release: v0.4.0 skip_list: true -aliases: -- /releases/v0.4 -- /releases/v0.4.0 --- -# Envoy Gateway Release v0.4 We are pleased to announce the release of Envoy Gateway v0.4! diff --git a/docs/v0.5.0/releases/v0.5.md b/site/content/en/blog/releases/v0.5.md similarity index 95% rename from docs/v0.5.0/releases/v0.5.md rename to site/content/en/blog/releases/v0.5.md index 8c7b72cd53b..1bf1d6ed8c6 100644 --- a/docs/v0.5.0/releases/v0.5.md +++ b/site/content/en/blog/releases/v0.5.md @@ -1,16 +1,12 @@ --- title: Announcing Envoy Gateway v0.5 -linktitle: v0.5 subtitle: Major Update +linktitle: Release v0.5 description: Envoy Gateway v0.5 release announcement. publishdate: 2023-08-02 release: v0.5.0 skip_list: true -aliases: -- /releases/v0.5 -- /releases/v0.5.0 --- -# Envoy Gateway Release v0.5 We are pleased to announce the release of Envoy Gateway v0.5! diff --git a/site/content/en/featured-background.jpg b/site/content/en/featured-background.jpg new file mode 100644 index 00000000000..b1f8c56bc29 Binary files /dev/null and b/site/content/en/featured-background.jpg differ diff --git a/site/content/en/latest/_index.md b/site/content/en/latest/_index.md new file mode 100644 index 00000000000..567b43bfe36 --- /dev/null +++ b/site/content/en/latest/_index.md @@ -0,0 +1,21 @@ ++++ +title = "Welcome to Envoy Gateway" +linktitle = "Documentation" +description = "Envoy Gateway Documents" + +[[cascade]] +type = "docs" ++++ + +{{% alert title="Note" color="primary" %}} + +This project is under **active** development. Many features are not complete. We would love for you to [Get Involved](contributions/)! + +{{% /alert %}} + +Envoy Gateway is an open source project for managing [Envoy Proxy](https://www.envoyproxy.io/) as a standalone or Kubernetes-based application +gateway. [Gateway API](https://gateway-api.sigs.k8s.io/) resources are used to dynamically provision and configure the managed Envoy Proxies. + +![architecture](/img/traffic.png) + +## Ready to get started? diff --git a/site/content/en/latest/api/_index.md b/site/content/en/latest/api/_index.md new file mode 100644 index 00000000000..396d9ffcefc --- /dev/null +++ b/site/content/en/latest/api/_index.md @@ -0,0 +1,5 @@ +--- +title: "API" +description: This section includes APIs of Envoy Gateway. +weight: 80 +--- diff --git a/docs/latest/api/extension_types.md b/site/content/en/latest/api/extension_types.md similarity index 95% rename from docs/latest/api/extension_types.md rename to site/content/en/latest/api/extension_types.md index 2f47c3f89f8..73bff134936 100644 --- a/docs/latest/api/extension_types.md +++ b/site/content/en/latest/api/extension_types.md @@ -1,4 +1,7 @@ -# API Reference ++++ +title = "API Reference" ++++ + ## Packages - [gateway.envoyproxy.io/v1alpha1](#gatewayenvoyproxyiov1alpha1) @@ -22,7 +25,7 @@ API group. -## AuthenticationFilter +#### AuthenticationFilter @@ -38,7 +41,7 @@ API group. | `spec` _[AuthenticationFilterSpec](#authenticationfilterspec)_ | Spec defines the desired state of the AuthenticationFilter type. | -## AuthenticationFilterSpec +#### AuthenticationFilterSpec @@ -53,7 +56,7 @@ _Appears in:_ | `jwtProviders` _[JwtAuthenticationFilterProvider](#jwtauthenticationfilterprovider) array_ | JWT defines the JSON Web Token (JWT) authentication provider type. When multiple jwtProviders are specified, the JWT is considered valid if any of the providers successfully validate the JWT. For additional details, see https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/jwt_authn_filter.html. | -## AuthenticationFilterType +#### AuthenticationFilterType _Underlying type:_ `string` @@ -64,7 +67,7 @@ _Appears in:_ -## BootstrapType +#### BootstrapType _Underlying type:_ `string` @@ -75,7 +78,7 @@ _Appears in:_ -## ClaimToHeader +#### ClaimToHeader @@ -90,7 +93,7 @@ _Appears in:_ | `claim` _string_ | Claim is the JWT Claim that should be saved into the header : it can be a nested claim of type (eg. "claim.nested.key", "sub"). The nested claim name must use dot "." to separate the JSON name path. | -## ClientTrafficPolicy +#### ClientTrafficPolicy @@ -107,7 +110,7 @@ _Appears in:_ | `spec` _[ClientTrafficPolicySpec](#clienttrafficpolicyspec)_ | Spec defines the desired state of ClientTrafficPolicy. | -## ClientTrafficPolicyList +#### ClientTrafficPolicyList @@ -123,7 +126,7 @@ ClientTrafficPolicyList contains a list of ClientTrafficPolicy resources. | `items` _[ClientTrafficPolicy](#clienttrafficpolicy) array_ | | -## ClientTrafficPolicySpec +#### ClientTrafficPolicySpec @@ -140,7 +143,7 @@ _Appears in:_ -## CustomTag +#### CustomTag @@ -157,7 +160,7 @@ _Appears in:_ | `requestHeader` _[RequestHeaderCustomTag](#requestheadercustomtag)_ | RequestHeader adds value from request header to each span. It's required when the type is "RequestHeader". | -## CustomTagType +#### CustomTagType _Underlying type:_ `string` @@ -168,7 +171,7 @@ _Appears in:_ -## EnvironmentCustomTag +#### EnvironmentCustomTag @@ -183,7 +186,7 @@ _Appears in:_ | `defaultValue` _string_ | DefaultValue defines the default value to use if the environment variable is not set. | -## EnvoyGateway +#### EnvoyGateway @@ -204,7 +207,7 @@ EnvoyGateway is the schema for the envoygateways API. | `extensionApis` _[ExtensionAPISettings](#extensionapisettings)_ | ExtensionAPIs defines the settings related to specific Gateway API Extensions implemented by Envoy Gateway | -## EnvoyGatewayAdmin +#### EnvoyGatewayAdmin @@ -220,7 +223,7 @@ _Appears in:_ | `debug` _boolean_ | Debug defines if enable the /debug endpoint of Envoy Gateway. | -## EnvoyGatewayAdminAddress +#### EnvoyGatewayAdminAddress @@ -235,7 +238,7 @@ _Appears in:_ | `host` _string_ | Host defines the admin server hostname. | -## EnvoyGatewayCustomProvider +#### EnvoyGatewayCustomProvider @@ -250,7 +253,7 @@ _Appears in:_ | `infrastructure` _[EnvoyGatewayInfrastructureProvider](#envoygatewayinfrastructureprovider)_ | Infrastructure defines the desired infrastructure provider. This provider is used to specify the provider to be used to provide an environment to deploy the out resources like the Envoy Proxy data plane. | -## EnvoyGatewayFileResourceProvider +#### EnvoyGatewayFileResourceProvider @@ -264,7 +267,7 @@ _Appears in:_ | `paths` _string array_ | Paths are the paths to a directory or file containing the resource configuration. Recursive sub directories are not currently supported. | -## EnvoyGatewayHostInfrastructureProvider +#### EnvoyGatewayHostInfrastructureProvider @@ -275,7 +278,7 @@ _Appears in:_ -## EnvoyGatewayInfrastructureProvider +#### EnvoyGatewayInfrastructureProvider @@ -290,7 +293,7 @@ _Appears in:_ | `host` _[EnvoyGatewayHostInfrastructureProvider](#envoygatewayhostinfrastructureprovider)_ | Host defines the configuration of the Host provider. Host provides runtime deployment of the data plane as a child process on the host environment. | -## EnvoyGatewayKubernetesProvider +#### EnvoyGatewayKubernetesProvider @@ -307,7 +310,7 @@ _Appears in:_ | `overwrite_control_plane_certs` _boolean_ | OverwriteControlPlaneCerts updates the secrets containing the control plane certs, when set. | -## EnvoyGatewayLogComponent +#### EnvoyGatewayLogComponent _Underlying type:_ `string` @@ -318,7 +321,7 @@ _Appears in:_ -## EnvoyGatewayLogging +#### EnvoyGatewayLogging @@ -333,7 +336,7 @@ _Appears in:_ | `level` _object (keys:[EnvoyGatewayLogComponent](#envoygatewaylogcomponent), values:[LogLevel](#loglevel))_ | Level is the logging level. If unspecified, defaults to "info". EnvoyGatewayLogComponent options: default/provider/gateway-api/xds-translator/xds-server/infrastructure/global-ratelimit. LogLevel options: debug/info/error/warn. | -## EnvoyGatewayProvider +#### EnvoyGatewayProvider @@ -350,7 +353,7 @@ _Appears in:_ | `custom` _[EnvoyGatewayCustomProvider](#envoygatewaycustomprovider)_ | Custom defines the configuration for the Custom provider. This provider allows you to define a specific resource provider and a infrastructure provider. | -## EnvoyGatewayResourceProvider +#### EnvoyGatewayResourceProvider @@ -365,7 +368,7 @@ _Appears in:_ | `file` _[EnvoyGatewayFileResourceProvider](#envoygatewayfileresourceprovider)_ | File defines the configuration of the File provider. File provides runtime configuration defined by one or more files. | -## EnvoyGatewaySpec +#### EnvoyGatewaySpec @@ -385,7 +388,7 @@ _Appears in:_ | `extensionApis` _[ExtensionAPISettings](#extensionapisettings)_ | ExtensionAPIs defines the settings related to specific Gateway API Extensions implemented by Envoy Gateway | -## EnvoyJSONPatchConfig +#### EnvoyJSONPatchConfig @@ -401,7 +404,7 @@ _Appears in:_ | `operation` _[JSONPatchOperation](#jsonpatchoperation)_ | Patch defines the JSON Patch Operation | -## EnvoyPatchPolicy +#### EnvoyPatchPolicy @@ -418,7 +421,7 @@ _Appears in:_ | `spec` _[EnvoyPatchPolicySpec](#envoypatchpolicyspec)_ | Spec defines the desired state of EnvoyPatchPolicy. | -## EnvoyPatchPolicyList +#### EnvoyPatchPolicyList @@ -434,7 +437,7 @@ EnvoyPatchPolicyList contains a list of EnvoyPatchPolicy resources. | `items` _[EnvoyPatchPolicy](#envoypatchpolicy) array_ | | -## EnvoyPatchPolicySpec +#### EnvoyPatchPolicySpec @@ -453,7 +456,7 @@ _Appears in:_ -## EnvoyPatchType +#### EnvoyPatchType _Underlying type:_ `string` @@ -464,7 +467,7 @@ _Appears in:_ -## EnvoyProxy +#### EnvoyProxy @@ -480,7 +483,7 @@ EnvoyProxy is the schema for the envoyproxies API. | `spec` _[EnvoyProxySpec](#envoyproxyspec)_ | EnvoyProxySpec defines the desired state of EnvoyProxy. | -## EnvoyProxyKubernetesProvider +#### EnvoyProxyKubernetesProvider @@ -495,7 +498,7 @@ _Appears in:_ | `envoyService` _[KubernetesServiceSpec](#kubernetesservicespec)_ | EnvoyService defines the desired state of the Envoy service resource. If unspecified, default settings for the managed Envoy service resource are applied. | -## EnvoyProxyProvider +#### EnvoyProxyProvider @@ -510,7 +513,7 @@ _Appears in:_ | `kubernetes` _[EnvoyProxyKubernetesProvider](#envoyproxykubernetesprovider)_ | Kubernetes defines the desired state of the Kubernetes resource provider. Kubernetes provides infrastructure resources for running the data plane, e.g. Envoy proxy. If unspecified and type is "Kubernetes", default settings for managed Kubernetes resources are applied. | -## EnvoyProxySpec +#### EnvoyProxySpec @@ -531,7 +534,7 @@ _Appears in:_ -## EnvoyResourceType +#### EnvoyResourceType _Underlying type:_ `string` @@ -542,7 +545,7 @@ _Appears in:_ -## ExtensionAPISettings +#### ExtensionAPISettings @@ -557,7 +560,7 @@ _Appears in:_ | `enableEnvoyPatchPolicy` _boolean_ | EnableEnvoyPatchPolicy enables Envoy Gateway to reconcile and implement the EnvoyPatchPolicy resources. | -## ExtensionHooks +#### ExtensionHooks @@ -571,7 +574,7 @@ _Appears in:_ | `xdsTranslator` _[XDSTranslatorHooks](#xdstranslatorhooks)_ | XDSTranslator defines all the supported extension hooks for the xds-translator runner | -## ExtensionManager +#### ExtensionManager @@ -588,7 +591,7 @@ _Appears in:_ | `service` _[ExtensionService](#extensionservice)_ | Service defines the configuration of the extension service that the Envoy Gateway Control Plane will call through extension hooks. | -## ExtensionService +#### ExtensionService @@ -604,7 +607,7 @@ _Appears in:_ | `tls` _[ExtensionTLS](#extensiontls)_ | TLS defines TLS configuration for communication between Envoy Gateway and the extension service. | -## ExtensionTLS +#### ExtensionTLS @@ -619,7 +622,7 @@ _Appears in:_ CertificateRef can only reference a Kubernetes Secret at this time. | -## FileEnvoyProxyAccessLog +#### FileEnvoyProxyAccessLog @@ -633,7 +636,7 @@ _Appears in:_ | `path` _string_ | Path defines the file path used to expose envoy access log(e.g. /dev/stdout). | -## Gateway +#### Gateway @@ -648,7 +651,7 @@ _Appears in:_ | `controllerName` _string_ | ControllerName defines the name of the Gateway API controller. If unspecified, defaults to "gateway.envoyproxy.io/gatewayclass-controller". See the following for additional details: https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1alpha2.GatewayClass | -## GlobalRateLimit +#### GlobalRateLimit @@ -662,7 +665,7 @@ _Appears in:_ | `rules` _[RateLimitRule](#ratelimitrule) array_ | Rules are a list of RateLimit selectors and limits. Each rule and its associated limit is applied in a mutually exclusive way i.e. if multiple rules get selected, each of their associated limits get applied, so a single traffic request might increase the rate limit counters for multiple rules if selected. | -## GroupVersionKind +#### GroupVersionKind @@ -678,7 +681,7 @@ _Appears in:_ | `kind` _string_ | | -## HeaderMatch +#### HeaderMatch @@ -694,7 +697,7 @@ _Appears in:_ | `value` _string_ | Value within the HTTP header. Due to the case-insensitivity of header names, "foo" and "Foo" are considered equivalent. Do not set this field when Type="Distinct", implying matching on any/all unique values within the header. | -## HeaderMatchType +#### HeaderMatchType _Underlying type:_ `string` @@ -705,7 +708,7 @@ _Appears in:_ -## InfrastructureProviderType +#### InfrastructureProviderType _Underlying type:_ `string` @@ -716,7 +719,7 @@ _Appears in:_ -## JSONPatchOperation +#### JSONPatchOperation @@ -732,7 +735,7 @@ _Appears in:_ | `value` _[JSON](#json)_ | Value is the new value of the path location. | -## JSONPatchOperationType +#### JSONPatchOperationType _Underlying type:_ `string` @@ -743,7 +746,7 @@ _Appears in:_ -## JwtAuthenticationFilterProvider +#### JwtAuthenticationFilterProvider @@ -761,7 +764,7 @@ _Appears in:_ | `claimToHeaders` _[ClaimToHeader](#claimtoheader) array_ | ClaimToHeaders is a list of JWT claims that must be extracted into HTTP request headers For examples, following config: The claim must be of type; string, int, double, bool. Array type claims are not supported | -## KubernetesContainerSpec +#### KubernetesContainerSpec @@ -779,7 +782,7 @@ _Appears in:_ | `volumeMounts` _[VolumeMount](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#volumemount-v1-core) array_ | VolumeMounts are volumes to mount into the container's filesystem. Cannot be updated. | -## KubernetesDeployMode +#### KubernetesDeployMode @@ -790,7 +793,7 @@ _Appears in:_ -## KubernetesDeploymentSpec +#### KubernetesDeploymentSpec @@ -808,7 +811,7 @@ _Appears in:_ | `container` _[KubernetesContainerSpec](#kubernetescontainerspec)_ | Container defines the resources and securityContext of container. | -## KubernetesPodSpec +#### KubernetesPodSpec @@ -827,7 +830,7 @@ _Appears in:_ | `volumes` _[Volume](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#volume-v1-core) array_ | Volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes | -## KubernetesServiceSpec +#### KubernetesServiceSpec @@ -844,7 +847,7 @@ _Appears in:_ | `allocateLoadBalancerNodePorts` _boolean_ | AllocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. Default is "true". It may be set to "false" if the cluster load-balancer does not rely on NodePorts. If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. | -## KubernetesWatchMode +#### KubernetesWatchMode @@ -860,7 +863,7 @@ _Appears in:_ | `namespaces` _string array_ | NamespaceSelectors holds a list of labels that namespaces have to have in order to be watched. Note this doesn't set the informer to watch the namespaces with the given labels. Informer still watches all namespaces. But the events for objects whois namespce have no given labels will be filtered out. Precisely one of Namespaces and NamespaceSelectors must be set | -## KubernetesWatchModeType +#### KubernetesWatchModeType _Underlying type:_ `string` @@ -871,7 +874,7 @@ _Appears in:_ -## LiteralCustomTag +#### LiteralCustomTag @@ -885,7 +888,7 @@ _Appears in:_ | `value` _string_ | Value defines the hard-coded value to add to each span. | -## LogComponent +#### LogComponent _Underlying type:_ `string` @@ -896,7 +899,7 @@ _Appears in:_ -## LogLevel +#### LogLevel _Underlying type:_ `string` @@ -908,7 +911,7 @@ _Appears in:_ -## Match +#### Match @@ -923,7 +926,7 @@ _Appears in:_ | `value` _string_ | | -## MatcherType +#### MatcherType _Underlying type:_ `string` @@ -934,7 +937,7 @@ _Appears in:_ -## MetricSink +#### MetricSink @@ -949,7 +952,7 @@ _Appears in:_ | `openTelemetry` _[OpenTelemetrySink](#opentelemetrysink)_ | OpenTelemetry defines the configuration for OpenTelemetry sink. It's required if the sink type is OpenTelemetry. | -## MetricSinkType +#### MetricSinkType _Underlying type:_ `string` @@ -960,7 +963,7 @@ _Appears in:_ -## OpenTelemetryEnvoyProxyAccessLog +#### OpenTelemetryEnvoyProxyAccessLog @@ -976,7 +979,7 @@ _Appears in:_ | `resources` _object (keys:string, values:string)_ | Resources is a set of labels that describe the source of a log entry, including envoy node info. It's recommended to follow [semantic conventions](https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/). | -## OpenTelemetrySink +#### OpenTelemetrySink @@ -991,7 +994,7 @@ _Appears in:_ | `port` _integer_ | Port defines the port the service is exposed on. | -## PrometheusProvider +#### PrometheusProvider @@ -1002,7 +1005,7 @@ _Appears in:_ -## ProviderType +#### ProviderType _Underlying type:_ `string` @@ -1014,7 +1017,7 @@ _Appears in:_ -## ProxyAccessLog +#### ProxyAccessLog @@ -1029,7 +1032,7 @@ _Appears in:_ | `settings` _[ProxyAccessLogSetting](#proxyaccesslogsetting) array_ | Settings defines accesslog settings for managed proxies. If unspecified, will send default format to stdout. | -## ProxyAccessLogFormat +#### ProxyAccessLogFormat @@ -1045,7 +1048,7 @@ _Appears in:_ | `json` _object (keys:string, values:string)_ | JSON is additional attributes that describe the specific event occurrence. Structured format for the envoy access logs. Envoy [command operators](https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators) can be used as values for fields within the Struct. It's required when the format type is "JSON". | -## ProxyAccessLogFormatType +#### ProxyAccessLogFormatType _Underlying type:_ `string` @@ -1056,7 +1059,7 @@ _Appears in:_ -## ProxyAccessLogSetting +#### ProxyAccessLogSetting @@ -1071,7 +1074,7 @@ _Appears in:_ | `sinks` _[ProxyAccessLogSink](#proxyaccesslogsink) array_ | Sinks defines the sinks of accesslog. | -## ProxyAccessLogSink +#### ProxyAccessLogSink @@ -1087,7 +1090,7 @@ _Appears in:_ | `openTelemetry` _[OpenTelemetryEnvoyProxyAccessLog](#opentelemetryenvoyproxyaccesslog)_ | OpenTelemetry defines the OpenTelemetry accesslog sink. | -## ProxyAccessLogSinkType +#### ProxyAccessLogSinkType _Underlying type:_ `string` @@ -1098,7 +1101,7 @@ _Appears in:_ -## ProxyBootstrap +#### ProxyBootstrap @@ -1113,7 +1116,7 @@ _Appears in:_ | `value` _string_ | Value is a YAML string of the bootstrap. | -## ProxyLogging +#### ProxyLogging @@ -1127,7 +1130,7 @@ _Appears in:_ | `level` _object (keys:[LogComponent](#logcomponent), values:[LogLevel](#loglevel))_ | Level is a map of logging level per component, where the component is the key and the log level is the value. If unspecified, defaults to "default: warn". | -## ProxyMetrics +#### ProxyMetrics @@ -1144,7 +1147,7 @@ _Appears in:_ | `enableVirtualHostStats` _boolean_ | EnableVirtualHostStats enables envoy stat metrics for virtual hosts. | -## ProxyTelemetry +#### ProxyTelemetry @@ -1160,7 +1163,7 @@ _Appears in:_ | `metrics` _[ProxyMetrics](#proxymetrics)_ | Metrics defines metrics configuration for managed proxies. | -## ProxyTracing +#### ProxyTracing @@ -1176,7 +1179,7 @@ _Appears in:_ | `provider` _[TracingProvider](#tracingprovider)_ | Provider defines the tracing provider. Only OpenTelemetry is supported currently. | -## RateLimit +#### RateLimit @@ -1193,7 +1196,7 @@ _Appears in:_ | `failClosed` _boolean_ | FailClosed is a switch used to control the flow of traffic when the response from the ratelimit server cannot be obtained. If FailClosed is false, let the traffic pass, otherwise, don't let the traffic pass and return 500. If not set, FailClosed is False. | -## RateLimitDatabaseBackend +#### RateLimitDatabaseBackend @@ -1208,7 +1211,7 @@ _Appears in:_ | `redis` _[RateLimitRedisSettings](#ratelimitredissettings)_ | Redis defines the settings needed to connect to a Redis database. | -## RateLimitDatabaseBackendType +#### RateLimitDatabaseBackendType _Underlying type:_ `string` @@ -1219,7 +1222,7 @@ _Appears in:_ -## RateLimitFilter +#### RateLimitFilter @@ -1235,7 +1238,7 @@ RateLimitFilter allows the user to limit the number of incoming requests to a pr | `spec` _[RateLimitFilterSpec](#ratelimitfilterspec)_ | Spec defines the desired state of RateLimitFilter. | -## RateLimitFilterSpec +#### RateLimitFilterSpec @@ -1250,7 +1253,7 @@ _Appears in:_ | `global` _[GlobalRateLimit](#globalratelimit)_ | Global defines global rate limit configuration. | -## RateLimitRedisSettings +#### RateLimitRedisSettings @@ -1265,7 +1268,7 @@ _Appears in:_ | `tls` _[RedisTLSSettings](#redistlssettings)_ | TLS defines TLS configuration for connecting to redis database. | -## RateLimitRule +#### RateLimitRule @@ -1280,7 +1283,7 @@ _Appears in:_ | `limit` _[RateLimitValue](#ratelimitvalue)_ | Limit holds the rate limit values. This limit is applied for traffic flows when the selectors compute to True, causing the request to be counted towards the limit. The limit is enforced and the request is ratelimited, i.e. a response with 429 HTTP status code is sent back to the client when the selected requests have reached the limit. | -## RateLimitSelectCondition +#### RateLimitSelectCondition @@ -1295,7 +1298,7 @@ _Appears in:_ | `sourceCIDR` _[SourceMatch](#sourcematch)_ | SourceCIDR is the client IP Address range to match on. | -## RateLimitType +#### RateLimitType _Underlying type:_ `string` @@ -1306,7 +1309,7 @@ _Appears in:_ -## RateLimitUnit +#### RateLimitUnit _Underlying type:_ `string` @@ -1317,7 +1320,7 @@ _Appears in:_ -## RateLimitValue +#### RateLimitValue @@ -1332,7 +1335,7 @@ _Appears in:_ | `unit` _[RateLimitUnit](#ratelimitunit)_ | | -## RedisTLSSettings +#### RedisTLSSettings @@ -1346,7 +1349,7 @@ _Appears in:_ | `certificateRef` _[SecretObjectReference](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.SecretObjectReference)_ | CertificateRef defines the client certificate reference for TLS connections. Currently only a Kubernetes Secret of type TLS is supported. | -## RemoteJWKS +#### RemoteJWKS @@ -1360,7 +1363,7 @@ _Appears in:_ | `uri` _string_ | URI is the HTTPS URI to fetch the JWKS. Envoy's system trust bundle is used to validate the server certificate. | -## RequestHeaderCustomTag +#### RequestHeaderCustomTag @@ -1375,7 +1378,7 @@ _Appears in:_ | `defaultValue` _string_ | DefaultValue defines the default value to use if the request header is not set. | -## ResourceProviderType +#### ResourceProviderType _Underlying type:_ `string` @@ -1386,7 +1389,7 @@ _Appears in:_ -## ServiceType +#### ServiceType _Underlying type:_ `string` @@ -1397,7 +1400,7 @@ _Appears in:_ -## SourceMatch +#### SourceMatch @@ -1412,7 +1415,7 @@ _Appears in:_ | `value` _string_ | Value is the IP CIDR that represents the range of Source IP Addresses of the client. These could also be the intermediate addresses through which the request has flown through and is part of the `X-Forwarded-For` header. For example, `192.168.0.1/32`, `192.168.0.0/24`, `001:db8::/64`. | -## SourceMatchType +#### SourceMatchType _Underlying type:_ `string` @@ -1423,7 +1426,7 @@ _Appears in:_ -## TCPKeepalive +#### TCPKeepalive @@ -1439,7 +1442,7 @@ _Appears in:_ | `interval` _Duration_ | The duration between keep-alive probes. Defaults to `75s`. | -## TracingProvider +#### TracingProvider @@ -1455,7 +1458,7 @@ _Appears in:_ | `port` _integer_ | Port defines the port the provider service is exposed on. | -## TracingProviderType +#### TracingProviderType _Underlying type:_ `string` @@ -1466,7 +1469,7 @@ _Appears in:_ -## XDSTranslatorHook +#### XDSTranslatorHook _Underlying type:_ `string` @@ -1477,7 +1480,7 @@ _Appears in:_ -## XDSTranslatorHooks +#### XDSTranslatorHooks diff --git a/docs/latest/dev/CODEOWNERS.md b/site/content/en/latest/contributions/CODEOWNERS.md similarity index 68% rename from docs/latest/dev/CODEOWNERS.md rename to site/content/en/latest/contributions/CODEOWNERS.md index 7168ff935d2..63b751abde5 100644 --- a/docs/latest/dev/CODEOWNERS.md +++ b/site/content/en/latest/contributions/CODEOWNERS.md @@ -1,4 +1,7 @@ -# Maintainers +--- +title: "Maintainers" +description: "This section includes Maintainers of Envoy Gateway." +--- ## The following maintainers, listed in alphabetical order, own everything diff --git a/site/content/en/latest/contributions/CODE_OF_CONDUCT.md b/site/content/en/latest/contributions/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..e19da050dff --- /dev/null +++ b/site/content/en/latest/contributions/CODE_OF_CONDUCT.md @@ -0,0 +1,6 @@ +--- +title: "Code of Conduct" +description: "This section includes Code of Conduct of Envoy Gateway." +--- + +Envoy Gateway follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). diff --git a/docs/v0.5.0/dev/CONTRIBUTING.md b/site/content/en/latest/contributions/CONTRIBUTING.md similarity index 96% rename from docs/v0.5.0/dev/CONTRIBUTING.md rename to site/content/en/latest/contributions/CONTRIBUTING.md index 04d95bb675d..f94b2c940e9 100644 --- a/docs/v0.5.0/dev/CONTRIBUTING.md +++ b/site/content/en/latest/contributions/CONTRIBUTING.md @@ -1,6 +1,10 @@ -# Contributing +--- +title: "Contributing" +description: "This section tells how to contribute to Envoy Gateway." +weight: 3 +--- -We welcome contributions from the community. Please carefully review the [project goals](GOALS.md) +We welcome contributions from the community. Please carefully review the [project goals](/about) and following guidelines to streamline your contributions. ## Communication @@ -10,7 +14,7 @@ and following guidelines to streamline your contributions. * 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 + for major features is also important so that [affiliations with commit access](../codeowners) 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. @@ -44,8 +48,8 @@ to the following guidelines for all code, APIs, and documentation: * 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). +* Any PR that changes user-facing behavior **must** have associated documentation in the [docs](https://github.com/envoyproxy/gateway/tree/main/site) folder of the repo as + well as the [changelog](/blog/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. @@ -77,7 +81,7 @@ to the following guidelines for all code, APIs, and documentation: ## Maintainer PR Review Policy -* See [CODEOWNERS.md](CODEOWNERS.md) for the current list of maintainers. +* See [CODEOWNERS.md](../codeowners) 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 diff --git a/docs/v0.5.0/dev/README.md b/site/content/en/latest/contributions/DEVELOP.md similarity index 98% rename from docs/v0.5.0/dev/README.md rename to site/content/en/latest/contributions/DEVELOP.md index cf25992e5b3..6f82c4a411f 100644 --- a/docs/v0.5.0/dev/README.md +++ b/site/content/en/latest/contributions/DEVELOP.md @@ -1,4 +1,8 @@ -# Developer Guide +--- +title: "Developer Guide" +description: "This section tells how to develop Envoy Gateway." +weight: 2 +--- Envoy Gateway is built using a [make][]-based build system. Our CI is based on [Github Actions][] using [workflows][]. diff --git a/site/content/en/latest/contributions/DOCS.md b/site/content/en/latest/contributions/DOCS.md new file mode 100644 index 00000000000..ae19953a8b5 --- /dev/null +++ b/site/content/en/latest/contributions/DOCS.md @@ -0,0 +1,69 @@ +--- +title: "Working on Envoy Gateway Docs" +description: "This section tells the development of + Envoy Gateway Documents." +--- + +{{% alert title="Note" color="warning" %}} +We migrated from ***Sphinx*** to ***Hugo*** for Envoy Gateway Documents. + +Read blog: [Welcome to new website!](/blog/2023/10/08/welcome-to-new-website/) +{{% /alert %}} + +The documentation for the Envoy Gateway lives in the `site/content/en` directory. Any +individual document can be written using [Markdown]. + +## 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 `site/content/en/latest`. +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 `site/content/en/latest` and will be cut off at +the next release. The contents under `site/content/en/v0.5.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 `site/content/en/latest` +and `site/content/en/v0.5.0`. + +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 Markdown files in `site/content/en/latest`, +then run + +```bash +make docs +``` + +This will create `site/public` with the built HTML pages. You can preview it +by running: + +``` shell +make docs-serve +``` + +If you want to generate a new release version of the docs, like `v0.6.0`, then run + +```bash +make docs-release TAG=v0.6.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 `site/content/en/v0.6.0`, which contains docs at v0.6.0 and updates artifact links to `v0.6.0` +in all files under `site/content/en/v0.6.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`. + +## Reference + +Go to [Hugo](https://gohugo.io) and [Docsy](https://www.docsy.dev/docs) to learn more. + +[Markdown]: https://daringfireball.net/projects/markdown/syntax +[latest-website]: /latest diff --git a/site/content/en/latest/contributions/RELEASING.md b/site/content/en/latest/contributions/RELEASING.md new file mode 100644 index 00000000000..8f0bdf68a48 --- /dev/null +++ b/site/content/en/latest/contributions/RELEASING.md @@ -0,0 +1,231 @@ +--- +title: "Release Process" +description: "This section tells the release process of Envoy Gateway." +--- + +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}.0 + ``` + +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/latest/contributions/_index.md b/site/content/en/latest/contributions/_index.md new file mode 100644 index 00000000000..3255d996472 --- /dev/null +++ b/site/content/en/latest/contributions/_index.md @@ -0,0 +1,5 @@ +--- +title: Get Involved +description: "This section includes contents related to **Contributions**" +weight: 100 +--- diff --git a/docs/latest/design/roadmap.md b/site/content/en/latest/contributions/roadmap.md similarity index 97% rename from docs/latest/design/roadmap.md rename to site/content/en/latest/contributions/roadmap.md index 7304335d9aa..955af2a9623 100644 --- a/docs/latest/design/roadmap.md +++ b/site/content/en/latest/contributions/roadmap.md @@ -1,4 +1,8 @@ -# Roadmap +--- +title: "Roadmap" +weight: -1 +description: "This section records the roadmap of Envoy Gateway." +--- This document serves as a high-level reference for Envoy Gateway users and contributors to understand the direction of the project. diff --git a/site/content/en/latest/design/_index.md b/site/content/en/latest/design/_index.md new file mode 100644 index 00000000000..2820db4c216 --- /dev/null +++ b/site/content/en/latest/design/_index.md @@ -0,0 +1,5 @@ +--- +title: "Design" +weight: 1 +description: This section includes Designs of Envoy Gateway. +--- diff --git a/docs/latest/design/accesslog.md b/site/content/en/latest/design/accesslog.md similarity index 99% rename from docs/latest/design/accesslog.md rename to site/content/en/latest/design/accesslog.md index 16882cd4d5a..cb72f05fe43 100644 --- a/docs/latest/design/accesslog.md +++ b/site/content/en/latest/design/accesslog.md @@ -1,4 +1,6 @@ -# Observability: Accesslog +--- +title: "Observability: Accesslog" +--- ## Overview diff --git a/docs/latest/design/bootstrap.md b/site/content/en/latest/design/bootstrap.md similarity index 99% rename from docs/latest/design/bootstrap.md rename to site/content/en/latest/design/bootstrap.md index 74340aac7a0..4475710ad5d 100644 --- a/docs/latest/design/bootstrap.md +++ b/site/content/en/latest/design/bootstrap.md @@ -1,4 +1,6 @@ -# Bootstrap Design +--- +title: "Bootstrap Design" +--- ## Overview diff --git a/docs/latest/design/client-traffic-policy.md b/site/content/en/latest/design/client-traffic-policy.md similarity index 98% rename from docs/latest/design/client-traffic-policy.md rename to site/content/en/latest/design/client-traffic-policy.md index f4bc5c213ee..65edd4130c4 100644 --- a/docs/latest/design/client-traffic-policy.md +++ b/site/content/en/latest/design/client-traffic-policy.md @@ -1,4 +1,6 @@ -# ClientTrafficPolicy +--- +title: "ClientTrafficPolicy " +--- ## Overview diff --git a/docs/latest/design/config-api.md b/site/content/en/latest/design/config-api.md similarity index 99% rename from docs/latest/design/config-api.md rename to site/content/en/latest/design/config-api.md index 5af6150346c..49e997caeca 100644 --- a/docs/latest/design/config-api.md +++ b/site/content/en/latest/design/config-api.md @@ -1,4 +1,6 @@ -# Configuration API Design +--- +title: "Configuration API Design" +--- ## Motivation diff --git a/docs/latest/design/egctl.md b/site/content/en/latest/design/egctl.md similarity index 98% rename from docs/latest/design/egctl.md rename to site/content/en/latest/design/egctl.md index 7989ff49e5e..0f67d99f100 100644 --- a/docs/latest/design/egctl.md +++ b/site/content/en/latest/design/egctl.md @@ -1,4 +1,6 @@ -# egctl Design +--- +title: "egctl Design" +--- ## Motivation diff --git a/docs/v0.5.0/design/envoy-patch-policy.md b/site/content/en/latest/design/envoy-patch-policy.md similarity index 99% rename from docs/v0.5.0/design/envoy-patch-policy.md rename to site/content/en/latest/design/envoy-patch-policy.md index 0116c8e6336..d34937d05ef 100644 --- a/docs/v0.5.0/design/envoy-patch-policy.md +++ b/site/content/en/latest/design/envoy-patch-policy.md @@ -1,4 +1,6 @@ -# EnvoyPatchPolicy +--- +title: "EnvoyPatchPolicy" +--- ## Overview diff --git a/docs/latest/design/extending-envoy-gateway.md b/site/content/en/latest/design/extending-envoy-gateway.md similarity index 99% rename from docs/latest/design/extending-envoy-gateway.md rename to site/content/en/latest/design/extending-envoy-gateway.md index e29f8ff2aa3..d4f36cc7a4a 100644 --- a/docs/latest/design/extending-envoy-gateway.md +++ b/site/content/en/latest/design/extending-envoy-gateway.md @@ -1,4 +1,6 @@ -# Envoy Gateway Extensions Design +--- +title: "Envoy Gateway Extensions Design" +--- As outlined in the [official goals][] for the Envoy Gateway project, one of the main goals is to "provide a common foundation for vendors to build value-added products without having to re-engineer fundamental interactions". Development of the Envoy Gateway project has been focused on developing the core features for the project and @@ -39,7 +41,7 @@ they create as a direct result of their modification of Envoy Gateway. ## Diagram -![Architecture](../images/extension-example.png) +![Architecture](/img/extension-example.png) ## Registering Extensions in Envoy Gateway diff --git a/docs/latest/design/gatewayapi-translator.md b/site/content/en/latest/design/gatewayapi-translator.md similarity index 99% rename from docs/latest/design/gatewayapi-translator.md rename to site/content/en/latest/design/gatewayapi-translator.md index 3cf0da94f5a..b83ed82588d 100644 --- a/docs/latest/design/gatewayapi-translator.md +++ b/site/content/en/latest/design/gatewayapi-translator.md @@ -1,4 +1,7 @@ -# Gateway API Translator Design +--- +title: "Gateway API Translator Design" +weight: 4 +--- The Gateway API translates external resources, e.g. GatewayClass, from the configured Provider to the Intermediate Representation (IR). diff --git a/docs/v0.5.0/dev/GOALS.md b/site/content/en/latest/design/goals.md similarity index 99% rename from docs/v0.5.0/dev/GOALS.md rename to site/content/en/latest/design/goals.md index 519be9f180f..fd38b2004c6 100644 --- a/docs/v0.5.0/dev/GOALS.md +++ b/site/content/en/latest/design/goals.md @@ -1,4 +1,7 @@ -# Goals +--- +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 @@ -8,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 @@ -23,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. @@ -37,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 @@ -44,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 @@ -57,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/docs/v0.5.0/design/local-envoy-gateway.md b/site/content/en/latest/design/local-envoy-gateway.md similarity index 97% rename from docs/v0.5.0/design/local-envoy-gateway.md rename to site/content/en/latest/design/local-envoy-gateway.md index d382b8cfff8..aad0dc5f6f2 100644 --- a/docs/v0.5.0/design/local-envoy-gateway.md +++ b/site/content/en/latest/design/local-envoy-gateway.md @@ -1,4 +1,6 @@ -# Running Envoy Gateway locally +--- +title: "Running Envoy Gateway locally" +--- ## Overview diff --git a/docs/latest/design/metrics.md b/site/content/en/latest/design/metrics.md similarity index 98% rename from docs/latest/design/metrics.md rename to site/content/en/latest/design/metrics.md index 5be5942d570..644e3c7a634 100644 --- a/docs/latest/design/metrics.md +++ b/site/content/en/latest/design/metrics.md @@ -1,4 +1,6 @@ -# Observability: Metrics +--- +title: "Observability: Metrics" +--- ## Overview diff --git a/docs/latest/design/pprof.md b/site/content/en/latest/design/pprof.md similarity index 97% rename from docs/latest/design/pprof.md rename to site/content/en/latest/design/pprof.md index 552986e3bc8..c535b480071 100644 --- a/docs/latest/design/pprof.md +++ b/site/content/en/latest/design/pprof.md @@ -1,4 +1,6 @@ -# Add Pprof support in Envoy Gateway +--- +title: "Add Pprof support in Envoy Gateway" +--- ## Overview diff --git a/docs/latest/design/rate-limit.md b/site/content/en/latest/design/rate-limit.md similarity index 99% rename from docs/latest/design/rate-limit.md rename to site/content/en/latest/design/rate-limit.md index fb326b080b2..28ebbab8b36 100644 --- a/docs/latest/design/rate-limit.md +++ b/site/content/en/latest/design/rate-limit.md @@ -1,4 +1,6 @@ -# Rate Limit Design +--- +title: "Rate Limit Design" +--- ## Overview diff --git a/docs/v0.5.0/design/request-authentication.md b/site/content/en/latest/design/request-authentication.md similarity index 99% rename from docs/v0.5.0/design/request-authentication.md rename to site/content/en/latest/design/request-authentication.md index 6b2192eadfd..82682bf2a0b 100644 --- a/docs/v0.5.0/design/request-authentication.md +++ b/site/content/en/latest/design/request-authentication.md @@ -1,4 +1,6 @@ -# Request Authentication Design +--- +title: "Request Authentication Design" +--- ## Overview diff --git a/docs/latest/design/system-design.md b/site/content/en/latest/design/system-design.md similarity index 99% rename from docs/latest/design/system-design.md rename to site/content/en/latest/design/system-design.md index 86114be37fa..16123948ee7 100644 --- a/docs/latest/design/system-design.md +++ b/site/content/en/latest/design/system-design.md @@ -1,4 +1,7 @@ -# System Design +--- +title: "System Design" +weight: 2 +--- ## Goals @@ -17,7 +20,7 @@ ## Architecture -![Architecture](../images/architecture.png) +![Architecture](/img/architecture.png) ## Configuration diff --git a/docs/v0.3.0/design/tcp-udp-design.md b/site/content/en/latest/design/tcp-udp-design.md similarity index 98% rename from docs/v0.3.0/design/tcp-udp-design.md rename to site/content/en/latest/design/tcp-udp-design.md index 276221b897b..f517e24feda 100644 --- a/docs/v0.3.0/design/tcp-udp-design.md +++ b/site/content/en/latest/design/tcp-udp-design.md @@ -1,4 +1,6 @@ -# TCP and UDP Proxy Design +--- +title: "TCP and UDP Proxy Design " +--- Even though most of the use cases for Envoy Gateway are at Layer-7, Envoy Gateway can also work at Layer-4 to proxy TCP and UDP traffic. This document will explore the options we have when operating Envoy Gateway at Layer-4 and explain the diff --git a/docs/latest/design/tracing.md b/site/content/en/latest/design/tracing.md similarity index 99% rename from docs/latest/design/tracing.md rename to site/content/en/latest/design/tracing.md index 5458b163157..0c9e97309f9 100644 --- a/docs/latest/design/tracing.md +++ b/site/content/en/latest/design/tracing.md @@ -1,4 +1,6 @@ -# Observability: Accesslog +--- +title: "Observability: Accesslog" +--- ## Overview diff --git a/docs/v0.4.0/design/watching.md b/site/content/en/latest/design/watching.md similarity index 99% rename from docs/v0.4.0/design/watching.md rename to site/content/en/latest/design/watching.md index b8477a30e2d..72a955043e0 100644 --- a/docs/v0.4.0/design/watching.md +++ b/site/content/en/latest/design/watching.md @@ -1,4 +1,7 @@ -# Watching Components Design +--- +title: "Watching Components Design" +weight: 3 +--- Envoy Gateway is made up of several components that communicate in-process. Some of them (namely Providers) watch external resources, and "publish" what they see for other components to consume; others watch what another publishes and diff --git a/site/content/en/latest/install/_index.md b/site/content/en/latest/install/_index.md new file mode 100644 index 00000000000..b4c6f79c6fd --- /dev/null +++ b/site/content/en/latest/install/_index.md @@ -0,0 +1,5 @@ +--- +title: "Installation" +description: This section includes installation related contents of Envoy Gateway. +weight: 70 +--- diff --git a/docs/v0.5.0/helm/api.md b/site/content/en/latest/install/api.md similarity index 94% rename from docs/v0.5.0/helm/api.md rename to site/content/en/latest/install/api.md index 98eb8e37304..857a0081735 100644 --- a/docs/v0.5.0/helm/api.md +++ b/site/content/en/latest/install/api.md @@ -1,4 +1,7 @@ -# gateway-helm ++++ +title = "gateway-helm" ++++ + ![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) @@ -33,7 +36,8 @@ The Helm chart for Envoy Gateway | deployment.envoyGateway.resources.requests.cpu | string | `"100m"` | | | deployment.envoyGateway.resources.requests.memory | string | `"256Mi"` | | | deployment.kubeRbacProxy.image.repository | string | `"gcr.io/kubebuilder/kube-rbac-proxy"` | | -| deployment.kubeRbacProxy.image.tag | string | `"v0.11.0"` | | +| deployment.kubeRbacProxy.image.tag | string | `"v0.14.1"` | | +| deployment.kubeRbacProxy.imagePullPolicy | string | `"IfNotPresent"` | | | deployment.kubeRbacProxy.resources.limits.cpu | string | `"500m"` | | | deployment.kubeRbacProxy.resources.limits.memory | string | `"128Mi"` | | | deployment.kubeRbacProxy.resources.requests.cpu | string | `"5m"` | | diff --git a/site/content/en/latest/install/install-egctl.md b/site/content/en/latest/install/install-egctl.md new file mode 100644 index 00000000000..637933bb290 --- /dev/null +++ b/site/content/en/latest/install/install-egctl.md @@ -0,0 +1,57 @@ +--- +title: "Install egctl" +weight: -80 +--- + +{{% alert title="What is egctl?" color="primary" %}} + +`egctl` is a command line tool to provide additional functionality for Envoy Gateway users. + +{{% /alert %}} + + +This guide shows how to install the egctl CLI. egctl can be installed either from source, or from pre-built binary releases. + +### From The Envoy Gateway Project + +The Envoy Gateway project provides two ways to fetch and install egctl. These are the official methods to get egctl releases. Installation through those methods can be found below the official methods. + +### From the Binary Releases + +Every [release](https://github.com/envoyproxy/gateway/releases) of egctl provides binary releases for a variety of OSes. These binary versions can be manually downloaded and installed. + +1. Download your [desired version](https://github.com/envoyproxy/gateway/releases) +2. Unpack it (tar -zxvf egctl_latest_linux_amd64.tar.gz) +3. Find the egctl binary in the unpacked directory, and move it to its desired destination (mv bin/linux/amd64/egctl /usr/local/bin/egctl) + +From there, you should be able to run: `egctl help`. + +### From Script + +`egctl` now has an installer script that will automatically grab the latest release version of egctl and install it locally. + +You can fetch that script, and then execute it locally. It's well documented so that you can read through it and understand what it is doing before you run it. + +```shell +curl -fsSL -o get-egctl.sh https://gateway.envoyproxy.io/get-egctl.sh + +chmod +x get-egctl.sh + +# get help info of the +bash get-egctl.sh --help + +# install the latest development version of egctl +bash VERSION=latest get-egctl.sh +``` + +Yes, you can just use the below command if you want to live on the edge. + +```shell +curl https://gateway.envoyproxy.io/get-egctl.sh | VERSION=latest bash +``` + +{{% alert title="Next Steps" color="warning" %}} + +You can refer to [User Guides](/latest/user/egctl) to more details about egctl. + +{{% /alert %}} diff --git a/site/content/en/latest/install/install-helm.md b/site/content/en/latest/install/install-helm.md new file mode 100644 index 00000000000..68ea4f2997b --- /dev/null +++ b/site/content/en/latest/install/install-helm.md @@ -0,0 +1,46 @@ ++++ +title = "Install with Helm" +weight = -100 ++++ + +[Helm](https://helm.sh) is a package manager for Kubernetes that automates the release and management of software on Kubernetes. + +Envoy Gateway can be installed via a Helm chart with a few simple steps, depending on if you are deploying for the first time, upgrading Envoy Gateway from an existing installation, or migrating from Envoy Gateway. + +## Before you begin + +{{% alert title="Compatibility Matrix" color="warning" %}} +Refer to the [Version Compatibility Matrix](/blog/2022/10/01/versions/) to learn more. +{{% /alert %}} + +The Envoy Gateway Helm chart is hosted by DockerHub. + +It is published at `oci://docker.io/envoyproxy/gateway-helm`. + +{{% alert title="Note" color="primary" %}} +We use `v0.0.0-latest` as the latest development version. + +You can visit [Envoy Gateway Helm Chart](https://hub.docker.com/r/envoyproxy/gateway-helm/tags) for more releases. +{{% /alert %}} + +## Install with Helm + +Envoy Gateway is typically deployed to Kubernetes from the command line. If you don't have Kubernetes, you should use `kind` to create one. + +{{% alert title="Developer Guide" color="primary" %}} +Refer to the [Developer Guide](/latest/contributions/develop) to learn more. +{{% /alert %}} + +When you run the Helm chart, it installs Envoy Gateway. + +1. Install the Gateway API CRDs and Envoy Gateway with the following command: + + ``` shell + helm install eg oci://docker.io/envoyproxy/gateway-helm --version v0.0.0-latest -n envoy-gateway-system --create-namespace + ``` + +2. Next Steps + + Envoy Gateway should now be successfully installed and running, but in order to experience more abilities of Envoy Gateway, you can refer to [User Guides](/latest/user). + +For more advanced configuration and details about helm values, please see the [Helm Chart Values](../api). diff --git a/site/content/en/latest/install/install-yaml.md b/site/content/en/latest/install/install-yaml.md new file mode 100644 index 00000000000..4b13529f000 --- /dev/null +++ b/site/content/en/latest/install/install-yaml.md @@ -0,0 +1,39 @@ ++++ +title = "Install with Kubernetes YAML" +weight = -99 ++++ + +In this guide, we'll walk you through installing Envoy Gateway in your Kubernetes cluster. + +The manual install process does not allow for as much control over configuration +as the [Helm install method](../install-helm), so if you need more control over your Envoy Gateway +installation, it is recommended that you use helm. + +## Before you begin + +Envoy Gateway is designed to run in Kubernetes for production. The most essential requirements are: + +* Kubernetes 1.25 or later +* The `kubectl` command-line tool + +{{% alert title="Compatibility Matrix" color="warning" %}} +Refer to the [Version Compatibility Matrix](/blog/2022/10/01/versions/) to learn more. +{{% /alert %}} + +## Install with YAML + +Envoy Gateway is typically deployed to Kubernetes from the command line. If you don't have Kubernetes, you should use `kind` to create one. + +{{% alert title="Developer Guide" color="primary" %}} +Refer to the [Developer Guide](/latest/contributions/develop) to learn more. +{{% /alert %}} + +1. In your terminal, run the following command: + + ```shell + kubectl apply -f https://github.com/envoyproxy/gateway/releases/download/latest/install.yaml + ``` + +2. Next Steps + + Envoy Gateway should now be successfully installed and running, but in order to experience more abilities of Envoy Gateway, you can refer to [User Guides](/latest/user). diff --git a/site/content/en/latest/user/_index.md b/site/content/en/latest/user/_index.md new file mode 100644 index 00000000000..e413578a6ca --- /dev/null +++ b/site/content/en/latest/user/_index.md @@ -0,0 +1,5 @@ +--- +title: "User Guides" +weight: 2 +description: This section includes User Guides of Envoy Gateway. +--- diff --git a/docs/latest/user/authn.md b/site/content/en/latest/user/authn.md similarity index 97% rename from docs/latest/user/authn.md rename to site/content/en/latest/user/authn.md index 0ab4d96f38c..18409cb5dee 100644 --- a/docs/latest/user/authn.md +++ b/site/content/en/latest/user/authn.md @@ -1,4 +1,6 @@ -# Request Authentication +--- +title: "Request Authentication" +--- This guide provides instructions for configuring [JSON Web Token (JWT)][jwt] authentication. JWT authentication checks if an incoming request has a valid JWT before routing the request to a backend service. Currently, Envoy Gateway only @@ -152,7 +154,7 @@ kubectl delete authenticationfilter/jwt-example ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [jwt]: https://tools.ietf.org/html/rfc7519 [AuthenticationFilter]: https://gateway.envoyproxy.io/latest/api/extension_types.html#authenticationfilter diff --git a/docs/latest/user/customize-envoyproxy.md b/site/content/en/latest/user/customize-envoyproxy.md similarity index 99% rename from docs/latest/user/customize-envoyproxy.md rename to site/content/en/latest/user/customize-envoyproxy.md index ae1eb42f9f3..6e272874e52 100644 --- a/docs/latest/user/customize-envoyproxy.md +++ b/site/content/en/latest/user/customize-envoyproxy.md @@ -1,4 +1,6 @@ -# Customize EnvoyProxy +--- +title: "Customize EnvoyProxy" +--- Envoy Gateway provides an [EnvoyProxy][] CRD that can be linked to the ParametersRef in GatewayClass, allowing cluster admins to customize the managed EnvoyProxy Deployment and diff --git a/docs/latest/user/deployment-mode.md b/site/content/en/latest/user/deployment-mode.md similarity index 99% rename from docs/latest/user/deployment-mode.md rename to site/content/en/latest/user/deployment-mode.md index af515394f29..08ea5febc5c 100644 --- a/docs/latest/user/deployment-mode.md +++ b/site/content/en/latest/user/deployment-mode.md @@ -1,4 +1,7 @@ -## Deployment Mode +--- +title: "Deployment Mode" +--- + ### One GatewayClass per Envoy Gateway diff --git a/docs/latest/user/egctl.md b/site/content/en/latest/user/egctl.md similarity index 92% rename from docs/latest/user/egctl.md rename to site/content/en/latest/user/egctl.md index 25644fb338f..949c953f15f 100644 --- a/docs/latest/user/egctl.md +++ b/site/content/en/latest/user/egctl.md @@ -1,48 +1,10 @@ -# egctl +--- +title: "Use egctl" +--- `egctl` is a command line tool to provide additional functionality for Envoy Gateway users. -## Installing egctl - -This guide shows how to install the egctl CLI. egctl can be installed either from source, or from pre-built binary releases. - -### From The Envoy Gateway Project - -The Envoy Gateway project provides two ways to fetch and install egctl. These are the official methods to get egctl releases. Installation through those methods can be found below the official methods. - -### From the Binary Releases - -Every [release](https://github.com/envoyproxy/gateway/releases) of egctl provides binary releases for a variety of OSes. These binary versions can be manually downloaded and installed. - -1. Download your [desired version](https://github.com/envoyproxy/gateway/releases) -2. Unpack it (tar -zxvf egctl_latest_linux_amd64.tar.gz) -3. Find the egctl binary in the unpacked directory, and move it to its desired destination (mv bin/linux/amd64/egctl /usr/local/bin/egctl) - -From there, you should be able to run: `egctl help`. - -### From Script - -`egctl` now has an installer script that will automatically grab the latest release version of egctl and install it locally. -You can fetch that script, and then execute it locally. It's well documented so that you can read through it and understand what it is doing before you run it. - -```shell -curl -fsSL -o get-egctl.sh https://gateway.envoyproxy.io/get-egctl.sh - -chmod +x get-egctl.sh - -# get help info of the -bash get-egctl.sh --help - -# install the latest development version of egctl -bash VERSION=latest get-egctl.sh -``` - -Yes, you can just use the below command if you want to live on the edge. - -```shell -curl https://gateway.envoyproxy.io/get-egctl.sh | VERSION=latest bash -``` ## egctl experimental translate diff --git a/docs/latest/user/envoy-patch-policy.md b/site/content/en/latest/user/envoy-patch-policy.md similarity index 99% rename from docs/latest/user/envoy-patch-policy.md rename to site/content/en/latest/user/envoy-patch-policy.md index 6d70ffd07db..cd9fee24dfc 100644 --- a/docs/latest/user/envoy-patch-policy.md +++ b/site/content/en/latest/user/envoy-patch-policy.md @@ -1,4 +1,6 @@ -# Envoy Patch Policy +--- +title: "Envoy Patch Policy" +--- This guide explains the usage of the [EnvoyPatchPolicy][] API. __Note:__ This API is meant for users extremely familiar with Envoy [xDS][] semantics. diff --git a/docs/latest/user/gateway-address.md b/site/content/en/latest/user/gateway-address.md similarity index 98% rename from docs/latest/user/gateway-address.md rename to site/content/en/latest/user/gateway-address.md index a28ad62640a..06570cbe832 100644 --- a/docs/latest/user/gateway-address.md +++ b/site/content/en/latest/user/gateway-address.md @@ -1,4 +1,6 @@ -# Gateway Address +--- +title: "Gateway Address" +--- The Gateway API provides an optional [Addresses][] field through which Envoy Gateway can set addresses for Envoy Proxy Service. The currently supported addresses are: diff --git a/docs/latest/user/gateway-api-metrics.md b/site/content/en/latest/user/gateway-api-metrics.md similarity index 98% rename from docs/latest/user/gateway-api-metrics.md rename to site/content/en/latest/user/gateway-api-metrics.md index e403c90404f..5331145b050 100644 --- a/docs/latest/user/gateway-api-metrics.md +++ b/site/content/en/latest/user/gateway-api-metrics.md @@ -1,4 +1,6 @@ -# Gateway API Metrics +--- +title: "Gateway API Metrics" +--- Resource metrics for Gateway API objects are available using the [Gateway API State Metrics](https://github.com/Kuadrant/gateway-api-state-metrics) project. The project also provides example dashboard for visualising the metrics using Grafana, and example alerts using Prometheus & Alertmanager. diff --git a/docs/latest/user/gatewayapi-support.md b/site/content/en/latest/user/gatewayapi-support.md similarity index 99% rename from docs/latest/user/gatewayapi-support.md rename to site/content/en/latest/user/gatewayapi-support.md index ee14f395258..d70064dde25 100644 --- a/docs/latest/user/gatewayapi-support.md +++ b/site/content/en/latest/user/gatewayapi-support.md @@ -1,4 +1,6 @@ -# Gateway API Support +--- +title: "Gateway API Support" +--- As mentioned in the [system design][] document, Envoy Gateway's managed data plane is configured dynamically through Kubernetes resources, primarily [Gateway API][] objects. Envoy Gateway supports configuration using the following Gateway API resources. diff --git a/docs/latest/user/grpc-routing.md b/site/content/en/latest/user/grpc-routing.md similarity index 99% rename from docs/latest/user/grpc-routing.md rename to site/content/en/latest/user/grpc-routing.md index ef28dac199f..5dca26744bc 100644 --- a/docs/latest/user/grpc-routing.md +++ b/site/content/en/latest/user/grpc-routing.md @@ -1,4 +1,6 @@ -# GRPC Routing +--- +title: "GRPC Routing" +--- The [GRPCRoute][] resource allows users to configure gRPC routing by matching HTTP/2 traffic and forwarding it to backend gRPC servers. To learn more about gRPC routing, refer to the [Gateway API documentation][]. diff --git a/docs/v0.3.0/user/http-redirect.md b/site/content/en/latest/user/http-redirect.md similarity index 99% rename from docs/v0.3.0/user/http-redirect.md rename to site/content/en/latest/user/http-redirect.md index dcd72749f36..da61bdaf32f 100644 --- a/docs/v0.3.0/user/http-redirect.md +++ b/site/content/en/latest/user/http-redirect.md @@ -1,4 +1,6 @@ -# HTTP Redirects +--- +title: "HTTP Redirects" +--- The [HTTPRoute][] resource can issue redirects to clients or rewrite paths sent upstream using filters. Note that HTTPRoute rules cannot use both filter types at once. Currently, Envoy Gateway only supports __core__ diff --git a/docs/v0.3.0/user/http-request-headers.md b/site/content/en/latest/user/http-request-headers.md similarity index 99% rename from docs/v0.3.0/user/http-request-headers.md rename to site/content/en/latest/user/http-request-headers.md index 5e1d77fe6d2..17fe3b87bcb 100644 --- a/docs/v0.3.0/user/http-request-headers.md +++ b/site/content/en/latest/user/http-request-headers.md @@ -1,4 +1,6 @@ -# HTTP Request Headers +--- +title: "HTTP Request Headers" +--- The [HTTPRoute][] resource can modify the headers of a request before forwarding it to the upstream service. HTTPRoute rules cannot use both filter types at once. Currently, Envoy Gateway only supports __core__ [HTTPRoute filters][] which diff --git a/docs/latest/user/http-request-mirroring.md b/site/content/en/latest/user/http-request-mirroring.md similarity index 99% rename from docs/latest/user/http-request-mirroring.md rename to site/content/en/latest/user/http-request-mirroring.md index 45b3508b264..aaea240f5ca 100644 --- a/docs/latest/user/http-request-mirroring.md +++ b/site/content/en/latest/user/http-request-mirroring.md @@ -1,4 +1,6 @@ -# HTTPRoute Request Mirroring +--- +title: "HTTPRoute Request Mirroring" +--- The [HTTPRoute][] resource allows one or more [backendRefs][] to be provided. Requests will be routed to these upstreams. It is possible to divide the traffic between these backends using [Traffic Splitting](http-traffic-splitting.md), but it is also possible to mirror requests to another Service instead. Request mirroring is accomplished using Gateway API's [HTTPRequestMirrorFilter][] on the `HTTPRoute`. diff --git a/docs/v0.4.0/user/http-response-headers.md b/site/content/en/latest/user/http-response-headers.md similarity index 99% rename from docs/v0.4.0/user/http-response-headers.md rename to site/content/en/latest/user/http-response-headers.md index 6c77c2e6c2c..4a27728003d 100644 --- a/docs/v0.4.0/user/http-response-headers.md +++ b/site/content/en/latest/user/http-response-headers.md @@ -1,4 +1,6 @@ -# HTTP Response Headers +--- +title: "HTTP Response Headers" +--- The [HTTPRoute][] resource can modify the headers of a response before responding it to the downstream service. To learn more about HTTP routing, refer to the [Gateway API documentation][]. diff --git a/docs/latest/user/http-routing.md b/site/content/en/latest/user/http-routing.md similarity index 99% rename from docs/latest/user/http-routing.md rename to site/content/en/latest/user/http-routing.md index 73e9b5263da..2b0f4cf1e35 100644 --- a/docs/latest/user/http-routing.md +++ b/site/content/en/latest/user/http-routing.md @@ -1,4 +1,6 @@ -# HTTP Routing +--- +title: "HTTP Routing" +--- The [HTTPRoute][] resource allows users to configure HTTP routing by matching HTTP traffic and forwarding it to Kubernetes backends. Currently, the only supported backend supported by Envoy Gateway is a Service resource. This guide diff --git a/docs/v0.5.0/user/http-traffic-splitting.md b/site/content/en/latest/user/http-traffic-splitting.md similarity index 99% rename from docs/v0.5.0/user/http-traffic-splitting.md rename to site/content/en/latest/user/http-traffic-splitting.md index 92fed8bd0b1..94f021b5aec 100644 --- a/docs/v0.5.0/user/http-traffic-splitting.md +++ b/site/content/en/latest/user/http-traffic-splitting.md @@ -1,4 +1,6 @@ -# HTTPRoute Traffic Splitting +--- +title: "HTTPRoute Traffic Splitting" +--- The [HTTPRoute][] resource allows one or more [backendRefs][] to be provided. Requests will be routed to these upstreams if they match the rules of the HTTPRoute. If an invalid backendRef is configured, then HTTP responses will be returned diff --git a/docs/v0.4.0/user/http-urlrewrite.md b/site/content/en/latest/user/http-urlrewrite.md similarity index 99% rename from docs/v0.4.0/user/http-urlrewrite.md rename to site/content/en/latest/user/http-urlrewrite.md index 88e29c3269c..fb68ae88322 100644 --- a/docs/v0.4.0/user/http-urlrewrite.md +++ b/site/content/en/latest/user/http-urlrewrite.md @@ -1,4 +1,6 @@ -# HTTP URL Rewrite +--- +title: "HTTP URL Rewrite" +--- [HTTPURLRewriteFilter][] defines a filter that modifies a request during forwarding. At most one of these filters may be used on a Route rule. This MUST NOT be used on the same Route rule as a HTTPRequestRedirect filter. diff --git a/docs/latest/user/installation.md b/site/content/en/latest/user/installation.md similarity index 96% rename from docs/latest/user/installation.md rename to site/content/en/latest/user/installation.md index 8f3d9de6db8..61e5c0a8061 100644 --- a/docs/latest/user/installation.md +++ b/site/content/en/latest/user/installation.md @@ -1,10 +1,12 @@ -# Installation +--- +title: "Installation" +--- ## Prerequisites A Kubernetes cluster. -__Note:__ Refer to the [Compatibility Matrix](../intro/compatibility.rst) for supported Kubernetes versions. +__Note:__ Refer to the [Compatibility Matrix](/blog/2022/10/01/versions/) for supported Kubernetes versions. ## Installation diff --git a/docs/latest/user/multicluster-service.md b/site/content/en/latest/user/multicluster-service.md similarity index 98% rename from docs/latest/user/multicluster-service.md rename to site/content/en/latest/user/multicluster-service.md index 1c46c8ab1f7..d0fd7a83fb1 100644 --- a/docs/latest/user/multicluster-service.md +++ b/site/content/en/latest/user/multicluster-service.md @@ -1,4 +1,6 @@ -# Multicluster Service Routing +--- +title: "Multicluster Service Routing" +--- The Multicluster Service API ServiceImport object can be used as part of the GatewayAPI backendRef for configuring routes. For more information about multicluster service API follow [sig documentation](https://multicluster.sigs.k8s.io/concepts/multicluster-services-api/). diff --git a/docs/v0.5.0/user/proxy-observability.md b/site/content/en/latest/user/proxy-observability.md similarity index 99% rename from docs/v0.5.0/user/proxy-observability.md rename to site/content/en/latest/user/proxy-observability.md index e635460865b..8755332262d 100644 --- a/docs/v0.5.0/user/proxy-observability.md +++ b/site/content/en/latest/user/proxy-observability.md @@ -1,4 +1,6 @@ -# Proxy Observability +--- +title: "Proxy Observability" +--- Envoy Gateway provides observability for the ControlPlane and the underlying EnvoyProxy instances. This guide show you how to config proxy observability, includes metrics, logs, and traces. diff --git a/docs/latest/user/quickstart.md b/site/content/en/latest/user/quickstart.md similarity index 92% rename from docs/latest/user/quickstart.md rename to site/content/en/latest/user/quickstart.md index ce2623ed005..c0850751c75 100644 --- a/docs/latest/user/quickstart.md +++ b/site/content/en/latest/user/quickstart.md @@ -1,4 +1,7 @@ -# Quickstart +--- +title: "Quickstart" +weight: 1 +--- This guide will help you get started with Envoy Gateway in a few simple steps. @@ -6,7 +9,7 @@ This guide will help you get started with Envoy Gateway in a few simple steps. A Kubernetes cluster. -__Note:__ Refer to the [Compatibility Matrix](../intro/compatibility.rst) for supported Kubernetes versions. +__Note:__ Refer to the [Compatibility Matrix](/blog/2022/10/01/versions/) for supported Kubernetes versions. __Note:__ In case your Kubernetes cluster, does not have a LoadBalancer implementation, we recommend installing one so the `Gateway` resource has an Address associated with it. We recommend using [MetalLB](https://metallb.universe.tf/installation/). @@ -97,4 +100,4 @@ helm uninstall eg -n envoy-gateway-system ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. diff --git a/docs/latest/user/rate-limit.md b/site/content/en/latest/user/rate-limit.md similarity index 99% rename from docs/latest/user/rate-limit.md rename to site/content/en/latest/user/rate-limit.md index 1baa0df1140..a2781fe0a90 100644 --- a/docs/latest/user/rate-limit.md +++ b/site/content/en/latest/user/rate-limit.md @@ -1,4 +1,6 @@ -# Rate Limit +--- +title: "Rate Limit" +--- Rate limit is a feature that allows the user to limit the number of incoming requests to a predefined value based on attributes within the traffic flow. diff --git a/docs/v0.5.0/user/secure-gateways.md b/site/content/en/latest/user/secure-gateways.md similarity index 99% rename from docs/v0.5.0/user/secure-gateways.md rename to site/content/en/latest/user/secure-gateways.md index 8ada7c59978..25f6808292f 100644 --- a/docs/v0.5.0/user/secure-gateways.md +++ b/site/content/en/latest/user/secure-gateways.md @@ -1,4 +1,6 @@ -# Secure Gateways +--- +title: "Secure Gateways" +--- This guide will help you get started using secure Gateways. The guide uses a self-signed CA, so it should be used for testing and demonstration purposes only. @@ -448,6 +450,6 @@ Refer to the steps mentioned earlier in the guide under [Testing in clusters wit ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [ReferenceGrant]: https://gateway-api.sigs.k8s.io/api-types/referencegrant/ diff --git a/docs/latest/user/tcp-routing.md b/site/content/en/latest/user/tcp-routing.md similarity index 99% rename from docs/latest/user/tcp-routing.md rename to site/content/en/latest/user/tcp-routing.md index ed1f5430b4c..d06ae77f7a4 100644 --- a/docs/latest/user/tcp-routing.md +++ b/site/content/en/latest/user/tcp-routing.md @@ -1,4 +1,6 @@ -# TCP Routing +--- +title: "TCP Routing" +--- [TCPRoute][] provides a way to route TCP requests. When combined with a Gateway listener, it can be used to forward connections on the port specified by the listener to a set of backends specified by the TCPRoute. To learn more about diff --git a/docs/latest/user/tls-cert-manager.md b/site/content/en/latest/user/tls-cert-manager.md similarity index 99% rename from docs/latest/user/tls-cert-manager.md rename to site/content/en/latest/user/tls-cert-manager.md index 72f3384fdd5..b47d80ca5d1 100644 --- a/docs/latest/user/tls-cert-manager.md +++ b/site/content/en/latest/user/tls-cert-manager.md @@ -1,4 +1,6 @@ -# Using cert-manager For TLS Termination +--- +title: "Using cert-manager For TLS Termination" +--- This guide shows how to set up [cert-manager](https://cert-manager.io/) to automatically create certificates and secrets for use by Envoy Gateway. It will first show how to enable the self-sign issuer, which is useful to test that cert-manager and Envoy Gateway can talk to each other. @@ -51,7 +53,7 @@ cert-manager can have any number of *issuer* configurations. The simplest issuer type is [SelfSigned](https://cert-manager.io/docs/configuration/selfsigned/). It simply takes the certificate request and signs it with the private key it generates for the TLS Secret. -```{note} +``` Self-signed certificates don't provide any help in establishing trust between certificates. However, they are great for initial testing, due to their simplicity. ``` diff --git a/docs/latest/user/tls-passthrough.md b/site/content/en/latest/user/tls-passthrough.md similarity index 96% rename from docs/latest/user/tls-passthrough.md rename to site/content/en/latest/user/tls-passthrough.md index 75a14d2a537..4cef2eace8a 100644 --- a/docs/latest/user/tls-passthrough.md +++ b/site/content/en/latest/user/tls-passthrough.md @@ -1,4 +1,6 @@ -# TLS Passthrough +--- +title: "TLS Passthrough" +--- This guide will walk through the steps required to configure TLS Passthrough via Envoy Gateway. Unlike configuring Secure Gateways, where the Gateway terminates the client TLS connection, TLS Passthrough allows the application itself @@ -114,4 +116,4 @@ kubectl delete secret/server-certs ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. diff --git a/docs/latest/user/tls-termination.md b/site/content/en/latest/user/tls-termination.md similarity index 98% rename from docs/latest/user/tls-termination.md rename to site/content/en/latest/user/tls-termination.md index ebea433faf1..eaae97ec9fd 100644 --- a/docs/latest/user/tls-termination.md +++ b/site/content/en/latest/user/tls-termination.md @@ -1,4 +1,6 @@ -# TLS Termination for TCP +--- +title: "TLS Termination for TCP" +--- This guide will walk through the steps required to configure TLS Terminate mode for TCP traffic via Envoy Gateway. The guide uses a self-signed CA, so it should be used for testing and demonstration purposes only. diff --git a/docs/latest/user/udp-routing.md b/site/content/en/latest/user/udp-routing.md similarity index 97% rename from docs/latest/user/udp-routing.md rename to site/content/en/latest/user/udp-routing.md index 865019cc1d6..17ba65e0f22 100644 --- a/docs/latest/user/udp-routing.md +++ b/site/content/en/latest/user/udp-routing.md @@ -1,4 +1,6 @@ -# UDP Routing +--- +title: "UDP Routing" +--- The [UDPRoute][] resource allows users to configure UDP routing by matching UDP traffic and forwarding it to Kubernetes backends. This guide will use CoreDNS example to walk you through the steps required to configure UDPRoute on Envoy @@ -148,7 +150,7 @@ kubectl delete udproute/coredns ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [UDPRoute]: https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.UDPRoute [UDP proxy documentation]: https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/udp_filters/udp_proxy diff --git a/site/content/en/search.md b/site/content/en/search.md new file mode 100644 index 00000000000..394feea5fdb --- /dev/null +++ b/site/content/en/search.md @@ -0,0 +1,4 @@ +--- +title: Search Results +layout: search +--- diff --git a/site/content/en/v0.2.0/_index.md b/site/content/en/v0.2.0/_index.md new file mode 100644 index 00000000000..53d07c8aae3 --- /dev/null +++ b/site/content/en/v0.2.0/_index.md @@ -0,0 +1,21 @@ ++++ +title = "Welcome to Envoy Gateway" +description = "Envoy Gateway Documents" +linktitle = "Documentation" + +[[cascade]] +type = "docs" ++++ + +{{% alert title="Note" color="primary" %}} + +This project is under **active** development. Many features are not complete. We would love for you to [Get Involved](contributions/)! + +{{% /alert %}} + +Envoy Gateway is an open source project for managing [Envoy Proxy](https://www.envoyproxy.io/) as a standalone or Kubernetes-based application +gateway. [Gateway API](https://gateway-api.sigs.k8s.io/) resources are used to dynamically provision and configure the managed Envoy Proxies. + +![architecture](/img/traffic.png) + +## Ready to get started? diff --git a/docs/v0.2.0/dev/CODEOWNERS.md b/site/content/en/v0.2.0/contributions/CODEOWNERS.md similarity index 65% rename from docs/v0.2.0/dev/CODEOWNERS.md rename to site/content/en/v0.2.0/contributions/CODEOWNERS.md index d4229b6b23f..63b751abde5 100644 --- a/docs/v0.2.0/dev/CODEOWNERS.md +++ b/site/content/en/v0.2.0/contributions/CODEOWNERS.md @@ -1,15 +1,19 @@ -# Maintainers +--- +title: "Maintainers" +description: "This section includes Maintainers of Envoy Gateway." +--- ## The following maintainers, listed in alphabetical order, own everything - @AliceProxy - @arkodg -- @skriss - @Xunzhuo -- @youngnick - @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 00000000000..e19da050dff --- /dev/null +++ b/site/content/en/v0.2.0/contributions/CODE_OF_CONDUCT.md @@ -0,0 +1,6 @@ +--- +title: "Code of Conduct" +description: "This section includes Code of Conduct of Envoy Gateway." +--- + +Envoy Gateway follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). diff --git a/docs/v0.4.0/dev/CONTRIBUTING.md b/site/content/en/v0.2.0/contributions/CONTRIBUTING.md similarity index 96% rename from docs/v0.4.0/dev/CONTRIBUTING.md rename to site/content/en/v0.2.0/contributions/CONTRIBUTING.md index 04d95bb675d..f94b2c940e9 100644 --- a/docs/v0.4.0/dev/CONTRIBUTING.md +++ b/site/content/en/v0.2.0/contributions/CONTRIBUTING.md @@ -1,6 +1,10 @@ -# Contributing +--- +title: "Contributing" +description: "This section tells how to contribute to Envoy Gateway." +weight: 3 +--- -We welcome contributions from the community. Please carefully review the [project goals](GOALS.md) +We welcome contributions from the community. Please carefully review the [project goals](/about) and following guidelines to streamline your contributions. ## Communication @@ -10,7 +14,7 @@ and following guidelines to streamline your contributions. * 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 + for major features is also important so that [affiliations with commit access](../codeowners) 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. @@ -44,8 +48,8 @@ to the following guidelines for all code, APIs, and documentation: * 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). +* Any PR that changes user-facing behavior **must** have associated documentation in the [docs](https://github.com/envoyproxy/gateway/tree/main/site) folder of the repo as + well as the [changelog](/blog/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. @@ -77,7 +81,7 @@ to the following guidelines for all code, APIs, and documentation: ## Maintainer PR Review Policy -* See [CODEOWNERS.md](CODEOWNERS.md) for the current list of maintainers. +* See [CODEOWNERS.md](../codeowners) 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 diff --git a/docs/latest/dev/README.md b/site/content/en/v0.2.0/contributions/DEVELOP.md similarity index 98% rename from docs/latest/dev/README.md rename to site/content/en/v0.2.0/contributions/DEVELOP.md index cf25992e5b3..6f82c4a411f 100644 --- a/docs/latest/dev/README.md +++ b/site/content/en/v0.2.0/contributions/DEVELOP.md @@ -1,4 +1,8 @@ -# Developer Guide +--- +title: "Developer Guide" +description: "This section tells how to develop Envoy Gateway." +weight: 2 +--- Envoy Gateway is built using a [make][]-based build system. Our CI is based on [Github Actions][] using [workflows][]. diff --git a/docs/v0.3.0/dev/DOCS.md b/site/content/en/v0.2.0/contributions/DOCS.md similarity index 95% rename from docs/v0.3.0/dev/DOCS.md rename to site/content/en/v0.2.0/contributions/DOCS.md index fb49b9d55dd..8266c9e9a2b 100644 --- a/docs/v0.3.0/dev/DOCS.md +++ b/site/content/en/v0.2.0/contributions/DOCS.md @@ -1,4 +1,8 @@ -# Working on the Envoy Gateway Docs +--- +title: "Working on Envoy Gateway Docs" +description: "This section tells the development of + Envoy Gateway Documents." +--- The documentation for the Envoy Gateway lives in the `docs/` directory. Any individual document can be written using either [reStructuredText] or [Markdown], diff --git a/docs/v0.5.0/dev/releasing.md b/site/content/en/v0.2.0/contributions/RELEASING.md similarity index 98% rename from docs/v0.5.0/dev/releasing.md rename to site/content/en/v0.2.0/contributions/RELEASING.md index 81625698cfa..013707d4569 100644 --- a/docs/v0.5.0/dev/releasing.md +++ b/site/content/en/v0.2.0/contributions/RELEASING.md @@ -1,4 +1,7 @@ -# Release Process +--- +title: "Release Process" +description: "This section tells the release process of Envoy Gateway." +--- This document guides maintainers through the process of creating an Envoy Gateway release. 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 00000000000..3255d996472 --- /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/docs/v0.2.0/design/roadmap.md b/site/content/en/v0.2.0/contributions/roadmap.md similarity index 96% rename from docs/v0.2.0/design/roadmap.md rename to site/content/en/v0.2.0/contributions/roadmap.md index d6ec649e4a2..0763d482627 100644 --- a/docs/v0.2.0/design/roadmap.md +++ b/site/content/en/v0.2.0/contributions/roadmap.md @@ -1,4 +1,8 @@ -# Roadmap +--- +title: "Roadmap" +weight: -1 +description: "This section records the roadmap of Envoy Gateway." +--- This document serves as a high-level reference for Envoy Gateway users and contributors to understand the direction of the project. diff --git a/site/content/en/v0.2.0/design/_index.md b/site/content/en/v0.2.0/design/_index.md new file mode 100644 index 00000000000..21650809f7d --- /dev/null +++ b/site/content/en/v0.2.0/design/_index.md @@ -0,0 +1,6 @@ +--- +title: "Design" +weight: 1 +description: This section includes Designs of Envoy Gateway. +--- + diff --git a/docs/v0.2.0/design/config-api.md b/site/content/en/v0.2.0/design/config-api.md similarity index 99% rename from docs/v0.2.0/design/config-api.md rename to site/content/en/v0.2.0/design/config-api.md index 3696860dd54..466b84d8f35 100644 --- a/docs/v0.2.0/design/config-api.md +++ b/site/content/en/v0.2.0/design/config-api.md @@ -1,4 +1,6 @@ -# Configuration API Design +--- +title: "Configuration API Design" +--- ## Motivation diff --git a/docs/v0.4.0/design/gatewayapi-translator.md b/site/content/en/v0.2.0/design/gatewayapi-translator.md similarity index 99% rename from docs/v0.4.0/design/gatewayapi-translator.md rename to site/content/en/v0.2.0/design/gatewayapi-translator.md index 3cf0da94f5a..b83ed82588d 100644 --- a/docs/v0.4.0/design/gatewayapi-translator.md +++ b/site/content/en/v0.2.0/design/gatewayapi-translator.md @@ -1,4 +1,7 @@ -# Gateway API Translator Design +--- +title: "Gateway API Translator Design" +weight: 4 +--- The Gateway API translates external resources, e.g. GatewayClass, from the configured Provider to the Intermediate Representation (IR). diff --git a/docs/v0.3.0/dev/GOALS.md b/site/content/en/v0.2.0/design/goals.md similarity index 99% rename from docs/v0.3.0/dev/GOALS.md rename to site/content/en/v0.2.0/design/goals.md index 519be9f180f..fd38b2004c6 100644 --- a/docs/v0.3.0/dev/GOALS.md +++ b/site/content/en/v0.2.0/design/goals.md @@ -1,4 +1,7 @@ -# Goals +--- +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 @@ -8,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 @@ -23,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. @@ -37,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 @@ -44,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 @@ -57,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/docs/v0.2.0/design/system-design.md b/site/content/en/v0.2.0/design/system-design.md similarity index 99% rename from docs/v0.2.0/design/system-design.md rename to site/content/en/v0.2.0/design/system-design.md index 731cb0925b0..72c0a98ecda 100644 --- a/docs/v0.2.0/design/system-design.md +++ b/site/content/en/v0.2.0/design/system-design.md @@ -1,4 +1,7 @@ -# System Design +--- +title: "System Design" +weight: 2 +--- ## Goals @@ -17,7 +20,7 @@ ## Architecture -![Architecture](../images/architecture.png) +![Architecture](/img/architecture.png) ## Configuration diff --git a/docs/v0.3.0/design/watching.md b/site/content/en/v0.2.0/design/watching.md similarity index 99% rename from docs/v0.3.0/design/watching.md rename to site/content/en/v0.2.0/design/watching.md index b8477a30e2d..72a955043e0 100644 --- a/docs/v0.3.0/design/watching.md +++ b/site/content/en/v0.2.0/design/watching.md @@ -1,4 +1,7 @@ -# Watching Components Design +--- +title: "Watching Components Design" +weight: 3 +--- Envoy Gateway is made up of several components that communicate in-process. Some of them (namely Providers) watch external resources, and "publish" what they see for other components to consume; others watch what another publishes and diff --git a/site/content/en/v0.2.0/user/_index.md b/site/content/en/v0.2.0/user/_index.md new file mode 100644 index 00000000000..2f23014d867 --- /dev/null +++ b/site/content/en/v0.2.0/user/_index.md @@ -0,0 +1,6 @@ +--- +title: "User Guides" +weight: 2 +description: This section includes User Guides of Envoy Gateway. +--- + diff --git a/docs/v0.2.0/user/http-redirect.md b/site/content/en/v0.2.0/user/http-redirect.md similarity index 99% rename from docs/v0.2.0/user/http-redirect.md rename to site/content/en/v0.2.0/user/http-redirect.md index 5b6588535ea..245039c74b5 100644 --- a/docs/v0.2.0/user/http-redirect.md +++ b/site/content/en/v0.2.0/user/http-redirect.md @@ -1,4 +1,6 @@ -# HTTP Redirects +--- +title: "HTTP Redirects" +--- The [HTTPRoute][] resource can issue redirects to clients or rewrite paths sent upstream using filters. Note that HTTPRoute rules cannot use both filter types at once. Currently, Envoy Gateway only supports __core__ diff --git a/docs/v0.2.0/user/http-request-headers.md b/site/content/en/v0.2.0/user/http-request-headers.md similarity index 99% rename from docs/v0.2.0/user/http-request-headers.md rename to site/content/en/v0.2.0/user/http-request-headers.md index b51bf946cdf..cc801d28ddc 100644 --- a/docs/v0.2.0/user/http-request-headers.md +++ b/site/content/en/v0.2.0/user/http-request-headers.md @@ -1,4 +1,6 @@ -# HTTP Request Headers +--- +title: "HTTP Request Headers" +--- The [HTTPRoute][] resource can modify the headers of a request before forwarding it to the upstream service. HTTPRoute rules cannot use both filter types at once. Currently, Envoy Gateway only supports __core__ [HTTPRoute filters][] which diff --git a/docs/v0.2.0/user/http-routing.md b/site/content/en/v0.2.0/user/http-routing.md similarity index 99% rename from docs/v0.2.0/user/http-routing.md rename to site/content/en/v0.2.0/user/http-routing.md index d3d9bd388cb..6ca0b8c9751 100644 --- a/docs/v0.2.0/user/http-routing.md +++ b/site/content/en/v0.2.0/user/http-routing.md @@ -1,4 +1,6 @@ -# HTTP Routing +--- +title: "HTTP Routing" +--- The [HTTPRoute][] resource allows users to configure HTTP routing by matching HTTP traffic and forwarding it to Kubernetes backends. Currently, the only supported backend supported by Envoy Gateway is a Service resource. This guide diff --git a/docs/v0.2.0/user/http-traffic-splitting.md b/site/content/en/v0.2.0/user/http-traffic-splitting.md similarity index 99% rename from docs/v0.2.0/user/http-traffic-splitting.md rename to site/content/en/v0.2.0/user/http-traffic-splitting.md index a3f8fe60b47..421a4fa0546 100644 --- a/docs/v0.2.0/user/http-traffic-splitting.md +++ b/site/content/en/v0.2.0/user/http-traffic-splitting.md @@ -1,4 +1,6 @@ -# HTTPRoute Traffic Splitting +--- +title: "HTTPRoute Traffic Splitting" +--- The [HTTPRoute][] resource allows one or more [backendRefs][] to be provided. Requests will be routed to these upstreams if they match the rules of the HTTPRoute. If an invalid backendRef is configured, then HTTP responses will be returned diff --git a/docs/v0.2.0/user/quickstart.md b/site/content/en/v0.2.0/user/quickstart.md similarity index 90% rename from docs/v0.2.0/user/quickstart.md rename to site/content/en/v0.2.0/user/quickstart.md index 5361ca187ea..291480b1747 100644 --- a/docs/v0.2.0/user/quickstart.md +++ b/site/content/en/v0.2.0/user/quickstart.md @@ -1,4 +1,7 @@ -# Quickstart +--- +title: "Quickstart" +weight: 1 +--- This guide will help you get started with Envoy Gateway in a few simple steps. @@ -6,7 +9,7 @@ This guide will help you get started with Envoy Gateway in a few simple steps. A Kubernetes cluster. -__Note:__ Refer to the [Compatibility Matrix](../intro/compatibility.rst) for supported Kubernetes versions. +__Note:__ Refer to the [Compatibility Matrix](/blog/2022/10/01/versions/) for supported Kubernetes versions. ## Installation @@ -84,4 +87,4 @@ kubectl delete -f https://github.com/envoyproxy/gateway/releases/download/v0.2.0 ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. diff --git a/docs/v0.2.0/user/secure-gateways.md b/site/content/en/v0.2.0/user/secure-gateways.md similarity index 98% rename from docs/v0.2.0/user/secure-gateways.md rename to site/content/en/v0.2.0/user/secure-gateways.md index cd5199495b9..a7cb5d05acc 100644 --- a/docs/v0.2.0/user/secure-gateways.md +++ b/site/content/en/v0.2.0/user/secure-gateways.md @@ -1,4 +1,6 @@ -# Secure Gateways +--- +title: "Secure Gateways" +--- This guide will help you get started using secure Gateways. The guide uses a self-signed CA, so it should be used for testing and demonstration purposes only. @@ -251,6 +253,6 @@ kubectl delete secret/foo-cert ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [ReferenceGrant]: https://gateway-api.sigs.k8s.io/api-types/referencegrant/ diff --git a/docs/v0.2.0/user/tls-passthrough.md b/site/content/en/v0.2.0/user/tls-passthrough.md similarity index 96% rename from docs/v0.2.0/user/tls-passthrough.md rename to site/content/en/v0.2.0/user/tls-passthrough.md index f089350d3bd..73efa8d32dd 100644 --- a/docs/v0.2.0/user/tls-passthrough.md +++ b/site/content/en/v0.2.0/user/tls-passthrough.md @@ -1,4 +1,6 @@ -# TLS Passthrough +--- +title: "TLS Passthrough" +--- This guide will walk through the steps required to configure TLS Passthrough via Envoy Gateway. Unlike configuring Secure Gateways, where the Gateway terminates the client TLS connection, TLS Passthrough allows the application itself @@ -114,4 +116,4 @@ kubectl delete secret/server-certs ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. diff --git a/site/content/en/v0.3.0/_index.md b/site/content/en/v0.3.0/_index.md new file mode 100644 index 00000000000..53d07c8aae3 --- /dev/null +++ b/site/content/en/v0.3.0/_index.md @@ -0,0 +1,21 @@ ++++ +title = "Welcome to Envoy Gateway" +description = "Envoy Gateway Documents" +linktitle = "Documentation" + +[[cascade]] +type = "docs" ++++ + +{{% alert title="Note" color="primary" %}} + +This project is under **active** development. Many features are not complete. We would love for you to [Get Involved](contributions/)! + +{{% /alert %}} + +Envoy Gateway is an open source project for managing [Envoy Proxy](https://www.envoyproxy.io/) as a standalone or Kubernetes-based application +gateway. [Gateway API](https://gateway-api.sigs.k8s.io/) resources are used to dynamically provision and configure the managed Envoy Proxies. + +![architecture](/img/traffic.png) + +## Ready to get started? diff --git a/site/content/en/v0.3.0/api/_index.md b/site/content/en/v0.3.0/api/_index.md new file mode 100644 index 00000000000..396d9ffcefc --- /dev/null +++ b/site/content/en/v0.3.0/api/_index.md @@ -0,0 +1,5 @@ +--- +title: "API" +description: This section includes APIs of Envoy Gateway. +weight: 80 +--- diff --git a/docs/v0.3.0/api/config_types.md b/site/content/en/v0.3.0/api/config_types.md similarity index 99% rename from docs/v0.3.0/api/config_types.md rename to site/content/en/v0.3.0/api/config_types.md index 8ddc73d3efc..4ff5b3f6f18 100644 --- a/docs/v0.3.0/api/config_types.md +++ b/site/content/en/v0.3.0/api/config_types.md @@ -1,4 +1,6 @@ -# API Reference +--- +title: "Config APIs" +--- ## Packages - [config.gateway.envoyproxy.io/v1alpha1](#configgatewayenvoyproxyiov1alpha1) diff --git a/docs/v0.3.0/api/extension_types.md b/site/content/en/v0.3.0/api/extension_types.md similarity index 99% rename from docs/v0.3.0/api/extension_types.md rename to site/content/en/v0.3.0/api/extension_types.md index 9479da94da5..478fc54f5dc 100644 --- a/docs/v0.3.0/api/extension_types.md +++ b/site/content/en/v0.3.0/api/extension_types.md @@ -1,4 +1,6 @@ -# API Reference +--- +title: "Extension APIs" +--- ## Packages - [gateway.envoyproxy.io/v1alpha1](#gatewayenvoyproxyiov1alpha1) diff --git a/docs/v0.3.0/dev/CODEOWNERS.md b/site/content/en/v0.3.0/contributions/CODEOWNERS.md similarity index 65% rename from docs/v0.3.0/dev/CODEOWNERS.md rename to site/content/en/v0.3.0/contributions/CODEOWNERS.md index d4229b6b23f..63b751abde5 100644 --- a/docs/v0.3.0/dev/CODEOWNERS.md +++ b/site/content/en/v0.3.0/contributions/CODEOWNERS.md @@ -1,15 +1,19 @@ -# Maintainers +--- +title: "Maintainers" +description: "This section includes Maintainers of Envoy Gateway." +--- ## The following maintainers, listed in alphabetical order, own everything - @AliceProxy - @arkodg -- @skriss - @Xunzhuo -- @youngnick - @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 00000000000..e19da050dff --- /dev/null +++ b/site/content/en/v0.3.0/contributions/CODE_OF_CONDUCT.md @@ -0,0 +1,6 @@ +--- +title: "Code of Conduct" +description: "This section includes Code of Conduct of Envoy Gateway." +--- + +Envoy Gateway follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). diff --git a/docs/latest/dev/CONTRIBUTING.md b/site/content/en/v0.3.0/contributions/CONTRIBUTING.md similarity index 96% rename from docs/latest/dev/CONTRIBUTING.md rename to site/content/en/v0.3.0/contributions/CONTRIBUTING.md index 04d95bb675d..f94b2c940e9 100644 --- a/docs/latest/dev/CONTRIBUTING.md +++ b/site/content/en/v0.3.0/contributions/CONTRIBUTING.md @@ -1,6 +1,10 @@ -# Contributing +--- +title: "Contributing" +description: "This section tells how to contribute to Envoy Gateway." +weight: 3 +--- -We welcome contributions from the community. Please carefully review the [project goals](GOALS.md) +We welcome contributions from the community. Please carefully review the [project goals](/about) and following guidelines to streamline your contributions. ## Communication @@ -10,7 +14,7 @@ and following guidelines to streamline your contributions. * 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 + for major features is also important so that [affiliations with commit access](../codeowners) 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. @@ -44,8 +48,8 @@ to the following guidelines for all code, APIs, and documentation: * 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). +* Any PR that changes user-facing behavior **must** have associated documentation in the [docs](https://github.com/envoyproxy/gateway/tree/main/site) folder of the repo as + well as the [changelog](/blog/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. @@ -77,7 +81,7 @@ to the following guidelines for all code, APIs, and documentation: ## Maintainer PR Review Policy -* See [CODEOWNERS.md](CODEOWNERS.md) for the current list of maintainers. +* See [CODEOWNERS.md](../codeowners) 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 diff --git a/docs/v0.4.0/dev/README.md b/site/content/en/v0.3.0/contributions/DEVELOP.md similarity index 93% rename from docs/v0.4.0/dev/README.md rename to site/content/en/v0.3.0/contributions/DEVELOP.md index 2d4f13e9e80..6f82c4a411f 100644 --- a/docs/v0.4.0/dev/README.md +++ b/site/content/en/v0.3.0/contributions/DEVELOP.md @@ -1,4 +1,8 @@ -# Developer Guide +--- +title: "Developer Guide" +description: "This section tells how to develop Envoy Gateway." +weight: 2 +--- Envoy Gateway is built using a [make][]-based build system. Our CI is based on [Github Actions][] using [workflows][]. @@ -44,9 +48,12 @@ __Note:__ The binaries get generated in the `bin/$OS/$ARCH` directory, for examp * 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 @@ -67,7 +74,7 @@ __Note:__ Replace `IMAGE` with your registry's image name. #### 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 `make kube-deploy` to install Envoy Gateway into the Kind cluster using your custom image. +* 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 @@ -138,7 +145,7 @@ verify signature was copied to [JWK Creator][] for generating the JWK. The JWK C 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/user/quickstart.md +[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 diff --git a/docs/v0.4.0/dev/DOCS.md b/site/content/en/v0.3.0/contributions/DOCS.md similarity index 95% rename from docs/v0.4.0/dev/DOCS.md rename to site/content/en/v0.3.0/contributions/DOCS.md index fb49b9d55dd..8266c9e9a2b 100644 --- a/docs/v0.4.0/dev/DOCS.md +++ b/site/content/en/v0.3.0/contributions/DOCS.md @@ -1,4 +1,8 @@ -# Working on the Envoy Gateway Docs +--- +title: "Working on Envoy Gateway Docs" +description: "This section tells the development of + Envoy Gateway Documents." +--- The documentation for the Envoy Gateway lives in the `docs/` directory. Any individual document can be written using either [reStructuredText] or [Markdown], diff --git a/docs/latest/dev/releasing.md b/site/content/en/v0.3.0/contributions/RELEASING.md similarity index 98% rename from docs/latest/dev/releasing.md rename to site/content/en/v0.3.0/contributions/RELEASING.md index 81625698cfa..013707d4569 100644 --- a/docs/latest/dev/releasing.md +++ b/site/content/en/v0.3.0/contributions/RELEASING.md @@ -1,4 +1,7 @@ -# Release Process +--- +title: "Release Process" +description: "This section tells the release process of Envoy Gateway." +--- This document guides maintainers through the process of creating an Envoy Gateway release. 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 00000000000..3255d996472 --- /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/docs/v0.3.0/design/roadmap.md b/site/content/en/v0.3.0/contributions/roadmap.md similarity index 97% rename from docs/v0.3.0/design/roadmap.md rename to site/content/en/v0.3.0/contributions/roadmap.md index 735f19e6981..986043c9382 100644 --- a/docs/v0.3.0/design/roadmap.md +++ b/site/content/en/v0.3.0/contributions/roadmap.md @@ -1,4 +1,8 @@ -# Roadmap +--- +title: "Roadmap" +weight: -1 +description: "This section records the roadmap of Envoy Gateway." +--- This document serves as a high-level reference for Envoy Gateway users and contributors to understand the direction of the project. diff --git a/site/content/en/v0.3.0/design/_index.md b/site/content/en/v0.3.0/design/_index.md new file mode 100644 index 00000000000..21650809f7d --- /dev/null +++ b/site/content/en/v0.3.0/design/_index.md @@ -0,0 +1,6 @@ +--- +title: "Design" +weight: 1 +description: This section includes Designs of Envoy Gateway. +--- + diff --git a/docs/v0.3.0/design/config-api.md b/site/content/en/v0.3.0/design/config-api.md similarity index 99% rename from docs/v0.3.0/design/config-api.md rename to site/content/en/v0.3.0/design/config-api.md index 3696860dd54..466b84d8f35 100644 --- a/docs/v0.3.0/design/config-api.md +++ b/site/content/en/v0.3.0/design/config-api.md @@ -1,4 +1,6 @@ -# Configuration API Design +--- +title: "Configuration API Design" +--- ## Motivation diff --git a/docs/v0.3.0/design/egctl.md b/site/content/en/v0.3.0/design/egctl.md similarity index 98% rename from docs/v0.3.0/design/egctl.md rename to site/content/en/v0.3.0/design/egctl.md index 53a5e7b998a..c9db36e1b68 100644 --- a/docs/v0.3.0/design/egctl.md +++ b/site/content/en/v0.3.0/design/egctl.md @@ -1,4 +1,6 @@ -# Introduce egctl +--- +title: "Introduce egctl" +--- ## Motivation diff --git a/docs/v0.3.0/design/gatewayapi-support.md b/site/content/en/v0.3.0/design/gatewayapi-support.md similarity index 99% rename from docs/v0.3.0/design/gatewayapi-support.md rename to site/content/en/v0.3.0/design/gatewayapi-support.md index 4ce9f1b041e..67eaf05bb4a 100644 --- a/docs/v0.3.0/design/gatewayapi-support.md +++ b/site/content/en/v0.3.0/design/gatewayapi-support.md @@ -1,4 +1,6 @@ -# Gateway API Support +--- +title: "Gateway API Support" +--- As mentioned in the [system design][] document, Envoy Gateway's managed data plane is configured dynamically through Kubernetes resources, primarily [Gateway API][] objects. Envoy Gateway supports configuration using the following Gateway API resources. diff --git a/docs/v0.3.0/design/gatewayapi-translator.md b/site/content/en/v0.3.0/design/gatewayapi-translator.md similarity index 99% rename from docs/v0.3.0/design/gatewayapi-translator.md rename to site/content/en/v0.3.0/design/gatewayapi-translator.md index 3cf0da94f5a..b83ed82588d 100644 --- a/docs/v0.3.0/design/gatewayapi-translator.md +++ b/site/content/en/v0.3.0/design/gatewayapi-translator.md @@ -1,4 +1,7 @@ -# Gateway API Translator Design +--- +title: "Gateway API Translator Design" +weight: 4 +--- The Gateway API translates external resources, e.g. GatewayClass, from the configured Provider to the Intermediate Representation (IR). 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 00000000000..fd38b2004c6 --- /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/docs/v0.3.0/design/ratelimit.md b/site/content/en/v0.3.0/design/ratelimit.md similarity index 99% rename from docs/v0.3.0/design/ratelimit.md rename to site/content/en/v0.3.0/design/ratelimit.md index 8cf069346e4..5d080e4d08c 100644 --- a/docs/v0.3.0/design/ratelimit.md +++ b/site/content/en/v0.3.0/design/ratelimit.md @@ -1,4 +1,6 @@ -# Rate Limit Design +--- +title: "Rate Limit Design" +--- ## Overview diff --git a/docs/latest/design/request-authentication.md b/site/content/en/v0.3.0/design/request-authentication.md similarity index 99% rename from docs/latest/design/request-authentication.md rename to site/content/en/v0.3.0/design/request-authentication.md index 6b2192eadfd..a88f7392b1f 100644 --- a/docs/latest/design/request-authentication.md +++ b/site/content/en/v0.3.0/design/request-authentication.md @@ -1,4 +1,6 @@ -# Request Authentication Design +--- +title: "Request Authentication" +--- ## Overview diff --git a/docs/v0.3.0/design/system-design.md b/site/content/en/v0.3.0/design/system-design.md similarity index 99% rename from docs/v0.3.0/design/system-design.md rename to site/content/en/v0.3.0/design/system-design.md index 731cb0925b0..72c0a98ecda 100644 --- a/docs/v0.3.0/design/system-design.md +++ b/site/content/en/v0.3.0/design/system-design.md @@ -1,4 +1,7 @@ -# System Design +--- +title: "System Design" +weight: 2 +--- ## Goals @@ -17,7 +20,7 @@ ## Architecture -![Architecture](../images/architecture.png) +![Architecture](/img/architecture.png) ## Configuration diff --git a/docs/latest/design/tcp-udp-design.md b/site/content/en/v0.3.0/design/tcp-udp-design.md similarity index 98% rename from docs/latest/design/tcp-udp-design.md rename to site/content/en/v0.3.0/design/tcp-udp-design.md index 276221b897b..f517e24feda 100644 --- a/docs/latest/design/tcp-udp-design.md +++ b/site/content/en/v0.3.0/design/tcp-udp-design.md @@ -1,4 +1,6 @@ -# TCP and UDP Proxy Design +--- +title: "TCP and UDP Proxy Design " +--- Even though most of the use cases for Envoy Gateway are at Layer-7, Envoy Gateway can also work at Layer-4 to proxy TCP and UDP traffic. This document will explore the options we have when operating Envoy Gateway at Layer-4 and explain the diff --git a/docs/latest/design/watching.md b/site/content/en/v0.3.0/design/watching.md similarity index 99% rename from docs/latest/design/watching.md rename to site/content/en/v0.3.0/design/watching.md index b8477a30e2d..72a955043e0 100644 --- a/docs/latest/design/watching.md +++ b/site/content/en/v0.3.0/design/watching.md @@ -1,4 +1,7 @@ -# Watching Components Design +--- +title: "Watching Components Design" +weight: 3 +--- Envoy Gateway is made up of several components that communicate in-process. Some of them (namely Providers) watch external resources, and "publish" what they see for other components to consume; others watch what another publishes and diff --git a/site/content/en/v0.3.0/user/_index.md b/site/content/en/v0.3.0/user/_index.md new file mode 100644 index 00000000000..2f23014d867 --- /dev/null +++ b/site/content/en/v0.3.0/user/_index.md @@ -0,0 +1,6 @@ +--- +title: "User Guides" +weight: 2 +description: This section includes User Guides of Envoy Gateway. +--- + diff --git a/docs/v0.3.0/user/authn.md b/site/content/en/v0.3.0/user/authn.md similarity index 95% rename from docs/v0.3.0/user/authn.md rename to site/content/en/v0.3.0/user/authn.md index 3b40738f305..aedf5952273 100644 --- a/docs/v0.3.0/user/authn.md +++ b/site/content/en/v0.3.0/user/authn.md @@ -1,4 +1,6 @@ -# Request Authentication +--- +title: "Request Authentication" +--- This guide provides instructions for configuring [JSON Web Token (JWT)][jwt] authentication. JWT authentication checks if an incoming request has a valid JWT before routing the request to a backend service. Currently, Envoy Gateway only @@ -87,7 +89,7 @@ kubectl delete authenticationfilter/jwt-example ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [jwt]: https://tools.ietf.org/html/rfc7519 [AuthenticationFilter]: https://gateway.envoyproxy.io/v0.3.0/api/extension_types.html#authenticationfilter diff --git a/docs/v0.3.0/user/grpc-routing.md b/site/content/en/v0.3.0/user/grpc-routing.md similarity index 99% rename from docs/v0.3.0/user/grpc-routing.md rename to site/content/en/v0.3.0/user/grpc-routing.md index 31a25c44268..71c7179243f 100644 --- a/docs/v0.3.0/user/grpc-routing.md +++ b/site/content/en/v0.3.0/user/grpc-routing.md @@ -1,4 +1,6 @@ -# GRPC Routing +--- +title: "GRPC Routing" +--- The [GRPCRoute][] resource allows users to configure gRPC routing by matching HTTP/2 traffic and forwarding it to backend gRPC servers. To learn more about gRPC routing, refer to the [Gateway API documentation][]. diff --git a/docs/latest/user/http-redirect.md b/site/content/en/v0.3.0/user/http-redirect.md similarity index 99% rename from docs/latest/user/http-redirect.md rename to site/content/en/v0.3.0/user/http-redirect.md index dcd72749f36..da61bdaf32f 100644 --- a/docs/latest/user/http-redirect.md +++ b/site/content/en/v0.3.0/user/http-redirect.md @@ -1,4 +1,6 @@ -# HTTP Redirects +--- +title: "HTTP Redirects" +--- The [HTTPRoute][] resource can issue redirects to clients or rewrite paths sent upstream using filters. Note that HTTPRoute rules cannot use both filter types at once. Currently, Envoy Gateway only supports __core__ diff --git a/docs/v0.5.0/user/http-request-headers.md b/site/content/en/v0.3.0/user/http-request-headers.md similarity index 99% rename from docs/v0.5.0/user/http-request-headers.md rename to site/content/en/v0.3.0/user/http-request-headers.md index 5e1d77fe6d2..17fe3b87bcb 100644 --- a/docs/v0.5.0/user/http-request-headers.md +++ b/site/content/en/v0.3.0/user/http-request-headers.md @@ -1,4 +1,6 @@ -# HTTP Request Headers +--- +title: "HTTP Request Headers" +--- The [HTTPRoute][] resource can modify the headers of a request before forwarding it to the upstream service. HTTPRoute rules cannot use both filter types at once. Currently, Envoy Gateway only supports __core__ [HTTPRoute filters][] which diff --git a/docs/v0.3.0/user/http-response-headers.md b/site/content/en/v0.3.0/user/http-response-headers.md similarity index 99% rename from docs/v0.3.0/user/http-response-headers.md rename to site/content/en/v0.3.0/user/http-response-headers.md index 6c77c2e6c2c..4a27728003d 100644 --- a/docs/v0.3.0/user/http-response-headers.md +++ b/site/content/en/v0.3.0/user/http-response-headers.md @@ -1,4 +1,6 @@ -# HTTP Response Headers +--- +title: "HTTP Response Headers" +--- The [HTTPRoute][] resource can modify the headers of a response before responding it to the downstream service. To learn more about HTTP routing, refer to the [Gateway API documentation][]. diff --git a/docs/v0.3.0/user/http-routing.md b/site/content/en/v0.3.0/user/http-routing.md similarity index 99% rename from docs/v0.3.0/user/http-routing.md rename to site/content/en/v0.3.0/user/http-routing.md index c9f4646001f..91a98cad7d2 100644 --- a/docs/v0.3.0/user/http-routing.md +++ b/site/content/en/v0.3.0/user/http-routing.md @@ -1,4 +1,6 @@ -# HTTP Routing +--- +title: "HTTP Routing" +--- The [HTTPRoute][] resource allows users to configure HTTP routing by matching HTTP traffic and forwarding it to Kubernetes backends. Currently, the only supported backend supported by Envoy Gateway is a Service resource. This guide diff --git a/docs/v0.4.0/user/http-traffic-splitting.md b/site/content/en/v0.3.0/user/http-traffic-splitting.md similarity index 99% rename from docs/v0.4.0/user/http-traffic-splitting.md rename to site/content/en/v0.3.0/user/http-traffic-splitting.md index 92fed8bd0b1..94f021b5aec 100644 --- a/docs/v0.4.0/user/http-traffic-splitting.md +++ b/site/content/en/v0.3.0/user/http-traffic-splitting.md @@ -1,4 +1,6 @@ -# HTTPRoute Traffic Splitting +--- +title: "HTTPRoute Traffic Splitting" +--- The [HTTPRoute][] resource allows one or more [backendRefs][] to be provided. Requests will be routed to these upstreams if they match the rules of the HTTPRoute. If an invalid backendRef is configured, then HTTP responses will be returned diff --git a/docs/latest/user/http-urlrewrite.md b/site/content/en/v0.3.0/user/http-urlrewrite.md similarity index 99% rename from docs/latest/user/http-urlrewrite.md rename to site/content/en/v0.3.0/user/http-urlrewrite.md index 88e29c3269c..fb68ae88322 100644 --- a/docs/latest/user/http-urlrewrite.md +++ b/site/content/en/v0.3.0/user/http-urlrewrite.md @@ -1,4 +1,6 @@ -# HTTP URL Rewrite +--- +title: "HTTP URL Rewrite" +--- [HTTPURLRewriteFilter][] defines a filter that modifies a request during forwarding. At most one of these filters may be used on a Route rule. This MUST NOT be used on the same Route rule as a HTTPRequestRedirect filter. diff --git a/docs/v0.3.0/user/quickstart.md b/site/content/en/v0.3.0/user/quickstart.md similarity index 92% rename from docs/v0.3.0/user/quickstart.md rename to site/content/en/v0.3.0/user/quickstart.md index a11d3cbe7b1..4875a1ff987 100644 --- a/docs/v0.3.0/user/quickstart.md +++ b/site/content/en/v0.3.0/user/quickstart.md @@ -1,4 +1,7 @@ -# Quickstart +--- +title: "Quickstart" +weight: 1 +--- This guide will help you get started with Envoy Gateway in a few simple steps. @@ -6,7 +9,7 @@ This guide will help you get started with Envoy Gateway in a few simple steps. A Kubernetes cluster. -__Note:__ Refer to the [Compatibility Matrix](../intro/compatibility.rst) for supported Kubernetes versions. +__Note:__ Refer to the [Compatibility Matrix](/blog/2022/10/01/versions/) for supported Kubernetes versions. ## Installation @@ -94,4 +97,4 @@ kubectl delete -f https://github.com/envoyproxy/gateway/releases/download/v0.3.0 ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. diff --git a/docs/v0.3.0/user/rate-limit.md b/site/content/en/v0.3.0/user/rate-limit.md similarity index 99% rename from docs/v0.3.0/user/rate-limit.md rename to site/content/en/v0.3.0/user/rate-limit.md index 446a82ee08a..edb7b759560 100644 --- a/docs/v0.3.0/user/rate-limit.md +++ b/site/content/en/v0.3.0/user/rate-limit.md @@ -1,4 +1,6 @@ -# Rate limit +--- +title: "Rate limit" +--- Rate limit is a feature that allows the user to limit the number of incoming requests to a predefined value based on attributes within the traffic flow. diff --git a/docs/v0.3.0/user/secure-gateways.md b/site/content/en/v0.3.0/user/secure-gateways.md similarity index 98% rename from docs/v0.3.0/user/secure-gateways.md rename to site/content/en/v0.3.0/user/secure-gateways.md index c0e2b3bb37c..702f46063f3 100644 --- a/docs/v0.3.0/user/secure-gateways.md +++ b/site/content/en/v0.3.0/user/secure-gateways.md @@ -1,4 +1,6 @@ -# Secure Gateways +--- +title: "Secure Gateways" +--- This guide will help you get started using secure Gateways. The guide uses a self-signed CA, so it should be used for testing and demonstration purposes only. @@ -251,6 +253,6 @@ kubectl delete secret/foo-cert ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [ReferenceGrant]: https://gateway-api.sigs.k8s.io/api-types/referencegrant/ diff --git a/docs/v0.3.0/user/tcp-routing.md b/site/content/en/v0.3.0/user/tcp-routing.md similarity index 99% rename from docs/v0.3.0/user/tcp-routing.md rename to site/content/en/v0.3.0/user/tcp-routing.md index cb52765d3a3..6f8cb90fe31 100644 --- a/docs/v0.3.0/user/tcp-routing.md +++ b/site/content/en/v0.3.0/user/tcp-routing.md @@ -1,4 +1,6 @@ -# TCP Routing +--- +title: "TCP Routing" +--- [TCPRoute][] provides a way to route TCP requests. When combined with a Gateway listener, it can be used to forward connections on the port specified by the listener to a set of backends specified by the TCPRoute. To learn more about diff --git a/docs/v0.3.0/user/tls-passthrough.md b/site/content/en/v0.3.0/user/tls-passthrough.md similarity index 96% rename from docs/v0.3.0/user/tls-passthrough.md rename to site/content/en/v0.3.0/user/tls-passthrough.md index 7d411f50ef2..745b67f1d88 100644 --- a/docs/v0.3.0/user/tls-passthrough.md +++ b/site/content/en/v0.3.0/user/tls-passthrough.md @@ -1,4 +1,6 @@ -# TLS Passthrough +--- +title: "TLS Passthrough" +--- This guide will walk through the steps required to configure TLS Passthrough via Envoy Gateway. Unlike configuring Secure Gateways, where the Gateway terminates the client TLS connection, TLS Passthrough allows the application itself @@ -114,4 +116,4 @@ kubectl delete secret/server-certs ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. diff --git a/docs/v0.3.0/user/udp-routing.md b/site/content/en/v0.3.0/user/udp-routing.md similarity index 97% rename from docs/v0.3.0/user/udp-routing.md rename to site/content/en/v0.3.0/user/udp-routing.md index 47c13a53e3e..b4684dba312 100644 --- a/docs/v0.3.0/user/udp-routing.md +++ b/site/content/en/v0.3.0/user/udp-routing.md @@ -1,4 +1,6 @@ -# UDP Routing +--- +title: "UDP Routing" +--- The [UDPRoute][] resource allows users to configure UDP routing by matching UDP traffic and forwarding it to Kubernetes backends. This guide will use CoreDNS example to walk you through the steps required to configure UDPRoute on Envoy @@ -148,7 +150,7 @@ kubectl delete udproute/coredns ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [UDPRoute]: https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.UDPRoute [UDP proxy documentation]: https://www.envoyproxy.io/docs/envoy/v0.3.0/configuration/listeners/udp_filters/udp_proxy diff --git a/site/content/en/v0.4.0/_index.md b/site/content/en/v0.4.0/_index.md new file mode 100644 index 00000000000..53d07c8aae3 --- /dev/null +++ b/site/content/en/v0.4.0/_index.md @@ -0,0 +1,21 @@ ++++ +title = "Welcome to Envoy Gateway" +description = "Envoy Gateway Documents" +linktitle = "Documentation" + +[[cascade]] +type = "docs" ++++ + +{{% alert title="Note" color="primary" %}} + +This project is under **active** development. Many features are not complete. We would love for you to [Get Involved](contributions/)! + +{{% /alert %}} + +Envoy Gateway is an open source project for managing [Envoy Proxy](https://www.envoyproxy.io/) as a standalone or Kubernetes-based application +gateway. [Gateway API](https://gateway-api.sigs.k8s.io/) resources are used to dynamically provision and configure the managed Envoy Proxies. + +![architecture](/img/traffic.png) + +## Ready to get started? diff --git a/site/content/en/v0.4.0/api/_index.md b/site/content/en/v0.4.0/api/_index.md new file mode 100644 index 00000000000..396d9ffcefc --- /dev/null +++ b/site/content/en/v0.4.0/api/_index.md @@ -0,0 +1,5 @@ +--- +title: "API" +description: This section includes APIs of Envoy Gateway. +weight: 80 +--- diff --git a/docs/v0.4.0/api/config_types.md b/site/content/en/v0.4.0/api/config_types.md similarity index 99% rename from docs/v0.4.0/api/config_types.md rename to site/content/en/v0.4.0/api/config_types.md index 2764ba82300..91f6b5fd532 100644 --- a/docs/v0.4.0/api/config_types.md +++ b/site/content/en/v0.4.0/api/config_types.md @@ -1,4 +1,6 @@ -# API Reference +--- +title: "Config APIs" +--- ## Packages - [config.gateway.envoyproxy.io/v1alpha1](#configgatewayenvoyproxyiov1alpha1) diff --git a/docs/v0.4.0/api/extension_types.md b/site/content/en/v0.4.0/api/extension_types.md similarity index 99% rename from docs/v0.4.0/api/extension_types.md rename to site/content/en/v0.4.0/api/extension_types.md index 1b1da8e4cdc..9bc5172b250 100644 --- a/docs/v0.4.0/api/extension_types.md +++ b/site/content/en/v0.4.0/api/extension_types.md @@ -1,4 +1,6 @@ -# API Reference +--- +title: "Extension APIs" +--- ## Packages - [gateway.envoyproxy.io/v1alpha1](#gatewayenvoyproxyiov1alpha1) diff --git a/docs/v0.4.0/dev/CODEOWNERS.md b/site/content/en/v0.4.0/contributions/CODEOWNERS.md similarity index 65% rename from docs/v0.4.0/dev/CODEOWNERS.md rename to site/content/en/v0.4.0/contributions/CODEOWNERS.md index d4229b6b23f..63b751abde5 100644 --- a/docs/v0.4.0/dev/CODEOWNERS.md +++ b/site/content/en/v0.4.0/contributions/CODEOWNERS.md @@ -1,15 +1,19 @@ -# Maintainers +--- +title: "Maintainers" +description: "This section includes Maintainers of Envoy Gateway." +--- ## The following maintainers, listed in alphabetical order, own everything - @AliceProxy - @arkodg -- @skriss - @Xunzhuo -- @youngnick - @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 00000000000..e19da050dff --- /dev/null +++ b/site/content/en/v0.4.0/contributions/CODE_OF_CONDUCT.md @@ -0,0 +1,6 @@ +--- +title: "Code of Conduct" +description: "This section includes Code of Conduct of Envoy Gateway." +--- + +Envoy Gateway follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). diff --git a/docs/v0.2.0/dev/CONTRIBUTING.md b/site/content/en/v0.4.0/contributions/CONTRIBUTING.md similarity index 93% rename from docs/v0.2.0/dev/CONTRIBUTING.md rename to site/content/en/v0.4.0/contributions/CONTRIBUTING.md index d7770bdeff2..f94b2c940e9 100644 --- a/docs/v0.2.0/dev/CONTRIBUTING.md +++ b/site/content/en/v0.4.0/contributions/CONTRIBUTING.md @@ -1,6 +1,10 @@ -# Contributing +--- +title: "Contributing" +description: "This section tells how to contribute to Envoy Gateway." +weight: 3 +--- -We welcome contributions from the community. Please carefully review the [project goals](GOALS.md) +We welcome contributions from the community. Please carefully review the [project goals](/about) and following guidelines to streamline your contributions. ## Communication @@ -10,7 +14,7 @@ and following guidelines to streamline your contributions. * 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 + for major features is also important so that [affiliations with commit access](../codeowners) 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. @@ -44,15 +48,18 @@ to the following guidelines for all code, APIs, and documentation: * 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). +* Any PR that changes user-facing behavior **must** have associated documentation in the [docs](https://github.com/envoyproxy/gateway/tree/main/site) folder of the repo as + well as the [changelog](/blog/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 a subsystem name followed by a - colon. Examples: +* 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" - * "translator: add new feature" + * "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 @@ -74,7 +81,7 @@ to the following guidelines for all code, APIs, and documentation: ## Maintainer PR Review Policy -* See [CODEOWNERS.md](CODEOWNERS.md) for the current list of maintainers. +* See [CODEOWNERS.md](../codeowners) 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 diff --git a/docs/v0.3.0/dev/README.md b/site/content/en/v0.4.0/contributions/DEVELOP.md similarity index 88% rename from docs/v0.3.0/dev/README.md rename to site/content/en/v0.4.0/contributions/DEVELOP.md index 0c3b055b619..6f82c4a411f 100644 --- a/docs/v0.3.0/dev/README.md +++ b/site/content/en/v0.4.0/contributions/DEVELOP.md @@ -1,4 +1,8 @@ -# Developer Guide +--- +title: "Developer Guide" +description: "This section tells how to develop Envoy Gateway." +weight: 2 +--- Envoy Gateway is built using a [make][]-based build system. Our CI is based on [Github Actions][] using [workflows][]. @@ -6,7 +10,7 @@ Envoy Gateway is built using a [make][]-based build system. Our CI is based on [ ### go -* Version: 1.19 +* Version: 1.20 * Installation Guide: https://go.dev/doc/install ### make @@ -34,15 +38,22 @@ Envoy Gateway is built using a [make][]-based build system. Our CI is based on [ ### Building -* Run `make build` to build the Envoy Gateway binary. __Note:__ The binary gets generated in the `bin/` directory +* 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 @@ -63,7 +74,7 @@ __Note:__ Replace `IMAGE` with your registry's image name. #### 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 `make kube-deploy` to install Envoy Gateway into the Kind cluster using your custom image. +* 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 @@ -134,7 +145,7 @@ verify signature was copied to [JWK Creator][] for generating the JWK. The JWK C 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/user/quickstart.md +[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 diff --git a/docs/v0.2.0/dev/DOCS.md b/site/content/en/v0.4.0/contributions/DOCS.md similarity index 95% rename from docs/v0.2.0/dev/DOCS.md rename to site/content/en/v0.4.0/contributions/DOCS.md index fb49b9d55dd..8266c9e9a2b 100644 --- a/docs/v0.2.0/dev/DOCS.md +++ b/site/content/en/v0.4.0/contributions/DOCS.md @@ -1,4 +1,8 @@ -# Working on the Envoy Gateway Docs +--- +title: "Working on Envoy Gateway Docs" +description: "This section tells the development of + Envoy Gateway Documents." +--- The documentation for the Envoy Gateway lives in the `docs/` directory. Any individual document can be written using either [reStructuredText] or [Markdown], diff --git a/docs/v0.3.0/dev/releasing.md b/site/content/en/v0.4.0/contributions/RELEASING.md similarity index 86% rename from docs/v0.3.0/dev/releasing.md rename to site/content/en/v0.4.0/contributions/RELEASING.md index f0004caf336..013707d4569 100644 --- a/docs/v0.3.0/dev/releasing.md +++ b/site/content/en/v0.4.0/contributions/RELEASING.md @@ -1,4 +1,7 @@ -# Release Process +--- +title: "Release Process" +description: "This section tells the release process of Envoy Gateway." +--- This document guides maintainers through the process of creating an Envoy Gateway release. @@ -68,6 +71,37 @@ export GITHUB_REMOTE=origin 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. @@ -93,7 +127,8 @@ export GITHUB_REMOTE=origin 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. Generate the versioned release docs: + 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} @@ -192,4 +227,5 @@ It's important that the world knows about the release. Use the following steps t [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 00000000000..3255d996472 --- /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/docs/v0.4.0/design/roadmap.md b/site/content/en/v0.4.0/contributions/roadmap.md similarity index 97% rename from docs/v0.4.0/design/roadmap.md rename to site/content/en/v0.4.0/contributions/roadmap.md index 65f88de1214..356cec270ac 100644 --- a/docs/v0.4.0/design/roadmap.md +++ b/site/content/en/v0.4.0/contributions/roadmap.md @@ -1,4 +1,8 @@ -# Roadmap +--- +title: "Roadmap" +weight: -1 +description: "This section records the roadmap of Envoy Gateway." +--- This document serves as a high-level reference for Envoy Gateway users and contributors to understand the direction of the project. diff --git a/site/content/en/v0.4.0/design/_index.md b/site/content/en/v0.4.0/design/_index.md new file mode 100644 index 00000000000..21650809f7d --- /dev/null +++ b/site/content/en/v0.4.0/design/_index.md @@ -0,0 +1,6 @@ +--- +title: "Design" +weight: 1 +description: This section includes Designs of Envoy Gateway. +--- + diff --git a/docs/v0.5.0/design/bootstrap.md b/site/content/en/v0.4.0/design/bootstrap.md similarity index 99% rename from docs/v0.5.0/design/bootstrap.md rename to site/content/en/v0.4.0/design/bootstrap.md index 30f1b52116f..9a8f0c789ef 100644 --- a/docs/v0.5.0/design/bootstrap.md +++ b/site/content/en/v0.4.0/design/bootstrap.md @@ -1,4 +1,6 @@ -# Bootstrap Design +--- +title: "Bootstrap Design" +--- ## Overview diff --git a/docs/v0.5.0/design/config-api.md b/site/content/en/v0.4.0/design/config-api.md similarity index 99% rename from docs/v0.5.0/design/config-api.md rename to site/content/en/v0.4.0/design/config-api.md index 4caaefe3e43..ca5380151a8 100644 --- a/docs/v0.5.0/design/config-api.md +++ b/site/content/en/v0.4.0/design/config-api.md @@ -1,4 +1,6 @@ -# Configuration API Design +--- +title: "Configuration API Design" +--- ## Motivation diff --git a/docs/v0.4.0/design/egctl.md b/site/content/en/v0.4.0/design/egctl.md similarity index 98% rename from docs/v0.4.0/design/egctl.md rename to site/content/en/v0.4.0/design/egctl.md index 7989ff49e5e..0f67d99f100 100644 --- a/docs/v0.4.0/design/egctl.md +++ b/site/content/en/v0.4.0/design/egctl.md @@ -1,4 +1,6 @@ -# egctl Design +--- +title: "egctl Design" +--- ## Motivation diff --git a/docs/v0.4.0/design/extending-envoy-gateway.md b/site/content/en/v0.4.0/design/extending-envoy-gateway.md similarity index 99% rename from docs/v0.4.0/design/extending-envoy-gateway.md rename to site/content/en/v0.4.0/design/extending-envoy-gateway.md index 61278025eb0..fd840848990 100644 --- a/docs/v0.4.0/design/extending-envoy-gateway.md +++ b/site/content/en/v0.4.0/design/extending-envoy-gateway.md @@ -1,4 +1,6 @@ -# Envoy Gateway Extensions Design +--- +title: "Envoy Gateway Extensions Design" +--- As outlined in the [official goals][] for the Envoy Gateway project, one of the main goals is to "provide a common foundation for vendors to build value-added products without having to re-engineer fundamental interactions". Development of the Envoy Gateway project has been focused on developing the core features for the project and @@ -39,7 +41,7 @@ they create as a direct result of their modification of Envoy Gateway. ## Diagram -![Architecture](../images/extension-example.png) +![Architecture](/img/extension-example.png) ## Registering Extensions in Envoy Gateway diff --git a/docs/v0.2.0/design/gatewayapi-translator.md b/site/content/en/v0.4.0/design/gatewayapi-translator.md similarity index 99% rename from docs/v0.2.0/design/gatewayapi-translator.md rename to site/content/en/v0.4.0/design/gatewayapi-translator.md index 3cf0da94f5a..b83ed82588d 100644 --- a/docs/v0.2.0/design/gatewayapi-translator.md +++ b/site/content/en/v0.4.0/design/gatewayapi-translator.md @@ -1,4 +1,7 @@ -# Gateway API Translator Design +--- +title: "Gateway API Translator Design" +weight: 4 +--- The Gateway API translates external resources, e.g. GatewayClass, from the configured Provider to the Intermediate Representation (IR). 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 00000000000..fd38b2004c6 --- /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/docs/v0.4.0/design/rate-limit.md b/site/content/en/v0.4.0/design/rate-limit.md similarity index 99% rename from docs/v0.4.0/design/rate-limit.md rename to site/content/en/v0.4.0/design/rate-limit.md index 7aaa226cf45..e6e0656c819 100644 --- a/docs/v0.4.0/design/rate-limit.md +++ b/site/content/en/v0.4.0/design/rate-limit.md @@ -1,4 +1,6 @@ -# Rate Limit Design +--- +title: "Rate Limit Design" +--- ## Overview diff --git a/docs/v0.3.0/design/request-authentication.md b/site/content/en/v0.4.0/design/request-authentication.md similarity index 99% rename from docs/v0.3.0/design/request-authentication.md rename to site/content/en/v0.4.0/design/request-authentication.md index dd269771cc1..82682bf2a0b 100644 --- a/docs/v0.3.0/design/request-authentication.md +++ b/site/content/en/v0.4.0/design/request-authentication.md @@ -1,4 +1,6 @@ -# Request Authentication +--- +title: "Request Authentication Design" +--- ## Overview diff --git a/docs/v0.5.0/design/system-design.md b/site/content/en/v0.4.0/design/system-design.md similarity index 99% rename from docs/v0.5.0/design/system-design.md rename to site/content/en/v0.4.0/design/system-design.md index 86114be37fa..16123948ee7 100644 --- a/docs/v0.5.0/design/system-design.md +++ b/site/content/en/v0.4.0/design/system-design.md @@ -1,4 +1,7 @@ -# System Design +--- +title: "System Design" +weight: 2 +--- ## Goals @@ -17,7 +20,7 @@ ## Architecture -![Architecture](../images/architecture.png) +![Architecture](/img/architecture.png) ## Configuration diff --git a/docs/v0.4.0/design/tcp-udp-design.md b/site/content/en/v0.4.0/design/tcp-udp-design.md similarity index 98% rename from docs/v0.4.0/design/tcp-udp-design.md rename to site/content/en/v0.4.0/design/tcp-udp-design.md index 276221b897b..f517e24feda 100644 --- a/docs/v0.4.0/design/tcp-udp-design.md +++ b/site/content/en/v0.4.0/design/tcp-udp-design.md @@ -1,4 +1,6 @@ -# TCP and UDP Proxy Design +--- +title: "TCP and UDP Proxy Design " +--- Even though most of the use cases for Envoy Gateway are at Layer-7, Envoy Gateway can also work at Layer-4 to proxy TCP and UDP traffic. This document will explore the options we have when operating Envoy Gateway at Layer-4 and explain the diff --git a/docs/v0.2.0/design/watching.md b/site/content/en/v0.4.0/design/watching.md similarity index 99% rename from docs/v0.2.0/design/watching.md rename to site/content/en/v0.4.0/design/watching.md index b8477a30e2d..72a955043e0 100644 --- a/docs/v0.2.0/design/watching.md +++ b/site/content/en/v0.4.0/design/watching.md @@ -1,4 +1,7 @@ -# Watching Components Design +--- +title: "Watching Components Design" +weight: 3 +--- Envoy Gateway is made up of several components that communicate in-process. Some of them (namely Providers) watch external resources, and "publish" what they see for other components to consume; others watch what another publishes and diff --git a/site/content/en/v0.4.0/user/_index.md b/site/content/en/v0.4.0/user/_index.md new file mode 100644 index 00000000000..2f23014d867 --- /dev/null +++ b/site/content/en/v0.4.0/user/_index.md @@ -0,0 +1,6 @@ +--- +title: "User Guides" +weight: 2 +description: This section includes User Guides of Envoy Gateway. +--- + diff --git a/docs/v0.4.0/user/authn.md b/site/content/en/v0.4.0/user/authn.md similarity index 95% rename from docs/v0.4.0/user/authn.md rename to site/content/en/v0.4.0/user/authn.md index 1a7dba62197..5341a19155e 100644 --- a/docs/v0.4.0/user/authn.md +++ b/site/content/en/v0.4.0/user/authn.md @@ -1,4 +1,6 @@ -# Request Authentication +--- +title: "Request Authentication" +--- This guide provides instructions for configuring [JSON Web Token (JWT)][jwt] authentication. JWT authentication checks if an incoming request has a valid JWT before routing the request to a backend service. Currently, Envoy Gateway only @@ -87,7 +89,7 @@ kubectl delete authenticationfilter/jwt-example ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [jwt]: https://tools.ietf.org/html/rfc7519 [AuthenticationFilter]: https://gateway.envoyproxy.io/v0.4.0/api/extension_types.html#authenticationfilter diff --git a/docs/v0.4.0/user/customize-envoyproxy.md b/site/content/en/v0.4.0/user/customize-envoyproxy.md similarity index 99% rename from docs/v0.4.0/user/customize-envoyproxy.md rename to site/content/en/v0.4.0/user/customize-envoyproxy.md index 04b7062f450..c561b520e04 100644 --- a/docs/v0.4.0/user/customize-envoyproxy.md +++ b/site/content/en/v0.4.0/user/customize-envoyproxy.md @@ -1,4 +1,6 @@ -# Customize EnvoyProxy +--- +title: "Customize EnvoyProxy" +--- Envoy Gateway provides a [EnvoyProxy][] CRD that can be linked to the ParametersRef in GatewayClass y cluster admins to customize the managed EnvoyProxy Deployment and diff --git a/docs/v0.4.0/user/deployment-mode.md b/site/content/en/v0.4.0/user/deployment-mode.md similarity index 99% rename from docs/v0.4.0/user/deployment-mode.md rename to site/content/en/v0.4.0/user/deployment-mode.md index 8c409d4c44e..4566e2cc83d 100644 --- a/docs/v0.4.0/user/deployment-mode.md +++ b/site/content/en/v0.4.0/user/deployment-mode.md @@ -1,4 +1,7 @@ -## Deployment Mode +--- +title: "Deployment Mode" +--- + ### One GatewayClass per Envoy Gateway diff --git a/docs/v0.4.0/user/egctl.md b/site/content/en/v0.4.0/user/egctl.md similarity index 99% rename from docs/v0.4.0/user/egctl.md rename to site/content/en/v0.4.0/user/egctl.md index 08621e40f47..29f0200f896 100644 --- a/docs/v0.4.0/user/egctl.md +++ b/site/content/en/v0.4.0/user/egctl.md @@ -1,4 +1,6 @@ -# egctl +--- +title: "Use egctl" +--- `egctl` is a command line tool to provide additional functionality for Envoy Gateway users. diff --git a/docs/v0.4.0/user/gatewayapi-support.md b/site/content/en/v0.4.0/user/gatewayapi-support.md similarity index 99% rename from docs/v0.4.0/user/gatewayapi-support.md rename to site/content/en/v0.4.0/user/gatewayapi-support.md index f1129da290c..79e07749842 100644 --- a/docs/v0.4.0/user/gatewayapi-support.md +++ b/site/content/en/v0.4.0/user/gatewayapi-support.md @@ -1,4 +1,6 @@ -# Gateway API Support +--- +title: "Gateway API Support" +--- As mentioned in the [system design][] document, Envoy Gateway's managed data plane is configured dynamically through Kubernetes resources, primarily [Gateway API][] objects. Envoy Gateway supports configuration using the following Gateway API resources. diff --git a/docs/v0.4.0/user/grpc-routing.md b/site/content/en/v0.4.0/user/grpc-routing.md similarity index 99% rename from docs/v0.4.0/user/grpc-routing.md rename to site/content/en/v0.4.0/user/grpc-routing.md index a18be6e9b9c..393767fc434 100644 --- a/docs/v0.4.0/user/grpc-routing.md +++ b/site/content/en/v0.4.0/user/grpc-routing.md @@ -1,4 +1,6 @@ -# GRPC Routing +--- +title: "GRPC Routing" +--- The [GRPCRoute][] resource allows users to configure gRPC routing by matching HTTP/2 traffic and forwarding it to backend gRPC servers. To learn more about gRPC routing, refer to the [Gateway API documentation][]. diff --git a/docs/v0.5.0/user/http-redirect.md b/site/content/en/v0.4.0/user/http-redirect.md similarity index 99% rename from docs/v0.5.0/user/http-redirect.md rename to site/content/en/v0.4.0/user/http-redirect.md index dcd72749f36..da61bdaf32f 100644 --- a/docs/v0.5.0/user/http-redirect.md +++ b/site/content/en/v0.4.0/user/http-redirect.md @@ -1,4 +1,6 @@ -# HTTP Redirects +--- +title: "HTTP Redirects" +--- The [HTTPRoute][] resource can issue redirects to clients or rewrite paths sent upstream using filters. Note that HTTPRoute rules cannot use both filter types at once. Currently, Envoy Gateway only supports __core__ diff --git a/docs/latest/user/http-request-headers.md b/site/content/en/v0.4.0/user/http-request-headers.md similarity index 99% rename from docs/latest/user/http-request-headers.md rename to site/content/en/v0.4.0/user/http-request-headers.md index 5e1d77fe6d2..17fe3b87bcb 100644 --- a/docs/latest/user/http-request-headers.md +++ b/site/content/en/v0.4.0/user/http-request-headers.md @@ -1,4 +1,6 @@ -# HTTP Request Headers +--- +title: "HTTP Request Headers" +--- The [HTTPRoute][] resource can modify the headers of a request before forwarding it to the upstream service. HTTPRoute rules cannot use both filter types at once. Currently, Envoy Gateway only supports __core__ [HTTPRoute filters][] which diff --git a/docs/latest/user/http-response-headers.md b/site/content/en/v0.4.0/user/http-response-headers.md similarity index 99% rename from docs/latest/user/http-response-headers.md rename to site/content/en/v0.4.0/user/http-response-headers.md index 6c77c2e6c2c..4a27728003d 100644 --- a/docs/latest/user/http-response-headers.md +++ b/site/content/en/v0.4.0/user/http-response-headers.md @@ -1,4 +1,6 @@ -# HTTP Response Headers +--- +title: "HTTP Response Headers" +--- The [HTTPRoute][] resource can modify the headers of a response before responding it to the downstream service. To learn more about HTTP routing, refer to the [Gateway API documentation][]. diff --git a/docs/v0.4.0/user/http-routing.md b/site/content/en/v0.4.0/user/http-routing.md similarity index 99% rename from docs/v0.4.0/user/http-routing.md rename to site/content/en/v0.4.0/user/http-routing.md index 35f89358651..67fe8e48e04 100644 --- a/docs/v0.4.0/user/http-routing.md +++ b/site/content/en/v0.4.0/user/http-routing.md @@ -1,4 +1,6 @@ -# HTTP Routing +--- +title: "HTTP Routing" +--- The [HTTPRoute][] resource allows users to configure HTTP routing by matching HTTP traffic and forwarding it to Kubernetes backends. Currently, the only supported backend supported by Envoy Gateway is a Service resource. This guide diff --git a/docs/v0.3.0/user/http-traffic-splitting.md b/site/content/en/v0.4.0/user/http-traffic-splitting.md similarity index 99% rename from docs/v0.3.0/user/http-traffic-splitting.md rename to site/content/en/v0.4.0/user/http-traffic-splitting.md index 92fed8bd0b1..94f021b5aec 100644 --- a/docs/v0.3.0/user/http-traffic-splitting.md +++ b/site/content/en/v0.4.0/user/http-traffic-splitting.md @@ -1,4 +1,6 @@ -# HTTPRoute Traffic Splitting +--- +title: "HTTPRoute Traffic Splitting" +--- The [HTTPRoute][] resource allows one or more [backendRefs][] to be provided. Requests will be routed to these upstreams if they match the rules of the HTTPRoute. If an invalid backendRef is configured, then HTTP responses will be returned diff --git a/docs/v0.5.0/user/http-urlrewrite.md b/site/content/en/v0.4.0/user/http-urlrewrite.md similarity index 99% rename from docs/v0.5.0/user/http-urlrewrite.md rename to site/content/en/v0.4.0/user/http-urlrewrite.md index 88e29c3269c..fb68ae88322 100644 --- a/docs/v0.5.0/user/http-urlrewrite.md +++ b/site/content/en/v0.4.0/user/http-urlrewrite.md @@ -1,4 +1,6 @@ -# HTTP URL Rewrite +--- +title: "HTTP URL Rewrite" +--- [HTTPURLRewriteFilter][] defines a filter that modifies a request during forwarding. At most one of these filters may be used on a Route rule. This MUST NOT be used on the same Route rule as a HTTPRequestRedirect filter. diff --git a/docs/v0.4.0/user/quickstart.md b/site/content/en/v0.4.0/user/quickstart.md similarity index 92% rename from docs/v0.4.0/user/quickstart.md rename to site/content/en/v0.4.0/user/quickstart.md index c7d1ea099e4..ef4df466c1a 100644 --- a/docs/v0.4.0/user/quickstart.md +++ b/site/content/en/v0.4.0/user/quickstart.md @@ -1,4 +1,7 @@ -# Quickstart +--- +title: "Quickstart" +weight: 1 +--- This guide will help you get started with Envoy Gateway in a few simple steps. @@ -6,7 +9,7 @@ This guide will help you get started with Envoy Gateway in a few simple steps. A Kubernetes cluster. -__Note:__ Refer to the [Compatibility Matrix](../intro/compatibility.rst) for supported Kubernetes versions. +__Note:__ Refer to the [Compatibility Matrix](/blog/2022/10/01/versions/) for supported Kubernetes versions. ## Installation @@ -94,4 +97,4 @@ helm uninstall eg -n envoy-gateway-system ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. diff --git a/docs/v0.4.0/user/rate-limit.md b/site/content/en/v0.4.0/user/rate-limit.md similarity index 99% rename from docs/v0.4.0/user/rate-limit.md rename to site/content/en/v0.4.0/user/rate-limit.md index aaaca706473..59e216f15d2 100644 --- a/docs/v0.4.0/user/rate-limit.md +++ b/site/content/en/v0.4.0/user/rate-limit.md @@ -1,4 +1,6 @@ -# Rate limit +--- +title: "Rate limit" +--- Rate limit is a feature that allows the user to limit the number of incoming requests to a predefined value based on attributes within the traffic flow. diff --git a/docs/latest/user/secure-gateways.md b/site/content/en/v0.4.0/user/secure-gateways.md similarity index 99% rename from docs/latest/user/secure-gateways.md rename to site/content/en/v0.4.0/user/secure-gateways.md index 8ada7c59978..25f6808292f 100644 --- a/docs/latest/user/secure-gateways.md +++ b/site/content/en/v0.4.0/user/secure-gateways.md @@ -1,4 +1,6 @@ -# Secure Gateways +--- +title: "Secure Gateways" +--- This guide will help you get started using secure Gateways. The guide uses a self-signed CA, so it should be used for testing and demonstration purposes only. @@ -448,6 +450,6 @@ Refer to the steps mentioned earlier in the guide under [Testing in clusters wit ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [ReferenceGrant]: https://gateway-api.sigs.k8s.io/api-types/referencegrant/ diff --git a/docs/v0.4.0/user/tcp-routing.md b/site/content/en/v0.4.0/user/tcp-routing.md similarity index 99% rename from docs/v0.4.0/user/tcp-routing.md rename to site/content/en/v0.4.0/user/tcp-routing.md index 1ffbc2553b4..fea9b35341a 100644 --- a/docs/v0.4.0/user/tcp-routing.md +++ b/site/content/en/v0.4.0/user/tcp-routing.md @@ -1,4 +1,6 @@ -# TCP Routing +--- +title: "TCP Routing" +--- [TCPRoute][] provides a way to route TCP requests. When combined with a Gateway listener, it can be used to forward connections on the port specified by the listener to a set of backends specified by the TCPRoute. To learn more about diff --git a/docs/v0.4.0/user/tls-passthrough.md b/site/content/en/v0.4.0/user/tls-passthrough.md similarity index 96% rename from docs/v0.4.0/user/tls-passthrough.md rename to site/content/en/v0.4.0/user/tls-passthrough.md index cc8d7136548..825acdbadff 100644 --- a/docs/v0.4.0/user/tls-passthrough.md +++ b/site/content/en/v0.4.0/user/tls-passthrough.md @@ -1,4 +1,6 @@ -# TLS Passthrough +--- +title: "TLS Passthrough" +--- This guide will walk through the steps required to configure TLS Passthrough via Envoy Gateway. Unlike configuring Secure Gateways, where the Gateway terminates the client TLS connection, TLS Passthrough allows the application itself @@ -114,4 +116,4 @@ kubectl delete secret/server-certs ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. diff --git a/docs/v0.4.0/user/udp-routing.md b/site/content/en/v0.4.0/user/udp-routing.md similarity index 97% rename from docs/v0.4.0/user/udp-routing.md rename to site/content/en/v0.4.0/user/udp-routing.md index dfbd8a76c55..03ef41a664c 100644 --- a/docs/v0.4.0/user/udp-routing.md +++ b/site/content/en/v0.4.0/user/udp-routing.md @@ -1,4 +1,6 @@ -# UDP Routing +--- +title: "UDP Routing" +--- The [UDPRoute][] resource allows users to configure UDP routing by matching UDP traffic and forwarding it to Kubernetes backends. This guide will use CoreDNS example to walk you through the steps required to configure UDPRoute on Envoy @@ -148,7 +150,7 @@ kubectl delete udproute/coredns ## Next Steps -Checkout the [Developer Guide](../dev/README.md) to get involved in the project. +Checkout the [Developer Guide](../../contributions/develop/) to get involved in the project. [UDPRoute]: https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.UDPRoute [UDP proxy documentation]: https://www.envoyproxy.io/docs/envoy/v0.4.0/configuration/listeners/udp_filters/udp_proxy 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 00000000000..53d07c8aae3 --- /dev/null +++ b/site/content/en/v0.5.0/_index.md @@ -0,0 +1,21 @@ ++++ +title = "Welcome to Envoy Gateway" +description = "Envoy Gateway Documents" +linktitle = "Documentation" + +[[cascade]] +type = "docs" ++++ + +{{% alert title="Note" color="primary" %}} + +This project is under **active** development. Many features are not complete. We would love for you to [Get Involved](contributions/)! + +{{% /alert %}} + +Envoy Gateway is an open source project for managing [Envoy Proxy](https://www.envoyproxy.io/) as a standalone or Kubernetes-based application +gateway. [Gateway API](https://gateway-api.sigs.k8s.io/) resources are used to dynamically provision and configure the managed Envoy Proxies. + +![architecture](/img/traffic.png) + +## Ready to get started? diff --git a/site/content/en/v0.5.0/api/_index.md b/site/content/en/v0.5.0/api/_index.md new file mode 100644 index 00000000000..396d9ffcefc --- /dev/null +++ b/site/content/en/v0.5.0/api/_index.md @@ -0,0 +1,5 @@ +--- +title: "API" +description: This section includes APIs of Envoy Gateway. +weight: 80 +--- diff --git a/docs/v0.5.0/api/config_types.md b/site/content/en/v0.5.0/api/config_types.md similarity index 99% rename from docs/v0.5.0/api/config_types.md rename to site/content/en/v0.5.0/api/config_types.md index 9ce37099fdc..93764201f34 100644 --- a/docs/v0.5.0/api/config_types.md +++ b/site/content/en/v0.5.0/api/config_types.md @@ -1,4 +1,6 @@ -# API Reference +--- +title: "Config APIs" +--- ## Packages - [config.gateway.envoyproxy.io/v1alpha1](#configgatewayenvoyproxyiov1alpha1) diff --git a/docs/v0.5.0/api/extension_types.md b/site/content/en/v0.5.0/api/extension_types.md similarity index 99% rename from docs/v0.5.0/api/extension_types.md rename to site/content/en/v0.5.0/api/extension_types.md index 977cd2ac861..5eb811ac451 100644 --- a/docs/v0.5.0/api/extension_types.md +++ b/site/content/en/v0.5.0/api/extension_types.md @@ -1,4 +1,6 @@ -# API Reference +--- +title: "Extension APIs" +--- ## Packages - [gateway.envoyproxy.io/v1alpha1](#gatewayenvoyproxyiov1alpha1) 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 00000000000..63b751abde5 --- /dev/null +++ b/site/content/en/v0.5.0/contributions/CODEOWNERS.md @@ -0,0 +1,19 @@ +--- +title: "Maintainers" +description: "This section includes Maintainers of Envoy Gateway." +--- + +## 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 00000000000..e19da050dff --- /dev/null +++ b/site/content/en/v0.5.0/contributions/CODE_OF_CONDUCT.md @@ -0,0 +1,6 @@ +--- +title: "Code of Conduct" +description: "This section includes Code of Conduct of Envoy Gateway." +--- + +Envoy 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 00000000000..f94b2c940e9 --- /dev/null +++ b/site/content/en/v0.5.0/contributions/CONTRIBUTING.md @@ -0,0 +1,190 @@ +--- +title: "Contributing" +description: "This section tells how to contribute to Envoy Gateway." +weight: 3 +--- + +We welcome contributions from the community. Please carefully review the [project goals](/about) +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) 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/site) folder of the repo as + well as the [changelog](/blog/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: nameOops! This page doesn't exist. Try going back to the home page.
+