All Projects → indeedeng → Rabbitmq Operator

indeedeng / Rabbitmq Operator

Licence: apache-2.0
A Kubernetes Operator for RabbitMQ

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Rabbitmq Operator

rabbitmq-operator
RabbitMQ Kubernetes operator
Stars: ✭ 16 (-68.63%)
Mutual labels:  rabbitmq, kubernetes-operator
Cluster Operator
RabbitMQ Cluster Kubernetes Operator
Stars: ✭ 192 (+276.47%)
Mutual labels:  rabbitmq, kubernetes-operator
Yii2 Queue
Yii2 Queue Extension. Supports DB, Redis, RabbitMQ, Beanstalk and Gearman
Stars: ✭ 977 (+1815.69%)
Mutual labels:  rabbitmq
Node Server Project
基于 node.js + express 技术栈,采用MVC结构设计、JWT + RESTful API、PM2服务监控的Node服务器端项目框架.
Stars: ✭ 47 (-7.84%)
Mutual labels:  rabbitmq
Sens8
Kubernetes controller for Sensu checks
Stars: ✭ 42 (-17.65%)
Mutual labels:  kubernetes-operator
Rabbitmq Delayed Message Exchange
Delayed Messaging for RabbitMQ
Stars: ✭ 982 (+1825.49%)
Mutual labels:  rabbitmq
Tackle
💯 percent reliable microservice communication
Stars: ✭ 44 (-13.73%)
Mutual labels:  rabbitmq
Rabbitmq Java Client
RabbitMQ Java client
Stars: ✭ 964 (+1790.2%)
Mutual labels:  rabbitmq
Dbblog
基于SpringBoot2.x+Vue2.x+ElementUI+Iview+Elasticsearch+RabbitMQ+Redis+Shiro的多模块前后端分离的博客项目
Stars: ✭ 1,045 (+1949.02%)
Mutual labels:  rabbitmq
Rabbitmq
RabbitMQ系统3.5.3版本中文完全注释(同时实现了RabbitMQ系统和插件源代码编译,根据配置文件创建RabbitMQ集群,创建连接RabbitMQ系统的客户端节点等相关功能,方便源代码的阅读)
Stars: ✭ 1,004 (+1868.63%)
Mutual labels:  rabbitmq
Kbframe
一款基于Laravel框架开发的现代化二次开发框架,是高性能,高效率,高质量的企业级开发框架,具有驱动领域,敏捷开发,轻易上手,高内聚低耦合,开箱即用等特点。
Stars: ✭ 47 (-7.84%)
Mutual labels:  rabbitmq
Nagios Plugins
450+ AWS, Hadoop, Cloud, Kafka, Docker, Elasticsearch, RabbitMQ, Redis, HBase, Solr, Cassandra, ZooKeeper, HDFS, Yarn, Hive, Presto, Drill, Impala, Consul, Spark, Jenkins, Travis CI, Git, MySQL, Linux, DNS, Whois, SSL Certs, Yum Security Updates, Kubernetes, Cloudera etc...
Stars: ✭ 1,000 (+1860.78%)
Mutual labels:  rabbitmq
Moco
A MySQL operator for binlog-based semi-sync replication
Stars: ✭ 37 (-27.45%)
Mutual labels:  kubernetes-operator
Lemon Rabbitmq
乐檬框架之rabbitMQ的解耦实现方式(基于springboot框架),利用ConfirmCallback确保消息安全发送至broker服务器,使用Ack/Nack手动确认消息处理状态,保证broker消息被正确消费
Stars: ✭ 46 (-9.8%)
Mutual labels:  rabbitmq
Operator Lifecycle Manager
A management framework for extending Kubernetes with Operators
Stars: ✭ 983 (+1827.45%)
Mutual labels:  kubernetes-operator
Tgir
Official repository for Thank Goodness It's RabbitMQ (TGIR)!
Stars: ✭ 48 (-5.88%)
Mutual labels:  rabbitmq
Kopf
A Python framework to write Kubernetes operators in just few lines of code.
Stars: ✭ 971 (+1803.92%)
Mutual labels:  kubernetes-operator
Yii Queue
Queue extension for Yii 3.0
Stars: ✭ 38 (-25.49%)
Mutual labels:  rabbitmq
Phalcon Vm
Vagrant configuration for PHP7, Phalcon 3.x and Zephir development.
Stars: ✭ 43 (-15.69%)
Mutual labels:  rabbitmq
Cluster Operator
cluster-operator creates, configures and helps manage StorageOS cluster on Kubernetes
Stars: ✭ 50 (-1.96%)
Mutual labels:  kubernetes-operator

