This Kubernetes Operator is made to easily deploy AutoMQ onto your Kubernetes cluster.
Goals:
- Automatically deploy and manage a AutoMQ cluster
- Ability to be managed by other Operators
- Auto rolling upgrade and restart
- Grafana dashboard
- Pod Affinity and Anti-Affinity
AutoMQ is a message queue system that is designed to be easy to use and deploy. It is built on top of the automq messaging system and provides a simple API for sending and receiving messages.
This operator is designed to make it easy to deploy AutoMQ onto your Kubernetes cluster. It will automatically deploy and manage a AutoMQ cluster, and can be managed by other Operators.
- Kubernetes 1.21+
- Helm 3.x.x
- StorageClass
- S3 storage ( minio, aws s3, etc )
- Cert-Manager
curl -sfL https://raw.githubusercontent.com/labring/sealos/v5.0.0/scripts/install.sh | sh -s v5.0.0 labring/sealos
sealos run labring/kubernetes:v1.27.7
sealos run labring/helm:v3.9.4 labring/calico:v3.26.5
sealos run labring/openebs:v3.9.0
sealos run labring/cert-manager:v1.14.6
sealos run labring/minio:RELEASE.2024-01-11T07-46-16Z
sealos run labring/kube-prometheus-stack:v0.63.0
sealos run labring/kafka-ui:v0.7.1
-
Using sealos images install operator
sealos run ghcr.io/cuisongliu/automq-operator-sealos:latest
-
Using helm chart install operator
git clone https://github.com/cuisongliu/automq-operator.git cd automq-operator IMG=ghcr.io/cuisongliu/automq-operator:latest make set-image cd deploy bash install.sh
- Using sealos images install operator
sealos run ghcr.io/cuisongliu/automq-operator-sealos:v0.1.0
- Using helm chart install operator
wget -q https://github.com/cuisongliu/automq-operator/releases/download/v0.1.0/automq-operator-v0.1.0-sealos.tgz mkdir -p automq-operator && tar -zxvf automq-operator-v0.1.0-sealos.tgz -C automq-operator cd automq-operator/deploy && bash install.sh
cat <<EOF | kubectl apply -f -
apiVersion: infra.cuisongliu.github.com/v1beta1
kind: AutoMQ
metadata:
name: automq
spec:
s3:
endpoint: http://minio.minio.svc.cluster.local:9000
region: cn-north-1
accessKeyID: admin
secretAccessKey: minio123
bucket: automq
enablePathStyle: true
nodePort: 32009
broker:
replicas: 3
controller:
replicas: 3
jvmOptions:
- -Xms1g
- -Xmx1g
- -XX:MetaspaceSize=96m
clusterID: "rZdE0DjZSrqy96PXrMUZVw"
EOF
kubectl get pods -n default
kubectl get svc -n default
kubectl get automq -A -o yaml | kubectl delete -f -
helm delete -n automq-operator automq-operator
Have a look through existing Issues and Pull Requests that you could help with. If you'd like to request a feature or report a bug, please create a GitHub Issue using one of the templates provided.
This project aims to follow the Kubernetes Operator pattern.
It uses Controllers, which provide a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster.
- Install the CRDs into the cluster:
make install
- Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):
make run
NOTE: You can also run this in one step by running: make install run
If you are editing the API definitions, generate the manifests such as CRs or CRDs using:
make generate && make manifests
NOTE: Run make --help
for more information on all potential make
targets
More information can be found via the Kubebuilder Documentation
Copyright 2024 cuisongliu.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.