Coder Social home page Coder Social logo

envoyproxy / gateway Goto Github PK

View Code? Open in Web Editor NEW
1.5K 47.0 313.0 18.82 MB

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

Home Page: https://gateway.envoyproxy.io

License: Apache License 2.0

Makefile 1.48% Go 96.79% Dockerfile 0.02% Shell 0.42% Smarty 0.62% Python 0.35% SCSS 0.01% HTML 0.13% Jsonnet 0.18%
envoy kubernetes gateway-api cncf go-control-plane api-gateway hacktoberfest

gateway's People

Contributors

alexwo avatar aliceproxy avatar aoledk avatar ardikabs avatar arkodg avatar chauhanshubham avatar cnvergence avatar daixiang0 avatar danehans avatar davidalger avatar dependabot[bot] avatar deszhou avatar eitansuez avatar guydc avatar liorokman avatar mmorel-35 avatar muyuan0 avatar qicz avatar shahar-h avatar shawnh2 avatar shyunny avatar skriss avatar soulxu avatar tanujd11 avatar tmsnan avatar wilsonwu avatar xunzhuo avatar yaelschechter 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

gateway's Issues

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.

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.

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 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.

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 Initial Tests

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

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 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?

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

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.

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.

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?

Governance Doc

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

xref: #3

Create Design Doc

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

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?

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

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 CHANGELOG.md

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

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.

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.

Create Goals Document

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

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.

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 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?

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.