Code Monkey home page Code Monkey logo

gateway's Introduction

Envoy Gateway

OpenSSF Scorecard Build and Test codecov CodeQL OSV-Scanner Trivy

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.

Documentation

Contact

Contributing

Community Meeting

The Envoy Gateway team meets every Tuesday and Thursday. We also have a separate meeting to be held in the Chinese timezone every two weeks to better accommodate our Chinese community members who face scheduling difficulties for the weekly meetings. Please refer to the meeting details for additional information.

gateway's People

Contributors

aliceproxy avatar ardikabs avatar arkodg avatar chauhanshubham avatar cnvergence avatar daixiang0 avatar danehans avatar davidalger avatar dependabot[bot] avatar eitansuez avatar guydc avatar lemonlinger avatar liorokman avatar mmorel-35 avatar muyuan0 avatar qicz avatar shahar-h avatar shawnh2 avatar shyunny avatar skriss avatar slayer321 avatar soulxu avatar tanujd11 avatar tmsnan avatar wilsonwu avatar xunzhuo avatar yaelschechter avatar yeedove avatar zhaohuabing avatar zirain avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gateway's Issues

L4 Support

During the 4/29/21 community meeting, support for L4 support, e.g. TCPRoute was discussed. The community should come to an agreement on if L4 should be supported and if so, how.

Create Initial Tests

Create initial integration/e2e tests, framework, tooling etc. that exercises the EG codebase.

Repo Labels

As discussed, the repo can use additional labels to help organize PRs, issues, etc. After reviewing other projects in the envoyproxy org, the following are the labels that I propose:

area/ci
area/build
area/api
area/config (Config Manager, Config Sources, etc.)
area/data model
area/message service
area/translator
area/xds server
area/provisioner

@arkodg @LukeShu @alexgervais @youngnick @skriss PTAL at the above list, provide feedback, and any add'l labels that you feel are needed to kickoff the project.

Support Default GatewayClass and Gateway Management

