https://github.com/akyriako/typesense-operator
Typesense Kubernetes Operator (TyKO) simplifies deploying, scaling, and managing Typesense clusters in Kubernetes
https://github.com/akyriako/typesense-operator
high-availability kubernetes kubernetes-operator raft raft-consensus-algorithm tyko typesense typesense-operator
Last synced: about 2 months ago
JSON representation
Typesense Kubernetes Operator (TyKO) simplifies deploying, scaling, and managing Typesense clusters in Kubernetes
- Host: GitHub
- URL: https://github.com/akyriako/typesense-operator
- Owner: akyriako
- License: gpl-3.0
- Created: 2024-11-20T12:13:31.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-02-04T08:09:55.000Z (3 months ago)
- Last Synced: 2026-02-04T20:12:23.067Z (3 months ago)
- Topics: high-availability, kubernetes, kubernetes-operator, raft, raft-consensus-algorithm, tyko, typesense, typesense-operator
- Language: Go
- Homepage: https://akyriako.github.io/typesense-operator-docs/
- Size: 24.8 MB
- Stars: 86
- Watchers: 4
- Forks: 20
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[//]: # (# TyKO — Typesense Kubernetes Operator)
[//]: # (**Kubernetes-native automation for highly available Typesense clusters.**)
[]() []()
[]()   []()
[//]: # (---)
## 🎯 Why TyKO?
**Simplify the deployment, scaling, and management of Typesense clusters in Kubernetes.**
- Deploy highly-available **Typesense** clusters with a **single declarative YAML manifest**
- Automates **Typesense** [lifecycle management](https://akyriako.github.io/typesense-operator-docs/docs/getting-started#key-features) (config maps, secrets, volumes, statefulsets, services, ingress or http routes, metrics, scrapers)
- Automates **Raft quorum [configuration, discovery and recovery](https://akyriako.github.io/typesense-operator-docs/docs/how-it-works/recovering-a-cluster-that-has-lost-quorum)** without additional sidecars or manual interventions
- Built with Go & Operator SDK — lightweight, Kubernetes-native, and flexible
- Community-driven, with plethora of examples for Kind, CCE, AKS, EKS, GCP, and more
## ⚡ Get Started
```bash
# Install the Operator
helm repo add tyko https://akyriako.github.io/typesense-operator/
helm repo update
helm upgrade --install typesense-operator tyko/typesense-operator -n typesense-system --create-namespace --reset-values
```
Quick example for Open Telekom Cloud CCE
```yaml
apiVersion: ts.opentelekomcloud.com/v1alpha1
kind: TypesenseCluster
metadata:
labels:
app.kubernetes.io/name: typesense-operator
app.kubernetes.io/managed-by: kustomize
name: ts-otc-1
spec:
image: typesense/typesense:30.0
replicas: 3
storage:
storageClassName: csi-disk
```
Quick example for Open Telekom Cloud CCE with OBS S3 support
```yaml
apiVersion: ts.opentelekomcloud.com/v1alpha1
kind: TypesenseCluster
metadata:
labels:
app.kubernetes.io/name: typesense-operator
app.kubernetes.io/managed-by: kustomize
name: ts-otc-2
spec:
image: typesense/typesense:30.0
replicas: 3
storage:
storageClassName: csi-obs
accessMode: ReadWriteMany
annotations:
csi.storage.k8s.io/fstype: obsfs
volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner
csi.storage.k8s.io/node-publish-secret-name: otc-aksk
csi.storage.k8s.io/node-publish-secret-namespace: default
everest.io/csi.volume-name-prefix: c-otc-2
```
Quick example for Open Telekom Cloud CCE with SFS Turbo S3 support
```yaml
apiVersion: ts.opentelekomcloud.com/v1alpha1
kind: TypesenseCluster
metadata:
labels:
app.kubernetes.io/name: typesense-operator
app.kubernetes.io/managed-by: kustomize
name: ts-otc-3
spec:
image: typesense/typesense:30.0
replicas: 3
storage:
storageClassName: csi-obs
accessMode: ReadWriteMany
annotations:
everest.io/obs-volume-type: STANDARD
csi.storage.k8s.io/fstype: s3fs
volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner
csi.storage.k8s.io/node-publish-secret-name: otc-aksk
csi.storage.k8s.io/node-publish-secret-namespace: default
everest.io/csi.volume-name-prefix: c-otc-3
```
Quick example for bare metal K3s with Democratic CSI
```yaml
apiVersion: ts.opentelekomcloud.com/v1alpha1
kind: TypesenseCluster
metadata:
labels:
app.kubernetes.io/name: typesense-operator
app.kubernetes.io/managed-by: kustomize
name: ts-bm-k3s
spec:
image: typesense/typesense:30.0
replicas: 3
storage:
storageClassName: nfs
```
Quick example for Kind
```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: typesense-local-path
provisioner: rancher.io/local-path
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: ts.opentelekomcloud.com/v1alpha1
kind: TypesenseCluster
metadata:
labels:
app.kubernetes.io/name: typesense-operator
app.kubernetes.io/managed-by: kustomize
name: ts-kind
spec:
image: typesense/typesense:30.0
replicas: 3
storage:
size: 150Mi
storageClassName: typesense-local-path
```
Quick example for AWS EKS
```yaml
apiVersion: ts.opentelekomcloud.com/v1alpha1
kind: TypesenseCluster
metadata:
labels:
app.kubernetes.io/name: typesense-operator
app.kubernetes.io/managed-by: kustomize
name: ts-aws
spec:
image: typesense/typesense:30.0
replicas: 3
storage:
size: 100Mi
storageClassName: gp2
```
Quick example for Azure AKS
```yaml
apiVersion: ts.opentelekomcloud.com/v1alpha1
kind: TypesenseCluster
metadata:
labels:
app.kubernetes.io/name: typesense-operator
app.kubernetes.io/managed-by: kustomize
name: ts-azure
spec:
image: typesense/typesense:30.0
replicas: 3
storage:
storageClassName: managed-csi
```
Quick example for GCP
```yaml
apiVersion: ts.opentelekomcloud.com/v1alpha1
kind: TypesenseCluster
metadata:
labels:
app.kubernetes.io/name: typesense-operator
app.kubernetes.io/managed-by: kustomize
name: ts-gcp
spec:
image: typesense/typesense:30.0
replicas: 3
storage:
storageClassName: standard-rwo
```
You can find more examples and analytical installation instructions in the [Installation](https://akyriako.github.io/typesense-operator-docs/docs/installation/) and [Configuration](https://akyriako.github.io/typesense-operator-docs/docs/crds) guides.
## 📚 Documentation
- [Getting Started](https://akyriako.github.io/typesense-operator-docs/docs/getting-started)
- [How it works](https://akyriako.github.io/typesense-operator-docs/docs/how-it-works)
- [Configuration & CRD Specs](https://akyriako.github.io/typesense-operator-docs/docs/crds)
- [Monitoring & Metrics](https://akyriako.github.io/typesense-operator-docs/docs/metrics)
## 💬 Community & Support
Join the conversation:
- **GitHub Discussions**: ask questions, share feedback, submit suggestions or help others
- **Issues**: report bugs or request features
## 📦 Project Status
TyKO is an **independently maintained** project (not affiliated with Typesense, Inc.).
- Latest version: **0.4.0**
- Tested on: Kubernetes 1.35 (earliest 1.26), Typesense 30.0 (earliest 26.0)
- Contributions welcome! See [FAQ](https://akyriako.github.io/typesense-operator-docs/docs/faq) and [Development](https://akyriako.github.io/typesense-operator-docs/docs/development)
## ⭐ Help us Grow
- Star the repo if you want this operator to grow
- Try TyKO in your own infrastructure and share your feedback or list yourselves as [Adopters](https://akyriako.github.io/typesense-operator-docs/docs/adopters)
- Spread the word: blog posts, tutorials, or community shoutouts help others discover it