Operator for RabbitMQ

Overview

Status: **Indeed is no longer maintaining this application and the repo will be archived 2/22/21 **

Build Status OSS Lifecycle

Provision and manage RabbitMQ clusters on Kubernetes! This operator currently has the following features:

  • Deploy N-node RabbitMQ clusters, utilizing auto-discovery for automatic clustering
  • Scale cluster replicas, storage, and CPU
  • Specify persistent volume storage class
  • Expose clusters to external clients using a LoadBalancer
  • Datadog auto-discovery annotations
  • Safely resolve network partitions without dropping messages (experimental, requires manual custom resource creation)

Getting Started

Prerequisites

You must have a Kubernetes cluster. Standard Pod and Service networking must work.

You must also have a Docker registry that both your development environment and the Kubernetes cluster can access via the CNAME registry.local.tld

The example assumes you have Rook-managed storage deployed. You can read about Rook at https://rook.io/.

Deploying the operator

Use the script deploy-operator.sh to build and push the operator image. At the end you should see a rabbitmq-operator pod spin up in the rabbitmqs namespace.

LOCAL_DOCKER_REGISTRY=registry.local.tld ./scripts/deploy-operator.sh

Deploying a cluster

Apply the example RabbitMQCustomResource. By default, this deploys a cluster with 3 instances in the rabbitmqs namespace.

kubectl apply -f examples/rabbitmq_instance.yaml

Connecting to the cluster

For each cluster, a service called <cluster name>-svc will be created. This is a standard (non-headless) service. Nodes will be added to the relevant Endpoints as soon as their healthcheck returns ok. A cluster named myrabbitmq in namespace rabbitmqs can be internally accessed at myrabbitmq.rabbitmqs.svc.cluster.local. Standard RabbitMQ ports are exposed.

To access a RabbitMQ cluster from outside the Kubernetes cluster, you need to either expose the Rabbit cluster using a NodePort or set createLoadBalancer to true. This will provision a LoadBalancer service with name <cluster-name>-svc-lb (assuming your environment supports it). You can then access your cluster using the LoadBalancer IP and standard RabbitMQ ports.

For more information on Service DNS and routing, see https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/.

Custom Resource Schema

RabbitMQCustomResource spec - example

Field Type Description
rabbitMQImage string Name of RabbitMQ image
initContainerImage string Name of initContainer image
createLoadBalancer boolean Whether to create a LoadBalancer service
preserveOrphanPVCs boolean When scaling down a cluster, whether to preserve "orphaned" PVCs; this field is optional and defaults to false
replicas number Number of cluster nodes
compute.cpuRequest string CPU request per node, ex: "500m"
compute.memory string Memory request per node, ex: "512Mi"
storage.storageClassName string Storage class to use for persistent storage (immutable)
storage.limit string PersistentVolume size per cluster node (immutable)
clusterSpec.highWatermarkFraction string RabbitMQ high watermark, ex: 0.4

Note: Scaling replicas down is a dangerous operation. The operator does not currently make any safety guarantees when scaling down replicas.

Roadmap

This operator is very much a work-in-progress. Features that we want to implement in the near future include:

  • Shovel configuration
  • Policy configuration
  • Improvements to user management

Code of Conduct

Operator for RabbitMQ is governed by the Contributor Covenant v 1.4.1.

License

Operator for RabbitMQ is licensed under the Apache 2 License.

Creating a Release

Check the GitHub releases page for the latest version and from that determine the next version to release. On master, create a tag (git tag <the new version>) and push it (git push --tags). release.sh will see the tag is on master and push the new version to DockerHub automatically (via Travis).

Draft a new release, put the tag you just created in the "tag version" box, and copy everything from CHANGELOG.md into the release description.

Finally, add a Bugs, Improvements, and New Features section for the next version.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].