From 7b6a9b1e05c6f55bdbbfb3d6d7758cc475fd5b244713dfe7f9feb84eeb57cde7 Mon Sep 17 00:00:00 2001 From: Vladislav Date: Wed, 15 Apr 2026 14:04:49 +0200 Subject: [PATCH] =?UTF-8?q?Bot=20commit:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=84=D0=B0=D0=B9=D0=BB=20k8s/mq.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/mq.yaml | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 k8s/mq.yaml diff --git a/k8s/mq.yaml b/k8s/mq.yaml new file mode 100644 index 0000000..8b84764 --- /dev/null +++ b/k8s/mq.yaml @@ -0,0 +1,188 @@ +apiVersion: v1 +kind: Secret +metadata: + name: rabbitmq-credentials +type: Opaque +stringData: + username: admin + password: "$RABBITMQ_PASS" +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: rabbitmq-config +data: + rabbitmq.conf: | + listeners.tcp = none + listeners.ssl.default = 5671 + ssl_options.certfile = /etc/rabbitmq/tls/tls.crt + ssl_options.keyfile = /etc/rabbitmq/tls/tls.key + ssl_options.verify = verify_none + ssl_options.fail_if_no_peer_cert = false + management.listener.port = 15672 + management.listener.ssl = false +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: rabbitmq-data +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: rabbitmq +spec: + serviceName: rabbitmq + replicas: 1 + selector: + matchLabels: + app: rabbitmq + template: + metadata: + labels: + app: rabbitmq + spec: + imagePullSecrets: + - name: regcred + securityContext: + fsGroup: 999 + initContainers: + - name: fix-permissions + image: registry.spiritofweb.ru/busybox:1.36 + command: + - sh + - -c + - | + chown -R 999:999 /var/lib/rabbitmq + chmod 700 /var/lib/rabbitmq + if [ -f /var/lib/rabbitmq/.erlang.cookie ]; then + chmod 600 /var/lib/rabbitmq/.erlang.cookie + fi + volumeMounts: + - name: data + mountPath: /var/lib/rabbitmq + containers: + - name: rabbitmq + image: registry.spiritofweb.ru/rabbitmq:3.11-management + ports: + - containerPort: 5671 + name: amqps + - containerPort: 15672 + name: management + env: + - name: RABBITMQ_CONFIG_FILE + value: /etc/rabbitmq/conf/rabbitmq + - name: RABBITMQ_ERLANG_COOKIE + value: "$RABBITMQ_ERLANG_COOKIE" + - name: RABBITMQ_DEFAULT_USER + valueFrom: + secretKeyRef: + name: rabbitmq-credentials + key: username + - name: RABBITMQ_DEFAULT_PASS + valueFrom: + secretKeyRef: + name: rabbitmq-credentials + key: password + volumeMounts: + - name: config + mountPath: /etc/rabbitmq/conf + readOnly: true + - name: tls + mountPath: /etc/rabbitmq/tls + readOnly: true + - name: data + mountPath: /var/lib/rabbitmq + lifecycle: + postStart: + exec: + command: + - /bin/sh + - -c + - | + until rabbitmqctl status >/dev/null 2>&1; do + echo "Waiting for RabbitMQ to start..." + sleep 5 + done + echo "Creating virtual hosts" + rabbitmqctl add_vhost email || true + rabbitmqctl add_vhost tg || true + rabbitmqctl add_vhost vk || true + rabbitmqctl add_vhost fb || true + rabbitmqctl add_vhost ok || true + rabbitmqctl add_vhost max || true + rabbitmqctl add_vhost inst || true + + rabbitmqctl set_permissions -p email admin ".*" ".*" ".*" || true + rabbitmqctl set_permissions -p tg admin ".*" ".*" ".*" || true + rabbitmqctl set_permissions -p vk admin ".*" ".*" ".*" || true + rabbitmqctl set_permissions -p fb admin ".*" ".*" ".*" || true + rabbitmqctl set_permissions -p ok admin ".*" ".*" ".*" || true + rabbitmqctl set_permissions -p max admin ".*" ".*" ".*" || true + rabbitmqctl set_permissions -p inst admin ".*" ".*" ".*" || true + + rabbitmqctl set_user_tags admin administrator || true + + echo "Virtual hosts created and configured for admin user." + volumes: + - name: config + configMap: + name: rabbitmq-config + items: + - key: rabbitmq.conf + path: rabbitmq.conf + - name: tls + secret: + secretName: rabbitmq-tls + - name: data + persistentVolumeClaim: + claimName: rabbitmq-data + podManagementPolicy: Parallel + updateStrategy: + type: RollingUpdate +--- +apiVersion: v1 +kind: Service +metadata: + name: rabbitmq +spec: + selector: + app: rabbitmq + ports: + - name: amqps + port: 5671 + targetPort: 5671 + nodePort: 31023 + - name: management + port: 15672 + targetPort: 15672 + type: NodePort +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: rabbitmq-management + annotations: + cert-manager.io/cluster-issuer: letsencrypt +spec: + tls: + - hosts: + - rabbit.spiritofweb.ru + secretName: rabbitmq-tls + rules: + - host: rabbit.spiritofweb.ru + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: rabbitmq + port: + number: 15672