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: - mongo - "--eval" - db.runCommand('ping').ok initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: exec: command: - mongo - "--eval" - db.runCommand('ping').ok initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 5 failureThreshold: 3 --- 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: v1 kind: Secret metadata: name: rabbitmq-secrets data: RABBITMQ_DEFAULT_USER: dXNlcm5hbWU= RABBITMQ_DEFAULT_PASS: cGFzc3dvcmQ= --- 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/azurelinux/base/rabbitmq-server:3.13 ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http envFrom: - secretRef: name: rabbitmq-secrets resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi startupProbe: tcpSocket: port: 5672 failureThreshold: 30 initialDelaySeconds: 10 periodSeconds: 10 readinessProbe: tcpSocket: port: 5672 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 livenessProbe: tcpSocket: port: 5672 failureThreshold: 3 initialDelaySeconds: 30 periodSeconds: 10 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: v1 kind: ConfigMap metadata: name: order-service-configs data: ORDER_QUEUE_PORT: "5672" ORDER_QUEUE_HOSTNAME: "rabbitmq" ORDER_QUEUE_NAME: "orders" FASTIFY_ADDRESS: "0.0.0.0" --- apiVersion: v1 kind: Secret metadata: name: order-service-secrets data: ORDER_QUEUE_USERNAME: dXNlcm5hbWU= ORDER_QUEUE_PASSWORD: cGFzc3dvcmQ= --- 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:2.1.0 ports: - containerPort: 3000 envFrom: - configMapRef: name: order-service-configs - secretRef: name: order-service-secrets resources: requests: cpu: 1m memory: 50Mi limits: cpu: 100m memory: 256Mi startupProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 20 periodSeconds: 10 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:1.37.0 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:2.1.0 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:2.1.0 ports: - containerPort: 3002 env: - name: AI_SERVICE_URL value: "http://ai-service:5001/" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi 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:2.1.0 ports: - containerPort: 8080 name: store-front 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:2.1.0 ports: - containerPort: 8081 name: store-admin 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:2.1.0 env: - name: ORDER_SERVICE_URL value: http://order-service:3000/ - name: ORDERS_PER_HOUR value: "100" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi readinessProbe: exec: command: - cat - /proc/1/status failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: exec: command: - cat - /proc/1/status failureThreshold: 5 initialDelaySeconds: 10 periodSeconds: 10 --- 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:2.1.0 env: - name: MAKELINE_SERVICE_URL value: http://makeline-service:3001 - name: ORDERS_PER_HOUR value: "100" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi readinessProbe: exec: command: - cat - /proc/1/status failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: exec: command: - cat - /proc/1/status failureThreshold: 5 initialDelaySeconds: 10 periodSeconds: 10