{"id":19600145,"url":"https://github.com/m3db/m3db-operator","last_synced_at":"2025-04-27T16:32:16.958Z","repository":{"id":37825207,"uuid":"141621344","full_name":"m3db/m3db-operator","owner":"m3db","description":"Kubernetes operator for M3DB ","archived":false,"fork":false,"pushed_at":"2023-03-23T11:24:04.000Z","size":3002,"stargazers_count":139,"open_issues_count":21,"forks_count":39,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-05T01:32:18.002Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://m3db.io/docs/operator/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m3db.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2018-07-19T19:15:57.000Z","updated_at":"2024-12-08T10:22:22.000Z","dependencies_parsed_at":"2024-06-20T03:01:30.110Z","dependency_job_id":"8df3a8c6-9250-4e6b-88fa-af6447871beb","html_url":"https://github.com/m3db/m3db-operator","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m3db%2Fm3db-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m3db%2Fm3db-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m3db%2Fm3db-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m3db%2Fm3db-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m3db","download_url":"https://codeload.github.com/m3db/m3db-operator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251171591,"owners_count":21547117,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-11T09:13:41.255Z","updated_at":"2025-04-27T16:32:15.724Z","avatar_url":"https://github.com/m3db.png","language":"Go","readme":"# M3 Operator [![Build status](https://badge.buildkite.com/6cf88054469d7d59a584f618426dc2bd436f816daaf5000db8.svg)](https://buildkite.com/m3/m3db-operator) [![codecov](https://codecov.io/gh/m3db/m3db-operator/branch/master/graph/badge.svg)](https://codecov.io/gh/m3db/m3db-operator)\n\nThe M3 Operator helps you set up M3 on Kubernetes. It aims to automate everyday tasks around managing M3, specifically, it aims to automate:\n\n-   Creating clusters\n-   Destroying clusters\n-   Expanding clusters (adding instances)\n-   Shrinking clusters (removing instances)\n-   Replacing failed instances\n\n## Table of Contents\n\n- [More Information](#more-information)\n  - [Community Meetings](#community-meetings)\n  - [Office Hours](#office-hours)\n- [Install](#install)\n  - [Dependencies](#dependencies)\n- [Usage](#usage)\n  - [Create an etcd Cluster](#create-an-etcd-cluster)\n  - [Install the Operator](#install-the-operator)\n  - [Create an M3 Cluster](#create-an-m3-cluster)\n  - [Resize a Cluster](#resize-a-cluster)\n  - [Delete a Cluster](#delete-a-cluster)\n- [Contributing](#contributing)\n\n## More Information\n\n-   [Documentation](https://m3db.io/docs/operator/)\n-   [Slack](http://bit.ly/m3slack)\n-   [Forum (Google Group)](https://groups.google.com/forum/#!forum/m3db)\n\n### Community Meetings\n\nM3 contributors and maintainers have regular meetings. Join our M3 meetup group to receive notifications on upcoming meetings: \u003chttps://www.meetup.com/M3-Community/\u003e.\n\nYou can find recordings of past meetups here: \u003chttps://vimeo.com/user/120001164/folder/2290331\u003e.\n\n### Office Hours\n\nMembers of the M3 team hold office hours on the third Thursday of every month from 11-1pm EST. To join, make sure to sign up for a slot here: \u003chttps://calendly.com/chronosphere-intro/m3-community-office-hours\u003e.\n\n## Install\n\n### Dependencies\n\nThe M3 operator targets Kubernetes **1.21** and higher. We aim to target the latest two minor versions supported by GKE but welcome community contributions to support more versions.\n\nThe M3 operator is intended for creating highly available clusters across distinct failure domains. For this reason it only support Kubernetes clusters with nodes **in at least 3 zones**.\n\n## Usage\n\nThe following instructions are a quickstart to get a cluster up and running. This setup is not for production use, as it has no persistent storage. [Read the operator documentation](https://m3db.io/docs/operator/) for more information on production-grade clusters.\n\n### Create an etcd Cluster\n\nM3 stores its cluster placements and runtime metadata in [etcd](https://etcd.io/) and needs a running cluster to communicate with.\n\n```shell\nkubectl apply -f https://raw.githubusercontent.com/m3db/m3db-operator/v0.14.0/example/etcd/etcd-basic.yaml\n```\n\n### Install the Operator\n\nUsing `kubectl` (installs in the `default` namespace):\n\n```shell\nkubectl apply -f https://raw.githubusercontent.com/m3db/m3db-operator/v0.14.0/bundle.yaml\n```\n\n### Create an M3 Cluster\n\nThe following command creates an M3 cluster with 3 replicas of data across 256 shards that connects to the 3 available etcd endpoints.\n\n```shell\nkubectl apply -f https://raw.githubusercontent.com/m3db/m3db-operator/master/example/m3db-local.yaml\n```\n\nWhen running on GKE, the user applying the manifests needs the ability to allow `cluster-admin-binding` during installation. Use the following `ClusterRoleBinding` with the user name provided by gcloud:\n\n```shell\nkubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value core/account)\n```\n\n### Resize a Cluster\n\nTo resize a cluster, specify the new number of instances you want in each zone either by reapplying your manifest or using `kubectl edit`. The operator safely scales up or scales down the cluster.\n\n### Delete a Cluster\n\n```shell\nkubectl delete m3dbcluster simple-cluster\n```\n\nYou also need to remove the etcd data, or wipe the data generated by the operator if you intend to reuse the etcd cluster for another M3 cluster:\n\n```shell\nkubectl exec etcd-0 -- env ETCDCTL_API=3 etcdctl del --keys-only --prefix \"\"\n```\n\n## Contributing\n\nYou can ask questions and give feedback in the following ways:\n\n-   [Create a GitHub issue](https://github.com/m3db/m3db-operator/issues)\n-   [In the public M3 Slack](http://bit.ly/m3slack)\n-   [In the M3 forum (Google Group)](https://groups.google.com/forum/#!forum/m3db)\n\nThe M3 operator welcomes pull requests, read [the development guide](CONTRIBUTING.md) to help you get setup for building and contributing.\n\n* * *\n\nThis project is released under the [Apache License, Version 2.0](https://github.com/m3db/m3/blob/master/LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm3db%2Fm3db-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm3db%2Fm3db-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm3db%2Fm3db-operator/lists"}