Kuadrant Operator
The Operator to install and manage the lifecycle of the Kuadrant components deployments.
Overview
Kuadrant is a re-architecture of API Management using Cloud Native concepts and separating the components to be less coupled,
more reusable and leverage the underlying kubernetes platform. It aims to deliver a smooth experience to providers and consumers
of applications & services when it comes to rate limiting, authentication, authorization, discoverability, change management, usage contracts, insights, etc.
Kuadrant aims to produce a set of loosely coupled functionalities built directly on top of Kubernetes.
Furthermore it only strives to provide what Kubernetes doesn’t offer out of the box, i.e. Kuadrant won’t be designing a new Gateway/proxy,
instead it will opt to connect with what’s there and what’s being developed (think Envoy, Istio, GatewayAPI).
Kuadrant is a system of cloud-native k8s components that grows as users’ needs grow.
- From simple protection of a Service (via AuthN) that is used by teammates working on the same cluster, or “sibling” services, up to AuthZ of users using OIDC plus custom policies.
- From no rate-limiting to rate-limiting for global service protection on to rate-limiting by users/plans
Architecture
Kuadrant relies on Istio and the Gateway API
to operate the cluster (istio's) ingress gateway to provide API management with authentication (authN),
authorization (authZ) and rate limiting capabilities.
Kuadrant components
Provided APIs
The kuadrant control plane owns the following Custom Resource Definitions, CRDs:
Additionally, Kuadrant provides the following CRDs
Getting started
Pre-requisites
Installing Kuadrant
- Create the namespace for the Operator
kubectl create namespace kuadrant-system
- Install Kuadrant dependencies: Authorino and Limitador operators.
make install-dependencies
- Install the Operator manifests
make install
- Deploy the Operator
make deploy
Tip: Deploy a custom image of the Operator
To deploy an image of the Operator other than the default quay.io/kuadrant/kuadrant-operator:latest
, specify by setting the OPERATOR_IMAGE
parameter. E.g.:
make deploy OPERATOR_IMAGE=kuadrant-operator:local
- Create Kuadrant CR
This will setup the required dependencies for protecting your service. At the moment there's no major configuration needed:
kubectl -n kuadrant-system apply -f - <<EOF
apiVersion: kuadrant.io/v1beta1
kind: Kuadrant
metadata:
name: kuadrant-sample
spec: {}
EOF
Protect your service
If you are an API Provider
- Deploy the service/API to be protected ("Upstream")
- Expose the service/API using the kubernetes Gateway API, ie
HTTPRoute object.
- Write and apply the Kuadrant's RateLimitPolicy and/or
AuthPolicy custom resources targeting the HTTPRoute resource
to have your API protected.
If you are a Cluster Operator
- (Optionally) deploy istio ingress gateway using the
Gateway resource.
- Write and apply the Kuadrant's RateLimitPolicy and/or
AuthPolicy custom resources targeting the Gateway resource
to have your gateway traffic protected.
User guides
The user guides section of the docs gathers several use-cases as well as the instructions to implement them using kuadrant.
Documentation
Docs can be found on the Kuadrant website.
Contributing
The Development guide describes how to build the kuadrant operator and
how to test your changes before submitting a patch or opening a PR.
Join us on kuadrant.slack.com
for live discussions about the roadmap and more.
Licensing
This software is licensed under the Apache 2.0 license.
See the LICENSE and NOTICE files that should have been provided along with this software for details.