To simplify the UX (especially for dev's), the project should support managing a default GatewayClass and Gateway. For example, when EG is started with an ENV var or CLI flag such as --default-gateway-class=true and --default-gateway=true it will create the default GatewayClass and default Gateway resources.

Open Questions:

  1. What namespace should be used for the default Gateway? To support the most simple use case, the default namespace can be used? If the Gateway is created in the EG system namespace, then the default Gateway needs to support cross-namespace routing as this ns is not meant for proxied apps, xref.
  2. Should EG support active management of these resources, e.g. someone deletes the default Gateway and EG will recrate it.
  3. Other considerations?

Design and Implement Config API

A Config API is required for EG to consume config params through gatewayclass.spec.parameterRefs. This config API is referred to as "Bootstrap Config" in #16.

Create Contrib Guide

Use Envoy contrib guide as a reference model.

High-level dev workflow:

  • Create issue
  • Label issue accordingly
  • Create a local topic branch
  • Hack and commit changes, include a --signoff for each commit.
  • Push commits to repo branch
  • Submit PR to main, include fixes <issue_number>.
  • Other?

Create a CHANGELOG.md

Create a CHANGELOG.md file at the repository root to document changes and release notes.

Define Initial APIs

#16 specifies the need to define APIs, e.g. bootstrap config. To begin developing these APIs, the community should agree on:

  1. How these APIs will defined, protos vs Go types. Emissary uses protos to define API types whereas Contour uses Go types.
  2. How these APIs will documented.
  3. How these APIs will be maintained.
  4. Others?

Create a Readme

Create a Readme that provides an intro to the project and references on how to communicate with the community, how to contribute, etc.

Detail Config Merging

#16 states that EG will merge config from multiple sources but does not provide the "how". This "how" should be detailed in this issue or a referenced design doc.

Allow users to configure xDS resources

Users might want to directly configure xDS Resources in case Envoy Gateway's API doesn't support their use case.
They might want to add/merge/remove/replace xDS resources that are pushed by Envoy Gateway into Envoy Proxy.
Projects such as Istio provide APIs such as EnvoyFilter to fulfill these use cases.

Outlining work items

  • Define and Design API #1410
  • Implement API in the Xds Translator #1606
  • Implement support in egctl for offline verification #1682
  • Add status to Policy to show runtime status #1691
  • E2E #1738
  • Docs #1733

Refine Governance Doc

The initial governance doc is generalized. Update the doc to include more procedural information.

xref: #58

Cut 0.0.1 Release

The following checklist must be completed for the project's public announcement, e.g. v0.0.1:

  • Merge required PRs: Readme, Goals, Design (add others if needed).
  • Remove the private CNCF Slack channel and create an Envoy public channel.
  • Create and post an official Envoy announcement (@mattklein123 owner).
  • Create a public Docker image repo. This can be completed post-announcement since the code will be demo only.
  • Complete repo bootstrapping, xref.
  • Others?

Create Compatibility Matrix

A matrix is needed that describes component versions used in EG releases. For example, EG v0.1 = Envoy v1.x, Gateway API v1.y, etc.

Create Demo Code

Port Gateway API code from Contour to provide a kubecon demo. The code should be ported to a demo branch and not main. The ported code should be as minimal as possible to demo Gateway API functionality.

Create ROADMAP.md

A document about the project roadmap helps users understand

  • WHAT - future scope and deliverable for the project
  • WHEN - timelines for delivering these milestones / also helps with GH project visibility
  • HOW - procedure for users to request & upvote new items into the roadmap

Create Goals Document

Create a GOALS.md document that highlights the objectives, non-objectives and personas of the Gateway project.

Support Istio Integration

Istio Ingress Gateway is an Envoy-based edge proxy that is managed by Istiod and integrates with the Istio service mesh. Should EG be considered as a replacement? If so, why? What are the benefits of using EG for mesh ingress instead of Istio Ingress Gateway? Do other opportunities exist to integrate with Istio?

Resolve Service to Endpoints IPs

#16 specifies the need for a Service Resolver (SR) component that resolves IR services into platform-specific endpoints. The SR details should be captured in this issue or a linked doc.

Create a Release Plan

  1. What are the steps for releasing EG? Automate as much as possible, e.g. GH actions, etc.
  2. At what cadence should EG be released? I suggest we sync with Envoy proxy releases, targeting v1alpha for 7/15/22, xref.
  3. Assign a release manager or create a release manager rotation.
  4. What artifacts should be released?
  5. Decide on release numbering, e.g. should this project follow Envoy's release numbers?
  6. Where to store the EG image (xref #14)?
  7. How should the EG image be tagged?
  8. Should GH projects, milestones, etc. be used for managing releases?
  9. Other considerations?

Create Design Doc

Create a design document that provides details of system components, functionality, etc.

Consider Renaming the Project

IMO "Gateway" does not accurately reflect the intended functionality of the project. The project will manage Envoy fleets that are represented as GatewayClasses and Gateways. Let's use comments in this issue to provide name suggestions and a thumbs-up emoji if you like the name. The name with the most thumbs-up's wins. If a tie exists, we'll have @mattklein123 be the final decision maker.

Override default Envoy Proxy Bootstrap Configuration

#24 highlights the need for users to override xDS resources configured by
Envoy Gateway. Raising this issue to track how do you express this intent for the Envoy Proxy Bootstrap Config using the Gateway API

here's how popular OSS projects do it

Updated

  • Design doc #1070
  • API Design #1070
  • EnvoyProxy Bootstrap validation #1109
  • Implement API #1094
  • Update GatewayClass Status based on EnvoyProxy validation #1107
  • Implement egctl subcommand to generate default bootstrap #1281
  • Docs #1333

Add Code of Conduct

We need to make sure we have some sort of code of conduct markdown file in the root of the repo.

Add Serverless Support

Serverless is becoming a common app runtime for cloud native apps. Popular Serverless OSS projects such as Knative should use EG as the preferred ingress/egress networking solution.

Governance Doc

A GOVERNANCE.md is required to explain how to become a maintainer, maintainer responsibilities, etc.

xref: #3

Bootstrap the Repo

  • Readme
  • Contrib guide
  • Design doc
  • Code of conduct doc
  • Owners doc
  • Goals doc
  • Governance doc

envoyproxy/envoy repo should be used as a reference for how docs are created for this repo.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.