apiVersion: apps/v1 kind: StatefulSet metadata: name: mongodb spec: serviceName: mongodb replicas: 1 selector: matchLabels: app: mongodb template: metadata: labels: app: mongodb spec: nodeSelector: "kubernetes.io/os": linux containers: - name: mongodb image: mcr.microsoft.com/mirror/docker/library/mongo:4.2 ports: - containerPort: 27017 name: mongodb resources: requests: cpu: 5m memory: 75Mi limits: cpu: 25m memory: 1024Mi livenessProbe: exec: command: - mongosh - --eval - db.runCommand('ping').ok initialDelaySeconds: 5 periodSeconds: 5 --- apiVersion: v1 kind: Service metadata: name: mongodb spec: ports: - port: 27017 selector: app: mongodb type: ClusterIP --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 100m memory: 256Mi startupProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 15 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 100m memory: 256Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: makeline-service spec: replicas: 1 selector: matchLabels: app: makeline-service template: metadata: labels: app: makeline-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: makeline-service image: ghcr.io/azure-samples/aks-store-demo/makeline-service:latest ports: - containerPort: 3001 env: - name: ORDER_QUEUE_URI value: "amqp://rabbitmq:5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: ORDER_DB_URI value: "mongodb://mongodb:27017" - name: ORDER_DB_NAME value: "orderdb" - name: ORDER_DB_COLLECTION_NAME value: "orders" resources: requests: cpu: 1m memory: 6Mi limits: cpu: 5m memory: 20Mi startupProbe: httpGet: path: /health port: 3001 failureThreshold: 10 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 3001 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3001 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: makeline-service spec: type: ClusterIP ports: - name: http port: 3001 targetPort: 3001 selector: app: makeline-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 env: - name: AI_SERVICE_URL value: "http://ai-service:5001/" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 10Mi readinessProbe: httpGet: path: /health port: 3002 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3002 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi startupProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 3 livenessProbe: httpGet: path: /health port: 8080 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: name: store-admin spec: replicas: 1 selector: matchLabels: app: store-admin template: metadata: labels: app: store-admin spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-admin image: ghcr.io/azure-samples/aks-store-demo/store-admin:latest ports: - containerPort: 8081 name: store-admin env: - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" - name: VUE_APP_MAKELINE_SERVICE_URL value: "http://makeline-service:3001/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi startupProbe: httpGet: path: /health port: 8081 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 8081 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 8081 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: store-admin spec: ports: - port: 80 targetPort: 8081 selector: app: store-admin type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: name: virtual-customer spec: replicas: 1 selector: matchLabels: app: virtual-customer template: metadata: labels: app: virtual-customer spec: nodeSelector: "kubernetes.io/os": linux containers: - name: virtual-customer image: ghcr.io/azure-samples/aks-store-demo/virtual-customer:latest env: - name: ORDER_SERVICE_URL value: http://order-service:3000/ - name: ORDERS_PER_HOUR value: "100" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: apps/v1 kind: Deployment metadata: name: virtual-worker spec: replicas: 1 selector: matchLabels: app: virtual-worker template: metadata: labels: app: virtual-worker spec: nodeSelector: "kubernetes.io/os": linux containers: - name: virtual-worker image: ghcr.io/azure-samples/aks-store-demo/virtual-worker:latest env: - name: MAKELINE_SERVICE_URL value: http://makeline-service:3001 - name: ORDERS_PER_HOUR value: "100" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi