Commit 3fbecfb0 by Ido-Sheffer Committed by Denise

Added KubeMQ

parent 5838c77a
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
kubemq/.git
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
apiVersion: v1
description: Message broker supports message patterns of Active Queue, Command-Query and Pub-Sub events.
appVersion: "1.0"
name: kubemq
keywords:
- message
- event
- queue
home: https://kubemq.io/
version: 0.1.0
sources:
- https://github.com/kubemq-io/docs
maintainers:
- name: ido-sheffer
email: ido.sheffer@kubemq.io
icon: file://./kubemqlogo.png
# KubeMQ Helm Chart
For more information on KubeMQ configuration head to:
* https://docs.kubemq.io/installation/configuration.html
**What is KubeMQ?**
Enterprise-grade message broker native for Docker and Kubernetes. Delivered in a production-ready cluster, and designed for any type of workload. KubeMQ is provided as a small, lightweight Docker container, designed for any workload and architecture running in Kubernetes or any other container orchestration system which support Docker.
**Main Features**
All-batteries included Messaging Broker for Kubernetes environment
Blazing fast (written in Go), small and lightweight Docker container
Asynchronous and Synchronous messaging with support for Exactly One Delivery, At Most Once Delivery and At Least Once Delivery models
Supports durable FIFO based Queue, Publish-Subscribe Events, Publish-Subscribe with Persistence (Events Store), RPC Command and Query messaging patterns
Supports gRPC, Rest and WebSocket Transport protocols with TLS support (both RPC and Stream modes)
Runs in Single and cluster modes
No Message broker configuration needed (i.e., queues, exchanges)
Built-in Caching, Metrics, and Tracing
.Net, Java, Python, Go SDKs
Monitoring Dashboard.
**Token registration**
A KubeMQ token is requiered, recieve the token in 30 sec with google/github/email registration in this link: https://account.kubemq.io/login/register
labels:
io.cattle.role: project
io.rancher.certified: partner
questions:
- variable: token
default: ""
description: "Enter your Kubemq token"
label: KubeMQ token
type: string
required: true
group: "General setting"
- variable: defaultImage
default: "true"
description: "Use default Docker image"
label: Use Default Image
type: boolean
group: "Container Images"
show_subquestion_if: false
subquestions:
- variable: image.tag
default: "latest"
description: "Elasticsearch image tag"
type: string
label: Elasticsearch Image Tag
- variable: replicaCount
default: "3"
description: "Amount of kubeMQ stateful set replicas"
label: KubeMQ Replicas
type: enum
group: "General setting"
options:
- "1"
- "3"
- "5"
- variable: service.type
default: "NodePort"
description: "How do you intend to expose service to incoming traffic"
label: Service type
type: enum
group: "Service Settings"
options:
- "NodePort"
- "LoadBalancer"
- "ClusterIP"
- variable: volume.enabled
default: "false"
description: "Enable persistent volume for Kubemq"
type: boolean
required: true
label: KubeMQ Persistent Volume Enabled
show_subquestion_if: true
group: "KubeMQ Persistent volume"
subquestions:
- variable: volume.storageClass
default: ""
description: "If undefined or set to null, using the default StorageClass. Defaults to null."
type: storageclass
label: Storage Class for KubeMQ
- variable: volume.size
default: "1Gi"
description: "KubeMQ persistent volume size"
required: true
type: string
label: KubeMQ Persistent Volume Size
\ No newline at end of file
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "kubemq.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "kubemq.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "kubemq.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "kubemq.labels" -}}
app.kubernetes.io/name: {{ include "kubemq.name" . }}
helm.sh/chart: {{ include "kubemq.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
apiVersion: v1
kind: Service
metadata:
name: kubemq-cluster-{{ .Release.Name }}-service
spec:
ports:
- name: metrics-port
port: {{ .Values.kubeMQPort }}
protocol: TCP
targetPort: {{ .Values.kubeMQPort }}
- name: grpc-port
port: {{ .Values.grpcPort }}
protocol: TCP
targetPort: {{ .Values.grpcPort }}
- name: cluster-port
port: {{ .Values.clusterPort }}
protocol: TCP
targetPort: {{ .Values.clusterPort }}
- name: rest-port
port: {{ .Values.restPort }}
protocol: TCP
targetPort: {{ .Values.restPort }}
sessionAffinity: None
type: {{ .Values.service.type }}
selector:
app: kubemq-cluster-{{ .Release.Name }}
\ No newline at end of file
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kubemq-cluster-{{ .Release.Name }}-state
spec:
selector:
matchLabels:
app: kubemq-cluster-{{ .Release.Name }}
replicas: {{ .Values.replicaCount }}
serviceName: kubemq-cluster-{{ .Release.Name }}
template:
metadata:
labels:
app: kubemq-cluster-{{ .Release.Name }}
spec:
containers:
- env:
- name: KUBEMQ_TOKEN
value: {{ required "A Valid token value must be set" .Values.token }}
- name: CLUSTER_ROUTES
value: "kubemq-cluster-{{ .Release.Name }}-service:{{ .Values.clusterPort }}"
- name: CLUSTER_PORT
value: {{ .Values.clusterPort | quote }}
- name: CLUSTER_ENABLE
value: 'true'
- name: GRPC_PORT
value: {{ .Values.grpcPort | quote }}
- name: REST_PORT
value: {{ .Values.restPort | quote }}
- name: KUBEMQ_PORT
value: {{ .Values.kubeMQPort | quote }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: kubemq-cluster-{{ .Release.Name }}
ports:
- containerPort: {{ .Values.grpcPort }}
name: grpc-port
protocol: TCP
- containerPort: {{ .Values.kubeMQPort }}
name: metrics-port
protocol: TCP
- containerPort: {{ .Values.restPort }}
name: rest-port
protocol: TCP
- containerPort: {{ .Values.clusterPort }}
name: cluster-port
protocol: TCP
{{- if .Values.volume.enabled }}
volumeMounts:
- mountPath: {{ .Values.volume.mountPath | quote }}
name: {{ .Values.volume.name }}-{{ .Release.Name }}
volumeClaimTemplates:
- metadata:
name: {{ .Values.volume.name }}-{{ .Release.Name }}
spec:
accessModes:
- {{ .Values.volume.accessMode | quote }}
{{- if .Values.volume.storageClass }}
{{- if (eq "-" .Values.volume.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.volume.storageClass }}"
{{- end }}
{{- end }}
resources:
requests:
storage: "{{ .Values.volume.size }}"
{{ end }}
restartPolicy: Always
\ No newline at end of file
replicaCount: 3
grpcPort: 50000
restPort: 9090
kubeMQPort: 8080
clusterPort: 5228
token: null
volume:
enabled: false
size: 1Gi
mountPath: /store
accessMode: "ReadWriteOnce"
name: kubemq-pvc
storageClass: ""
image:
repository: kubemq/kubemq
tag: latest
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
service:
type: NodePort
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment