RabbitMQ Operator 部署
- 下載並部署Operator,默認部署在rabbitmq-system命名空間,如果需要修改命名空間可以先下載yaml文件,修改命名空間后再執行部署命令
kubectl apply -f "https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"
- 編寫yaml文件准備創建RabbitmqCluster CRD資源實例,除了實例名字為必需項以外,其他配置均不是必須填寫,可以按需求添加配置
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
labels: #實例標簽
app: rabbitmq
annotations: #實例注釋
some: annotation
name: rabbitmq-sample #實例名字
spec:
image: my-private-registry/rabbitmq:my-custom-tag #實例使用鏡像
service: #實例的service
type: ClusterIP #service類型
annotations: #service注釋
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
persistence: #配置持久化
storage: 5Gi #pvc大小
storageClassName: longhorn #使用的storageClass名字
replicas: 3 #配置實例個數
resources: #配置實例資源限制
limits:
cpu: 800m
memory: 1Gi
requests:
cpu: 200m
memory: 512Mi
affinity: #配置實例親和性
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node-1
tolerations: #配置pod容忍
- key: "dedicated"
operator: "Equal"
value: "rabbitmq"
effect: "NoSchedule"
rabbitmq:
additionalConfig: | #為實例添加自定義RabbitMQ配置
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
cluster_formation.k8s.host = kubernetes.default
cluster_formation.k8s.address_type = hostname
cluster_formation.node_cleanup.interval = 30
cluster_formation.node_cleanup.only_log_warning = true
cluster_partition_handling = pause_minority
queue_master_locator = min-masters
channel_max = 1050
envConfig: | #為實例添加自定義環境變量
RABBITMQ_DISTRIBUTION_BUFFER_SIZE=some_value
additionalPlugins: #為實例添加自定義插件
- rabbitmq_top
- rabbitmq_shovel
terminationGracePeriodSeconds: 60 #配置實例終止寬限期
override: #配置實例覆蓋默認配置
service:
spec:
ports:
- name: additional-port # adds an additional port on the service
protocol: TCP
port: 12345
statefulSet:
spec:
template:
spec:
containers:
- name: rabbitmq
ports:
- containerPort: 12345 # opens an additional port on the rabbitmq server container
name: additional-port
protocol: TCP
- 創建/更新RabbitMQ實例
kubectl apply -f rabbitmq-sample.yml -n NAMESPACE
- 獲取RabbitMQ實例默認管理員賬號密碼,通過15692端口登錄RabbitMQ管理頁面
kubectl -n NAMESPACE get secret rabbitmq-sample-default-user -o jsonpath="{.data.username}" | base64 --decode #賬號
kubectl -n NAMESPACE get secret rabbitmq-sample-default-user -o jsonpath="{.data.password}" | base64 --decode #密碼