Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

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.8
  • 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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 9

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /