|
| 1 | +## What is the AdminNetworkPolicy API? |
| 2 | + |
| 3 | +The AdminNetworkPolicy API is an open source project managed by the [SIG-NETWORK][sig-network] |
| 4 | +community. It is a collection of resources, which aim to make securing Kubernetes |
| 5 | +clusters easier for Administrators. |
| 6 | + |
| 7 | + |
| 8 | + |
| 9 | +## Getting started |
| 10 | + |
| 11 | +Whether you are a user interested in using the Gateway API or an implementer |
| 12 | +interested in conforming to the API, the following resources will help give |
| 13 | +you the necessary background: |
| 14 | + |
| 15 | +- [API overview](/concepts/api-overview) |
| 16 | +- [User guides](/guides/getting-started) |
| 17 | +- [Gateway controller implementations](/implementations) |
| 18 | +- [API reference spec](/references/spec) |
| 19 | +- [Community links](/contributing/community) and [developer guide](/contributing/devguide) |
| 20 | + |
| 21 | + |
| 22 | +## Gateway API concepts |
| 23 | +The following design goals drive the concepts of the Gateway API. These |
| 24 | +demonstrate how Gateway aims to improve upon current standards like Ingress. |
| 25 | + |
| 26 | + |
| 27 | +- **Role-oriented** - Gateway is composed of API resources which model |
| 28 | +organizational roles that use and configure Kubernetes service networking. |
| 29 | +- **Portable** - This isn't an improvement but rather something |
| 30 | +that should stay the same. Just as Ingress is a universal specification with |
| 31 | +[numerous implementations](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/), |
| 32 | +Gateway API is designed to be a portable specification supported by many |
| 33 | +implementations. |
| 34 | +- **Expressive** - Gateway API resources support core functionality for things |
| 35 | +like header-based matching, traffic weighting, and other capabilities that |
| 36 | +were only possible in Ingress through custom annotations. |
| 37 | +- **Extensible** - Gateway API allows for custom resources to be linked at |
| 38 | +various layers of the API. This makes granular customization possible at the |
| 39 | +appropriate places within the API structure. |
| 40 | + |
| 41 | +Some other notable capabilities include: |
| 42 | + |
| 43 | +- **GatewayClasses** - GatewayClasses formalize types of load balancing |
| 44 | +implementations. These classes make it easy and explicit for users to |
| 45 | +understand what kind of capabilities are available via the Kubernetes resource |
| 46 | +model. |
| 47 | +- **Shared Gateways and cross-Namespace support** - They allow the sharing of |
| 48 | +load balancers and VIPs by permitting independent Route resources to attach to |
| 49 | +the same Gateway. This allows teams (even across Namespaces) to share |
| 50 | +infrastructure safely without direct coordination. |
| 51 | +- **Typed Routes and typed backends** - The Gateway API supports typed Route |
| 52 | +resources and also different types of backends. This allows the API to be |
| 53 | +flexible in supporting various protocols (like HTTP and gRPC) and |
| 54 | +various backend targets (like Kubernetes Services, storage buckets, or |
| 55 | +functions). |
| 56 | + |
| 57 | + |
| 58 | +## Why does a role-oriented API matter? |
| 59 | + |
| 60 | +Whether it’s roads, power, data centers, or Kubernetes clusters, |
| 61 | +infrastructure is built to be shared. However, shared infrastructure raises a |
| 62 | +common challenge - how to provide flexibility to users of the infrastructure |
| 63 | +while maintaining control by owners of the infrastructure? |
| 64 | + |
| 65 | +The Gateway API accomplishes this through a role-oriented design for |
| 66 | +Kubernetes service networking that strikes a balance between distributed |
| 67 | +flexibility and centralized control. It allows shared network infrastructure |
| 68 | +(hardware load balancers, cloud networking, cluster-hosted proxies etc) to be |
| 69 | +used by many different and non-coordinating teams, all bound by the policies |
| 70 | +and constraints set by cluster operators. The following example shows how this |
| 71 | +works in practice. |
| 72 | + |
| 73 | +A cluster operator creates a [Gateway](/api-types/gateway) resource derived from a |
| 74 | +[GatewayClass](/api-types/gatewayclass). This Gateway deploys or configures the |
| 75 | +underlying network resources that it represents. Through the |
| 76 | +[Route Attachment Process](/concepts/api-overview#attaching-routes-to-gateways) |
| 77 | +between the Gateway and Routes, the cluster operator and specific teams must |
| 78 | +agree on what can attach to this Gateway and expose their applications through |
| 79 | +it. Centralized policies [such as TLS](/guides/tls#downstream-tls) can |
| 80 | +be enforced on the Gateway by the cluster operator. Meanwhile, the store and site |
| 81 | +teams run [in their own Namespaces](/guides/multiple-ns), but attach their |
| 82 | +Routes to the same shared Gateway, allowing them to independently control |
| 83 | +their [routing logic](/guides/http-routing). This separation of concerns |
| 84 | +allows the store team to manage their own |
| 85 | +[traffic splitting rollout](/guides/traffic-splitting) while |
| 86 | +leaving centralized policies and control to the cluster operators. |
| 87 | + |
| 88 | + |
| 89 | + |
| 90 | +This flexibility allows the API to adapt to vastly different |
| 91 | +organizational models and implementations while remaining a portable and |
| 92 | +standard API. |
| 93 | + |
| 94 | + |
| 95 | +## Who is working on Gateway? |
| 96 | + |
| 97 | +The Gateway API is a |
| 98 | +[SIG-Network](https://github.com/kubernetes/community/tree/master/sig-network) |
| 99 | +project being built to improve and standardize service networking in |
| 100 | +Kubernetes. Current and in-progress implementations include Contour, |
| 101 | +Emissary-Ingress (Ambassador API Gateway), Google Kubernetes Engine (GKE), Istio, |
| 102 | +Kong, and Traefik. Check out the [implementations |
| 103 | +reference](implementations.md) to see the latest projects & |
| 104 | +products that support Gateway. If you are interested in contributing to or |
| 105 | +building an implementation using the Gateway API then don’t hesitate to [get |
| 106 | +involved!](/contributing/community) |
| 107 | + |
| 108 | +[sig-network]: https://github.com/kubernetes/community/tree/master/sig-network |
| 109 | + |
0 commit comments