Skip to content

Typesense Kubernetes Operator (TyKO) simplifies deploying, scaling, and managing Typesense clusters in Kubernetes

License

Notifications You must be signed in to change notification settings

akyriako/typesense-operator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

177 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TyKO Logo

TypesenseSupportedVersions KubernetesSupportedVersions License Go GitHub Release Stars

🎯 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 (config maps, secrets, volumes, statefulsets, services, ingress, metrics, scrapers)
  • Automates Raft quorum configuration, discovery and recovery 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

# 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
Quick example for Open Telekom Cloud CCE
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
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
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
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
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
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
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
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 and Configuration guides.

πŸ“š Documentation

πŸ’¬ 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.3.7
  • Tested on: Kubernetes 1.35 (earliest 1.26), Typesense 30.0 (earliest 26.0)
  • Contributions welcome! See FAQ and 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
  • Spread the word: blog posts, tutorials, or community shoutouts help others discover it