{"id":22772685,"url":"https://github.com/akyriako/typesense-operator","last_synced_at":"2026-03-16T13:12:24.810Z","repository":{"id":263819904,"uuid":"891480771","full_name":"akyriako/typesense-operator","owner":"akyriako","description":"Typesense Kubernetes Operator (TyKO) simplifies deploying, scaling, and managing Typesense clusters in Kubernetes","archived":false,"fork":false,"pushed_at":"2026-02-04T08:09:55.000Z","size":26001,"stargazers_count":86,"open_issues_count":13,"forks_count":20,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-02-04T20:12:23.067Z","etag":null,"topics":["high-availability","kubernetes","kubernetes-operator","raft","raft-consensus-algorithm","tyko","typesense","typesense-operator"],"latest_commit_sha":null,"homepage":"https://akyriako.github.io/typesense-operator-docs/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akyriako.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-20T12:13:31.000Z","updated_at":"2026-02-04T08:09:11.000Z","dependencies_parsed_at":"2024-11-21T03:45:47.913Z","dependency_job_id":"5e0418d2-fbe4-4baf-9f72-2bec793ee04b","html_url":"https://github.com/akyriako/typesense-operator","commit_stats":null,"previous_names":["akyriako/typesense-operator"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/akyriako/typesense-operator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akyriako%2Ftypesense-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akyriako%2Ftypesense-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akyriako%2Ftypesense-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akyriako%2Ftypesense-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akyriako","download_url":"https://codeload.github.com/akyriako/typesense-operator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akyriako%2Ftypesense-operator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29508752,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T09:05:14.864Z","status":"ssl_error","status_checked_at":"2026-02-16T08:55:59.364Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["high-availability","kubernetes","kubernetes-operator","raft","raft-consensus-algorithm","tyko","typesense","typesense-operator"],"created_at":"2024-12-11T17:09:21.304Z","updated_at":"2026-03-16T13:12:24.775Z","avatar_url":"https://github.com/akyriako.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"left\"\u003e\n  \u003cimg src=\"banner.png\" alt=\"TyKO Logo\" /\u003e\n\u003c/p\u003e\n\n[//]: # (# TyKO — Typesense Kubernetes Operator)\n\n[//]: # (**Kubernetes-native automation for highly available Typesense clusters.**)\n\n[![TypesenseSupportedVersions](https://img.shields.io/badge/Typesense-^26.0-green?logo=stackblitz)]() [![KubernetesSupportedVersions](https://img.shields.io/badge/Kubernetes-^1.26-green?logo=kubernetes\u0026logoColor=f5f5f5)]()\n[![License](https://img.shields.io/github/license/akyriako/typesense-operator)]() ![Go](https://img.shields.io/github/go-mod/go-version/akyriako/typesense-operator\n) ![GitHub Release](https://img.shields.io/github/v/release/akyriako/typesense-operator) [![Stars](https://img.shields.io/github/stars/akyriako/typesense-operator?logo=github)]()\n\n[//]: # (---)\n\n## 🎯 Why TyKO?\n\n**Simplify the deployment, scaling, and management of Typesense clusters in Kubernetes.**\n\n- Deploy highly-available **Typesense** clusters with a **single declarative YAML manifest**\n- 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)\n- 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\n- Built with Go \u0026 Operator SDK — lightweight, Kubernetes-native, and flexible\n- Community-driven, with plethora of examples for Kind, CCE, AKS, EKS, GCP, and more\n\n## ⚡ Get Started\n\n```bash\n# Install the Operator\nhelm repo add tyko https://akyriako.github.io/typesense-operator/\nhelm repo update\n\nhelm upgrade --install typesense-operator tyko/typesense-operator -n typesense-system --create-namespace --reset-values\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eQuick example for Open Telekom Cloud CCE\u003c/summary\u003e\n\n```yaml\napiVersion: ts.opentelekomcloud.com/v1alpha1\nkind: TypesenseCluster\nmetadata:\n  labels:\n    app.kubernetes.io/name: typesense-operator\n    app.kubernetes.io/managed-by: kustomize\n  name: ts-otc-1\nspec:\n  image: typesense/typesense:30.0\n  replicas: 3\n  storage:\n    storageClassName: csi-disk\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eQuick example for Open Telekom Cloud CCE with OBS S3 support\u003c/summary\u003e\n\n```yaml\napiVersion: ts.opentelekomcloud.com/v1alpha1\nkind: TypesenseCluster\nmetadata:\n  labels:\n    app.kubernetes.io/name: typesense-operator\n    app.kubernetes.io/managed-by: kustomize\n  name: ts-otc-2\nspec:\n  image: typesense/typesense:30.0\n  replicas: 3\n  storage:\n    storageClassName: csi-obs\n    accessMode: ReadWriteMany\n    annotations:\n      csi.storage.k8s.io/fstype: obsfs\n      volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner\n      csi.storage.k8s.io/node-publish-secret-name: otc-aksk\n      csi.storage.k8s.io/node-publish-secret-namespace: default\n      everest.io/csi.volume-name-prefix: c-otc-2\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eQuick example for Open Telekom Cloud CCE with SFS Turbo S3 support\u003c/summary\u003e\n\n```yaml\napiVersion: ts.opentelekomcloud.com/v1alpha1\nkind: TypesenseCluster\nmetadata:\n  labels:\n    app.kubernetes.io/name: typesense-operator\n    app.kubernetes.io/managed-by: kustomize\n  name: ts-otc-3\nspec:\n  image: typesense/typesense:30.0\n  replicas: 3\n  storage:\n    storageClassName: csi-obs\n    accessMode: ReadWriteMany\n    annotations:\n      everest.io/obs-volume-type: STANDARD\n      csi.storage.k8s.io/fstype: s3fs\n      volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner\n      csi.storage.k8s.io/node-publish-secret-name: otc-aksk\n      csi.storage.k8s.io/node-publish-secret-namespace: default\n      everest.io/csi.volume-name-prefix: c-otc-3\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eQuick example for bare metal K3s with Democratic CSI\u003c/summary\u003e\n\n```yaml\napiVersion: ts.opentelekomcloud.com/v1alpha1\nkind: TypesenseCluster\nmetadata:\n  labels:\n    app.kubernetes.io/name: typesense-operator\n    app.kubernetes.io/managed-by: kustomize\n  name: ts-bm-k3s\nspec:\n  image: typesense/typesense:30.0\n  replicas: 3\n  storage:\n    storageClassName: nfs\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eQuick example for Kind\u003c/summary\u003e\n\n```yaml\napiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\n  name: typesense-local-path\nprovisioner: rancher.io/local-path\nreclaimPolicy: Delete\nallowVolumeExpansion: true\nvolumeBindingMode: WaitForFirstConsumer\n---\napiVersion: ts.opentelekomcloud.com/v1alpha1\nkind: TypesenseCluster\nmetadata:\n  labels:\n    app.kubernetes.io/name: typesense-operator\n    app.kubernetes.io/managed-by: kustomize\n  name: ts-kind\nspec:\n  image: typesense/typesense:30.0\n  replicas: 3\n  storage:\n    size: 150Mi\n    storageClassName: typesense-local-path\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eQuick example for AWS EKS\u003c/summary\u003e\n\n```yaml\napiVersion: ts.opentelekomcloud.com/v1alpha1\nkind: TypesenseCluster\nmetadata:\n  labels:\n    app.kubernetes.io/name: typesense-operator\n    app.kubernetes.io/managed-by: kustomize\n  name: ts-aws\nspec:\n  image: typesense/typesense:30.0\n  replicas: 3\n  storage:\n    size: 100Mi\n    storageClassName: gp2\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eQuick example for Azure AKS\u003c/summary\u003e\n\n```yaml\napiVersion: ts.opentelekomcloud.com/v1alpha1\nkind: TypesenseCluster\nmetadata:\n  labels:\n    app.kubernetes.io/name: typesense-operator\n    app.kubernetes.io/managed-by: kustomize\n  name: ts-azure\nspec:\n  image: typesense/typesense:30.0\n  replicas: 3\n  storage:\n    storageClassName: managed-csi\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eQuick example for GCP\u003c/summary\u003e\n\n```yaml\napiVersion: ts.opentelekomcloud.com/v1alpha1\nkind: TypesenseCluster\nmetadata:\n  labels:\n    app.kubernetes.io/name: typesense-operator\n    app.kubernetes.io/managed-by: kustomize\n  name: ts-gcp\nspec:\n  image: typesense/typesense:30.0\n  replicas: 3\n  storage:\n    storageClassName: standard-rwo\n```\n\u003c/details\u003e\n\nYou 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.\n\n## 📚 Documentation\n\n- [Getting Started](https://akyriako.github.io/typesense-operator-docs/docs/getting-started)\n- [How it works](https://akyriako.github.io/typesense-operator-docs/docs/how-it-works)\n- [Configuration \u0026 CRD Specs](https://akyriako.github.io/typesense-operator-docs/docs/crds)\n- [Monitoring \u0026 Metrics](https://akyriako.github.io/typesense-operator-docs/docs/metrics)\n\n## 💬 Community \u0026 Support\n\nJoin the conversation:\n- **GitHub Discussions**: ask questions, share feedback, submit suggestions or help others\n- **Issues**: report bugs or request features\n\n## 📦 Project Status\n\nTyKO is an **independently maintained** project (not affiliated with Typesense, Inc.).\n- Latest version: **0.4.0**\n- Tested on: Kubernetes 1.35 (earliest 1.26), Typesense 30.0 (earliest 26.0)\n- Contributions welcome! See [FAQ](https://akyriako.github.io/typesense-operator-docs/docs/faq) and [Development](https://akyriako.github.io/typesense-operator-docs/docs/development)\n\n## ⭐ Help us Grow\n- Star the repo if you want this operator to grow\n- Try TyKO in your own infrastructure and share your feedback or list yourselves as [Adopters](https://akyriako.github.io/typesense-operator-docs/docs/adopters)\n- Spread the word: blog posts, tutorials, or community shoutouts help others discover it","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakyriako%2Ftypesense-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakyriako%2Ftypesense-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakyriako%2Ftypesense-operator/lists"}