Skip to content

Commit

Permalink
small tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
maleck13 committed Aug 29, 2023
1 parent 5584549 commit 4644629
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions docs/design/architectural-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

## Overview

It is important to note that Kuadrant is not in itself a gateway provider. Kuadrant provides a set of valuable policy APIs that enhance [Gateway API](https://github.com/kubernetes-sigs/gateway-api) via its defined [policy attachment](https://gateway-api.sigs.k8s.io/references/policy-attachment/) extension point. The policy APIs are reconciled by a set of policy controllers and enforced via integration at different points to configure and secure the application connectivity provided via Gateway API.
These policy extensions are focused around areas such as DNS, global load balancing and health checks, alongside service protection specific APIs such as rate limiting and auth. Kuadrant also integrates with [OCM (Open Cluster Manager)](https://open-cluster-management.io/) as a multi-cluster control plane to enable defining and distributing Gateways across multiple clusters and provide a single view of your gateways from a single management hub.
It is important to note that Kuadrant is not in itself a gateway provider. Kuadrant provides a set of valuable policy APIs that enhance [Gateway API](https://github.com/kubernetes-sigs/gateway-api) via its defined [policy attachment](https://gateway-api.sigs.k8s.io/references/policy-attachment/) extension point. The policy APIs are reconciled by a set of policy controllers and enforced via integration at different points to configure, enhance and secure the application connectivity provided via Gateway API and the underlying gateway provider.
These policy extensions are focused around areas such as DNS management supporting global load balancing and health checks, alongside service protection specific APIs such as rate limiting and auth. Kuadrant also integrates with [OCM (Open Cluster Manager)](https://open-cluster-management.io/) as a multi-cluster control plane to enable defining and distributing Gateways across multiple clusters, providing load balancing and tls management capabilities alongside a single view and single definition of your gateways from the OCM management hub.


## Key Architectural Areas

* The Kuadrant architecture is spread across a control plane and also a data plane. Kuadrant can work in both a single and multi-cluster context.
Currently in order for all APIs to work in a single or multi-cluster context you need to have OCM installed. While this may change in the future, this approach allows us to start with a single cluster and seamlessly scale as more clusters are added.
* The control plane is where policies are exposed and expressed as kubernetes APIs and reconciled by the kuadrant policy controllers.
* The data plane is where kuadrant's service protection components, configured by the control plane policies, are enforced within the gateway instance as part of the request flow.
* The control plane is where policies are exposed and expressed as kubernetes APIs and reconciled by the Kuadrant policy controllers.
* The data plane is where Kuadrant's service protection components, configured by the control plane policies, are enforced within the gateway instance as part of the request flow.

## 1000m Architecture

Expand All @@ -25,7 +25,7 @@ Currently some of our policies are focused only around the multi-cluster context
### Control Plane Components and Responsibilities
A control plane component is something responsible for accepting instruction via a CRD based API and ensuring that configuration is manifested into state that can be acted on.

- **[Kuadrant Operator](https://github.com/Kuadrant/kuadrant-operator):**
- **[Kuadrant Operator](https://github.com/Kuadrant/Kuadrant-operator):**
- Installation of data plane service protection components via their respective operators
- Exposes `RateLimitPolicy` and `AuthPolicy` and is currently the policy controller for these APIs
- Configures the Gateway to be able to leverage the data plane service protection components
Expand All @@ -34,7 +34,7 @@ A control plane component is something responsible for accepting instruction via
- Configures DNS providers (e.g AWS Route 53) and TLS providers
- Focused around use cases involving distributed gateways (for example across clouds or geographic regions)
- Integrates with OCM as the multi-cluster management hub to distribute and observe gateway status based on the clusters they are deployed to works directly with OCM APIs such `PlacementDecision` and `ManifestWork`.
- **[kuadrant-add-on-manager](https://github.com/Kuadrant/multicluster-gateway-controller/cmd/ocm):**
- **[Kuadrant-add-on-manager](https://github.com/Kuadrant/multicluster-gateway-controller/cmd/ocm):**
- Sub component in the gateway controller repository
- Follows the [add-on pattern](https://open-cluster-management.io/concepts/addon/) from OCM
- Responsible for configuring and installing Kuadrant into a target spoke cluster
Expand Down Expand Up @@ -85,7 +85,7 @@ In a single cluster context, the overall architecture remains the same as above,

## How does Kuadrant leverage OCM

The kuadrant multi-cluster gateway controller is intended to be installed into an OCM hub cluster. The Gateway API resources are also installed into this cluster.
The Kuadrant multi-cluster gateway controller is intended to be installed into an OCM hub cluster. The Gateway API resources are also installed into this cluster.
Kuadrant defines a [gateway class](https://gateway-api.sigs.k8s.io/api-types/gatewayclass/) that the multi-cluster gateway controller is the specified controller for. An OCM user can then (with the correct RBAC in place) define a Gateway just as they would in a single cluster setting and this will be reconciled by the multi-cluster gateway controller. We use this gateway definition to represent a "multi-cluster" enabled gateway and use the aggregated status from each instance of this gateway to store information such as IPs and Hostnames of Load Balancers and how many routes are attached to a given listner.

![](./images/ocm-integration.png)
Expand All @@ -105,7 +105,7 @@ More info can be found here https://open-cluster-management.io/concepts/architec

## How does Kuadrant integrate with Gateway Providers

The kuadrant data plane, integrates with the Istio gateway provider only currently:
The Kuadrant data plane, integrates with the Istio gateway provider only currently:

- It registers Authorino with the `IstioOperator` as an auth provider.

Expand Down

0 comments on commit 4644629

Please sign in to comment.