Kuadrant / Kuadrant/kuadrant-operator
Expose the option for Kuadrant to be installed in HA mode
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 94
- Forks
- 89
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 43
Description
**What**
When you install Kuadrant, it defaults to a single instance of Authorino and Limitador. In order to be resilient to failure, some installations may want multiple instances of Authorino and Limitador deployed as these components are in the critical path for requests. As Authorino and Limitador support having multiple instances deployed on the same cluster, we should expose options for this deployment topology to be used via Kuadrant
At a high level the key things to expose would be the number of replicas of each that you want and how you want them distributed.
Kubernetes supports distributing instances of a pod via topology constraints
https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/#topology-spread-constraint-examples
use cases:
Support a multi-az k8s cluster where I want to have a gateway instance per AZ that routes to an Authorino and Limitador in the same AZ I want to spread out instances of Authorino and Limitador across AZs rather than allowing them to be potentially scheduled to the same AZ or even the same node. Allow me to have more than one instance of these components per AZ / per cluster for redundancy and to improve resiliency against node failure and AZ failure.
One concept for Kuadrant CRD:
```
deployment:
limitador | ratelimiting:
replicas: 3
topologyKey: zone
authorino | auth:
replicas: 3
topologyKey: zone
```
We may also want to consider a simpler level of configuration:
```
deployment:
mode: HA
topologyKey: zone | node
```
In Authorino and Limitador we would need to add (just an example):
```
topologySpreadConstraints:
- maxSkew: 1
topologyKey: zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app: limitador
```
**Done**
- [ ] Decide how to expose this deployment topology via the Kuadrant CR
- [ ] Understand any required changes to the Authorino and Limitador operators
- [ ] Implement any needed changes to the Authorino and Limitador operators and CRDs
- [ ] Implement the chosen Kuadrant CR and Kuadrant Operator changes
- [ ] Add e2e test that deploys Kuadrant in this shape and tests it is as expected
- [ ] Document the options for this deployment type in the Kuadrant CR
- [ ] Document our recommended topologies in a multi-az and single az setup
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by comparing the proposed Kuadrant CR deployment shapes with the required Authorino and Limitador operator and CRD changes. Define the selected replica and topology options, then validate them with an end-to-end deployment test and document the recommended multi-AZ and single-AZ configurations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, kubernetes
- Domain
- devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100