apiVersion: apps/v1 kind: StatefulSet metadata: name: kafka namespace: general-bots spec: serviceName: kafka replicas: 3 selector: matchLabels: app: kafka template: metadata: labels: app: kafka spec: containers: - name: kafka image: confluentinc/cp-kafka:7.4.0 ports: - containerPort: 9092 env: - name: KAFKA_ZOOKEEPER_CONNECT value: zookeeper:2181 - name: KAFKA_ADVERTISED_LISTENERS value: PLAINTEXT://kafka-$(POD_NAME).kafka:9092 - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name volumeMounts: - name: data mountPath: /var/lib/kafka volumeClaimTemplates: - metadata: name: data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 100Gi --- apiVersion: v1 kind: Service metadata: name: kafka namespace: general-bots spec: clusterIP: None selector: app: kafka ports: - port: 9092 --- apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq namespace: general-bots spec: serviceName: rabbitmq replicas: 3 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: containers: - name: rabbitmq image: rabbitmq:3.12-management ports: - containerPort: 5672 - containerPort: 15672 env: - name: RABBITMQ_ERLANG_COOKIE valueFrom: secretKeyRef: name: rabbitmq-secret ```bash # Continuing k8s/base/messaging.yaml cat >> k8s/base/messaging.yaml << 'EOL' key: erlang-cookie volumeMounts: - name: data mountPath: /var/lib/rabbitmq volumeClaimTemplates: - metadata: name: data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 10Gi --- apiVersion: v1 kind: Service metadata: name: rabbitmq namespace: general-bots spec: selector: app: rabbitmq ports: - name: amqp port: 5672 - name: management port: 15672 --- apiVersion: apps/v1 kind: Deployment metadata: name: websocket namespace: general-bots spec: replicas: 3 selector: matchLabels: app: websocket template: metadata: labels: app: websocket spec: containers: - name: websocket image: generalbotsproject/websocket:latest ports: - containerPort: 8080 env: - name: REDIS_URL value: redis://redis:6379 - name: KAFKA_BROKERS value: kafka:9092 resources: requests: memory: "256Mi" cpu: "250m" limits: memory: "512Mi" cpu: "500m" --- apiVersion: v1 kind: Service metadata: name: websocket namespace: general-bots spec: selector: app: websocket ports: - port: 8080 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: websocket namespace: general-bots annotations: nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" spec: rules: - host: ws.general-bots.io http: paths: - path: / pathType: Prefix backend: service: name: websocket port: number: 8080