An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          


TyKO Logo

[//]: # (# TyKO — Typesense Kubernetes Operator)

[//]: # (**Kubernetes-native automation for highly available Typesense clusters.**)

[![TypesenseSupportedVersions](https://img.shields.io/badge/Typesense-^26.0-green?logo=stackblitz)]() [![KubernetesSupportedVersions](https://img.shields.io/badge/Kubernetes-^1.26-green?logo=kubernetes&logoColor=f5f5f5)]()
[![License](https://img.shields.io/github/license/akyriako/typesense-operator)]() ![Go](https://img.shields.io/github/go-mod/go-version/akyriako/typesense-operator
) ![GitHub Release](https://img.shields.io/github/v/release/akyriako/typesense-operator) [![Stars](https://img.shields.io/github/stars/akyriako/typesense-operator?logo=github)]()

[//]: # (---)

## 🎯 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