---
# Source: rabbitmq/templates/secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: rabbitmq
  namespace: default
  labels:
    app.kubernetes.io/instance: rabbitmq
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/version: 4.3.4
    helm.sh/chart: rabbitmq-0.21.13
  annotations:
    helm.sh/resource-policy: keep
type: Opaque
data:
  password: "Y29uZmlnaHViLXJhYmJpdG1xLXBhc3N3b3Jk"
  erlang-cookie: "Y29uZmlnaHViLXJhYmJpdG1xLWVybGFuZy1jb29raWU="
---
# Source: rabbitmq/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: rabbitmq-config
  namespace: default
  labels:
    app.kubernetes.io/instance: rabbitmq
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/version: 4.3.4
    helm.sh/chart: rabbitmq-0.21.13
data:
  rabbitmq.conf: |
    # Default RabbitMQ configuration
    loopback_users.guest = false
    listeners.tcp.default = 5672
    # Management plugin options
    management.tcp.port = 15672

    # Logging configuration
    log.console = true
    log.console.level = info
    log.file = false
  enabled_plugins: |
    [rabbitmq_management].
---
# Source: rabbitmq/templates/service-headless.yaml
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq-headless
  namespace: default
  labels:
    app.kubernetes.io/instance: rabbitmq
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/version: 4.3.4
    helm.sh/chart: rabbitmq-0.21.13
spec:
  clusterIP: None
  publishNotReadyAddresses: true
  ports:
    - port: 5672
      targetPort: amqp
      name: amqp
    - port: 4369
      targetPort: epmd
      name: epmd
    - port: 25672
      targetPort: dist
      name: dist
    - port: 15672
      targetPort: mgmt
      name: mgmt
  selector:
    app.kubernetes.io/instance: rabbitmq
    app.kubernetes.io/name: rabbitmq
---
# Source: rabbitmq/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  namespace: default
  labels:
    app.kubernetes.io/instance: rabbitmq
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/version: 4.3.4
    helm.sh/chart: rabbitmq-0.21.13
spec:
  type: ClusterIP
  trafficDistribution:
  ports:
    - port: 5672
      targetPort: amqp
      name: amqp
    - port: 15672
      targetPort: mgmt
      name: mgmt
  selector:
    app.kubernetes.io/instance: rabbitmq
    app.kubernetes.io/name: rabbitmq
---
# Source: rabbitmq/templates/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq
  namespace: default
  labels:
    app.kubernetes.io/instance: rabbitmq
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/version: 4.3.4
    helm.sh/chart: rabbitmq-0.21.13
spec:
  serviceName: rabbitmq-headless
  replicas: 1
  revisionHistoryLimit: 10
  podManagementPolicy: Parallel
  selector:
    matchLabels:
      app.kubernetes.io/instance: rabbitmq
      app.kubernetes.io/name: rabbitmq
  template:
    metadata:
      labels:
        app.kubernetes.io/instance: rabbitmq
        app.kubernetes.io/name: rabbitmq
    spec:
      automountServiceAccountToken: false
      serviceAccountName: default
      securityContext:
        fsGroup: 999
        fsGroupChangePolicy: OnRootMismatch
        seccompProfile:
          type: RuntimeDefault
      initContainers:
        - name: init-erlang-cookie
          image: "docker.io/busybox:1.37.0@sha256:b3255e7dfbcd10cb367af0d409747d511aeb66dfac98cf30e97e87e4207dd76f"
          imagePullPolicy: "IfNotPresent"
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
              - ALL
            readOnlyRootFilesystem: true
            runAsGroup: 999
            runAsNonRoot: true
            runAsUser: 999
          command:
            - sh
            - -c
            - |
              echo "$RABBITMQ_ERLANG_COOKIE" > /var/lib/rabbitmq/.erlang.cookie
              chmod 400 /var/lib/rabbitmq/.erlang.cookie
              chown $(id -u):$(id -g) /var/lib/rabbitmq/.erlang.cookie
          env:
            - name: RABBITMQ_ERLANG_COOKIE
              valueFrom:
                secretKeyRef:
                  name: rabbitmq
                  key: erlang-cookie
          volumeMounts:
            - name: data
              mountPath: /var/lib/rabbitmq
      containers:
        - name: rabbitmq
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
              - ALL
            readOnlyRootFilesystem: true
            runAsGroup: 999
            runAsNonRoot: true
            runAsUser: 999
          image: "docker.io/rabbitmq:4.3.4-management@sha256:c86dd1d32c1cbf3ff6547db9e359d7551b5973fe6e158e0edc64a3ed6ac69981"
          imagePullPolicy: Always
          ports:
            - name: amqp
              containerPort: 5672
            - name: mgmt
              containerPort: 15672
            - name: epmd
              containerPort: 4369
            - name: dist
              containerPort: 25672
          env:
            - name: RABBITMQ_DEFAULT_USER
              value: "admin"
            - name: RABBITMQ_DEFAULT_PASS
              valueFrom:
                secretKeyRef:
                  name: rabbitmq
                  key: password
            - name: RABBITMQ_ERLANG_COOKIE
              valueFrom:
                secretKeyRef:
                  name: rabbitmq
                  key: erlang-cookie
            - name: RABBITMQ_USE_LONGNAME
              value: "true"
            - name: NODE_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: RABBITMQ_NODENAME
              value: rabbit@$(NODE_NAME).rabbitmq-headless.default.svc.cluster.local
          livenessProbe:
            exec:
              command:
                - /bin/bash
                - -ec
                - rabbitmq-diagnostics -q check_running
            initialDelaySeconds: 120
            periodSeconds: 30
            timeoutSeconds: 20
            failureThreshold: 3
            successThreshold: 1
          readinessProbe:
            exec:
              command:
                - /bin/bash
                - -ec
                - rabbitmq-diagnostics -q check_running
            initialDelaySeconds: 10
            periodSeconds: 30
            timeoutSeconds: 20
            failureThreshold: 3
            successThreshold: 1
          volumeMounts:
            - name: data
              mountPath: /var/lib/rabbitmq
            - name: config
              mountPath: /etc/rabbitmq
            - name: logs
              mountPath: /var/log/rabbitmq
      volumes:
        - name: logs
          emptyDir: {}
        - name: config
          configMap:
            name: rabbitmq-config
  volumeClaimTemplates:
    - apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: data
        labels:
          app.kubernetes.io/instance: rabbitmq
          app.kubernetes.io/name: rabbitmq
      spec:
        accessModes:
          - "ReadWriteOnce"
        resources:
          requests:
            storage: "8Gi"
