diff --git a/README.md b/README.md index b1af6814445..bd877ea289b 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,87 @@

- Gloo Edge -
+ Gloo Gateway v2 +
An Envoy-Powered API Gateway

-Gloo Edge is a feature-rich, Kubernetes-native ingress controller and next-generation API gateway. Gloo Edge is exceptional in its function-level routing; its support for legacy apps, microservices and serverless; its discovery capabilities; its numerous features; and its tight integration with leading open-source projects. Gloo Edge is uniquely designed to support hybrid applications in which multiple technologies, architectures, protocols, and clouds can coexist. +## Important Update +> **Important** +> Gloo Gateway is now a fully conformant Kubernetes Gateway API implementation! +> +> The existing Gloo Edge v1 APIs were not changed and continue to be fully supported. To find the latest version for the Gloo Edge v1 API, see the [main branch](https://github.com/solo-io/gloo/tree/main). -[**Installation**](https://gloo.solo.io/installation/)   | -  [**Documentation**](https://gloo.solo.io)   | +## About Gloo Gateway +Gloo Gateway is a feature-rich, Kubernetes-native ingress controller and next-generation API gateway based on the Kubernetes Gateway API. Gloo Gateway is exceptional in its function-level routing; its support for legacy apps, microservices and serverless; its discovery capabilities; its numerous features; and its tight integration with leading open-source projects. Gloo Gateway is uniquely designed to support hybrid applications in which multiple technologies, architectures, protocols, and clouds can coexist. + +[**Installation**](https://docs.solo.io/gloo-gateway/v2/quickstart)   | +  [**Documentation**](https://docs.solo.io/gloo-gateway/v2)   |   [**Blog**](https://www.solo.io/blog/?category=gloo)   |   [**Slack**](https://slack.solo.io)   |   [**Twitter**](https://twitter.com/soloio_inc) | -  [**Enterprise Trial**](https://www.solo.io/products/gloo/#enterprise-trial) +  [**Enterprise Trial**](https://www.solo.io/free-trial/) -
Gloo Edge Architecture
+
Gloo Gateway v2 Architecture
-## Summary +## Quickstart +Install Gloo Gateway and set up routing to the httpbin sample app. -- [**Using Gloo Edge**](#using-gloo-edge) -- [**What makes Gloo Edge unique**](#what-makes-gloo-edge-unique) +1. Install `glooctl`, the Gloo Gateway command line tool. + ```sh + curl -sL https://run.solo.io/gloo/install | GLOO_VERSION=v2.0.0-beta1 sh + export PATH=$HOME/.gloo/bin:$PATH + ``` +2. Install the Gloo Gateway v2 control plane, and wait for it to come up + ```sh + glooctl install + kubectl rollout status deployment -n gloo-system -w + ``` -## Using Gloo Edge -- **Kubernetes ingress controller** : Gloo Edge can function as a feature-rich ingress controller, built on top of the Envoy Proxy. -- **Next-generation API gateway** : Gloo Edge provides a long list of API gateway features including rate limiting, circuit breaking, retries, caching, transformation, service-mesh integration, security, external authentication and authorization. -- **Hybrid apps** : Gloo Edge creates applications that route to backends implemented as microservices, serverless functions and legacy apps. This feature can help users to - - - A) Gradually migrate from their legacy code to microservices and serverless. - - B) Add new functionalities using cloud-native technologies while maintaining their legacy codebase. - - C) Allow different teams in an organization choose different architectures. - See [here](https://www.solo.io/hybrid-app) for more on the Hybrid App paradigm. +3. Deploy the httpbin sample app, along with a Gateway and HTTPRoute to access it. + ```sh + kubectl -n httpbin apply -f https://raw.githubusercontent.com/solo-io/gloo/v2.0.x/projects/gateway2/examples/httpbin.yaml + ``` +4. Send a request to the httpbin app and verify that you get back a 200 HTTP response code + ```sh + kubectl port-forward svc -n gloo-system gloo-proxy-http 8080:8080 & + curl -vik localhost:8080/status/200 -H "host: www.example.com" + ``` -## What makes Gloo Edge unique -- **Function-level routing allows integration of legacy applications, microservices and serverless** : Gloo Edge can route requests directly to _functions_. Request to Function can be a serverless function call (e.g. Lambda, Google Cloud Function, OpenFaaS Function, etc.), an API call on a microservice or a legacy service (e.g. a REST API call, OpenAPI operation, XML/SOAP request etc.), or publishing to a message queue (e.g. NATS, AMQP, etc.). This unique ability is what makes Gloo Edge the only API gateway that supports hybrid apps as well as the only one that does not tie the user to a specific paradigm. -- **Gloo Edge incorporates vetted open-source projects to provide broad functionality** : Gloo Edge support high-quality features by integrating with top open-source projects, including gRPC, GraphQL, OpenTracing, NATS and more. Gloo Edge's architecture allows rapid integration of future popular open-source projects as they emerge. -- **Full automated discovery lets users move fast** : Upon launch, Gloo Edge creates a catalog of all available destinations and continuously maintains it up to date. This takes the responsibility for 'bookkeeping' away from the developers and guarantees that new feature become available as soon as they are ready. Gloo Edge discovers across IaaS, PaaS and FaaS providers as well as Swagger, gRPC, and GraphQL. -- **Gloo Edge integrates intimately with the user's environment** : with Gloo Edge, users are free to choose their favorite tools for scheduling (such as K8s, Nomad, OpenShift, etc), persistence (K8s, Consul, etcd, etc) and security (K8s, Vault). +Congratulations! You successfully installed Gloo Gateway and used an HTTP gateway to expose the httpbin sample app. + +> **Note** +> To learn more about Gloo Gateway's support for the Kubernetes Gateway API, see the [docs](https://docs.solo.io/gloo-gateway/v2/). + +### Using Gloo Gateway +- **Kubernetes Gateway API**: Gloo Gateway is a feature-rich ingress controller, built on top of the Envoy Proxy and fully conformant with the Kubernetes Gateway API. +- **Next-generation API gateway**: Gloo Gateway provides a long list of API gateway features including rate limiting, circuit breaking, retries, caching, transformation, service-mesh integration, security, external authentication and authorization. +- **Hybrid apps**: Gloo Gateway creates applications that route to backends implemented as microservices, serverless functions and legacy apps. This feature can help users to - +A) Gradually migrate from their legacy code to microservices and serverless. +B) Add new functionalities using cloud-native technologies while maintaining their legacy codebase. +C) Allow different teams in an organization choose different architectures. See here for more on the Hybrid App paradigm. + + +### What makes Gloo Gateway unique +- **Function-level routing allows integration of legacy applications, microservices and serverless**: Gloo Gateway can route requests directly to functions. Request to Function can be a serverless function call (e.g. Lambda, Google Cloud Function, OpenFaaS Function, etc.), an API call on a microservice or a legacy service (e.g. a REST API call, OpenAPI operation, XML/SOAP request etc.), or publishing to a message queue (e.g. NATS, AMQP, etc.). This unique ability is what makes Gloo Gateway the only API gateway that supports hybrid apps as well as the only one that does not tie the user to a specific paradigm. +- **Gloo Gateway incorporates vetted open-source projects to provide broad functionality**: Gloo Gateway supports high-quality features by integrating with top open-source projects, including gRPC, GraphQL, OpenTracing, NATS and more. Gloo Gateway's architecture allows rapid integration of future popular open-source projects as they emerge. + **Full automated discovery lets users move fast**: Upon launch, Gloo Gateway creates a catalog of all available destinations and continuously keeps them up to date. This takes the responsibility for 'bookkeeping' away from the developers and guarantees that new features become available as soon as they are ready. Gloo Gateway discovers across IaaS, PaaS and FaaS providers as well as Swagger, gRPC, and GraphQL. ## Next Steps - Join us on our Slack channel: [https://slack.solo.io/](https://slack.solo.io/) - Follow us on Twitter: [https://twitter.com/soloio_inc](https://twitter.com/soloio_inc) -- Check out the docs: [https://gloo.solo.io](https://gloo.solo.io) +- Check out the docs: [https://docs.solo.io/gloo-gateway/v2](https://docs.solo.io/gloo-gateway/v2) - Check out the code and contribute: [Contribution Guides](/devel/contributing) -- Contribute to the [Docs](docs/) -### Thanks +## Thanks -**Gloo Edge** would not be possible without the valuable open-source work of projects in the community. We would like to extend a special thank-you to [Envoy](https://www.envoyproxy.io). +**Gloo Gateway** would not be possible without the valuable open-source work of projects in the community. We would like to extend a special thank-you to [Envoy](https://www.envoyproxy.io). -# Security +## Security -*Reporting security issues* : We take Gloo Edge's security very seriously. If you've found a security issue or a potential security issue in Gloo Edge, please DO NOT file a public Github issue, instead send your report privately to [security@solo.io](mailto:security@solo.io). +*Reporting security issues* : We take Gloo Gateway's security very seriously. If you've found a security issue or a potential security issue in Gloo Gateway, please DO NOT file a public Github issue, instead send your report privately to [security@solo.io](mailto:security@solo.io). diff --git a/docs/content/img/logo-gloo-gateway.svg b/docs/content/img/logo-gloo-gateway.svg new file mode 100644 index 00000000000..3b245977bd0 --- /dev/null +++ b/docs/content/img/logo-gloo-gateway.svg @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/gateway2/examples/httpbin.yaml b/projects/gateway2/examples/httpbin.yaml new file mode 100644 index 00000000000..c7a734d32b1 --- /dev/null +++ b/projects/gateway2/examples/httpbin.yaml @@ -0,0 +1,111 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: httpbin +--- +################################################################################################## +# httpbin service +################################################################################################## +apiVersion: v1 +kind: ServiceAccount +metadata: + name: httpbin + namespace: httpbin +--- +apiVersion: v1 +kind: Service +metadata: + name: httpbin + namespace: httpbin + labels: + app: httpbin + service: httpbin +spec: + ports: + - name: http + port: 8000 + targetPort: 8080 + - name: tcp + port: 9000 + selector: + app: httpbin +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: httpbin + namespace: httpbin +spec: + replicas: 1 + selector: + matchLabels: + app: httpbin + version: v1 + template: + metadata: + labels: + app: httpbin + version: v1 + spec: + serviceAccountName: httpbin + containers: + - image: docker.io/mccutchen/go-httpbin:v2.6.0 + imagePullPolicy: IfNotPresent + name: httpbin + command: [ go-httpbin ] + args: + - "-port" + - "8080" + - "-max-duration" + - "600s" # override default 10s + ports: + - containerPort: 8080 + # Include curl container for e2e testing, allows sending traffic mediated by the proxy sidecar + - name: curl + image: curlimages/curl:7.83.1 + resources: + requests: + cpu: "100m" + limits: + cpu: "200m" + imagePullPolicy: IfNotPresent + command: + - "tail" + - "-f" + - "/dev/null" + - name: hey + image: gcr.io/solo-public/docs/hey:0.1.4 + imagePullPolicy: IfNotPresent +--- +kind: Gateway +apiVersion: gateway.networking.k8s.io/v1 +metadata: + name: http + namespace: httpbin +spec: + gatewayClassName: gloo-gateway + listeners: + - protocol: HTTP + port: 8080 + name: http + allowedRoutes: + namespaces: + from: All +--- +apiVersion: gateway.networking.k8s.io/v1beta1 +kind: HTTPRoute +metadata: + name: httpbin + namespace: httpbin + labels: + example: httpbin-route +spec: + parentRefs: + - name: http + namespace: gloo-system + hostnames: + - "www.example.com" + rules: + - backendRefs: + - name: httpbin + port: 8000