Add base kubernetes support

This commit is contained in:
Urtzi Alfaro
2025-09-27 11:18:13 +02:00
parent a27f159e24
commit 63a3f9c77a
63 changed files with 5826 additions and 170 deletions

View File

@@ -0,0 +1,262 @@
# Bakery IA Kubernetes Configuration
This directory contains Kubernetes manifests for deploying the Bakery IA forecasting platform in a local development environment.
## Prerequisites
1. **Kubernetes Cluster**: Ensure you have a local Kubernetes cluster running (minikube, kind, Docker Desktop, etc.)
2. **kubectl**: Install and configure kubectl to communicate with your cluster
3. **Kustomize**: Built into kubectl v1.14+, or install separately
4. **NGINX Ingress Controller**: Required for ingress functionality
### Install NGINX Ingress Controller
```bash
# For minikube
minikube addons enable ingress
# For kind
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
# For Docker Desktop
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
```
## Directory Structure
```
infrastructure/kubernetes/
├── base/ # Base Kubernetes resources
│ ├── namespace.yaml # Namespace definition
│ ├── configmap.yaml # Shared configuration
│ ├── secrets.yaml # Secrets (base64 encoded)
│ ├── ingress.yaml # Ingress rules
│ └── kustomization.yaml # Base kustomization
├── components/ # Individual component manifests
│ ├── auth/ # Auth service
│ ├── tenant/ # Tenant service
│ ├── training/ # Training service
│ ├── forecasting/ # Forecasting service
│ ├── sales/ # Sales service
│ ├── external/ # External service
│ ├── notification/ # Notification service
│ ├── inventory/ # Inventory service
│ ├── recipes/ # Recipes service
│ ├── suppliers/ # Suppliers service
│ ├── pos/ # POS service
│ ├── orders/ # Orders service
│ ├── production/ # Production service
│ ├── alert-processor/ # Alert processor
│ ├── frontend/ # Frontend application
│ ├── databases/ # Database deployments
│ └── infrastructure/ # Infrastructure components (gateway, etc.)
└── overlays/
└── dev/ # Development environment overlay
├── kustomization.yaml # Dev-specific kustomization
└── dev-patches.yaml # Development patches
```
## Quick Start
### 1. Build and Deploy Images (if needed)
First, ensure your Docker images are built and available to your Kubernetes cluster:
```bash
# Build all services
docker-compose build
# For minikube, use minikube's Docker daemon
eval $(minikube docker-env)
docker-compose build
# For kind, load images into the cluster
kind load docker-image bakery/auth-service:latest
kind load docker-image bakery/tenant-service:latest
# ... repeat for all services
```
### 2. Deploy to Kubernetes
```bash
# Deploy the development environment
kubectl apply -k infrastructure/kubernetes/overlays/dev/
# Check deployment status
kubectl get pods -n bakery-ia
kubectl get services -n bakery-ia
kubectl get ingress -n bakery-ia
```
### 3. Access the Application
Add the following to your `/etc/hosts` file (or Windows equivalent):
```
127.0.0.1 bakery-ia.local
127.0.0.1 api.bakery-ia.local
127.0.0.1 monitoring.bakery-ia.local
```
For minikube, get the ingress IP:
```bash
minikube ip
# Use this IP instead of 127.0.0.1 in your hosts file
```
Access the application:
- Frontend: http://bakery-ia.local or http://localhost:3000
- API Gateway: http://api.bakery-ia.local or http://localhost:8000/api
- Individual services: Check service NodePorts or use port-forwarding
## Port Forwarding for Direct Access
If you prefer to access services directly without ingress:
```bash
# Frontend
kubectl port-forward -n bakery-ia svc/frontend-service 3000:3000
# Gateway
kubectl port-forward -n bakery-ia svc/gateway-service 8000:8000
# Auth Service
kubectl port-forward -n bakery-ia svc/auth-service 8001:8000
# Redis
kubectl port-forward -n bakery-ia svc/redis-service 6379:6379
# Database example (auth-db)
kubectl port-forward -n bakery-ia svc/auth-db-service 5432:5432
```
## Managing the Deployment
### Check Status
```bash
# Check all resources
kubectl get all -n bakery-ia
# Check specific resource types
kubectl get pods -n bakery-ia
kubectl get services -n bakery-ia
kubectl get deployments -n bakery-ia
kubectl get pvc -n bakery-ia
# Check logs
kubectl logs -n bakery-ia deployment/auth-service
kubectl logs -n bakery-ia deployment/frontend -f # Follow logs
```
### Update Deployments
```bash
# After making changes to manifests
kubectl apply -k infrastructure/kubernetes/overlays/dev/
# Force restart a deployment
kubectl rollout restart -n bakery-ia deployment/auth-service
# Check rollout status
kubectl rollout status -n bakery-ia deployment/auth-service
```
### Scaling Services
```bash
# Scale a service
kubectl scale -n bakery-ia deployment/auth-service --replicas=3
# Or edit the kustomization.yaml replicas section and reapply
```
### Clean Up
```bash
# Delete everything
kubectl delete -k infrastructure/kubernetes/overlays/dev/
# Or delete just the namespace (removes everything in it)
kubectl delete namespace bakery-ia
```
## Configuration
### Secrets
The `secrets.yaml` file contains base64-encoded secrets. For production, these should be:
1. Generated securely
2. Managed through external secret management systems
3. Not committed to version control
To encode/decode secrets:
```bash
# Encode
echo -n "your-secret-value" | base64
# Decode
echo "eW91ci1zZWNyZXQtdmFsdWU=" | base64 -d
```
### Environment-Specific Configuration
Modify the `overlays/dev/` files to customize the development environment:
- `kustomization.yaml`: Image tags, replicas, resource references
- `dev-patches.yaml`: Environment-specific configuration overrides
### Adding New Services
1. Create a new directory under `components/`
2. Add the service YAML manifest
3. Update `base/kustomization.yaml` to include the new resource
4. Update configuration maps and secrets as needed
## Troubleshooting
### Common Issues
1. **Images not found**: Ensure images are built and available to the cluster
2. **Pending pods**: Check resource requests and cluster capacity
3. **CrashLoopBackOff**: Check logs and environment variables
4. **Service not accessible**: Verify ingress controller is running and hosts file is configured
### Debugging Commands
```bash
# Describe resources for detailed information
kubectl describe pod -n bakery-ia <pod-name>
kubectl describe deployment -n bakery-ia <deployment-name>
# Get events
kubectl get events -n bakery-ia --sort-by='.firstTimestamp'
# Execute commands in pods
kubectl exec -n bakery-ia -it <pod-name> -- bash
kubectl exec -n bakery-ia -it <pod-name> -- env
# Check resource usage
kubectl top pods -n bakery-ia
kubectl top nodes
```
## Production Considerations
For production deployment, consider:
1. **Resource Limits**: Set appropriate CPU and memory limits
2. **Persistent Volumes**: Use proper storage classes for databases
3. **Secrets Management**: Use external secret management (HashiCorp Vault, AWS Secrets Manager, etc.)
4. **Monitoring**: Deploy Prometheus and Grafana
5. **Backup**: Implement database backup strategies
6. **High Availability**: Use multiple replicas and anti-affinity rules
7. **Security**: Network policies, RBAC, pod security policies
8. **CI/CD**: Integrate with your deployment pipeline
## Next Steps
1. Add monitoring with Prometheus and Grafana
2. Implement proper logging with ELK stack or similar
3. Add health checks and metrics endpoints
4. Implement automated testing
5. Set up CI/CD pipelines for automated deployments

View File

@@ -0,0 +1,85 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: bakery-config
namespace: bakery-ia
labels:
app.kubernetes.io/name: bakery-ia
app.kubernetes.io/component: config
data:
# Environment Settings
ENVIRONMENT: "development"
DEBUG: "true"
LOG_LEVEL: "INFO"
AUTO_RELOAD: "true"
PROFILING_ENABLED: "false"
MOCK_EXTERNAL_APIS: "false"
TESTING: "false"
# Service Discovery
REDIS_HOST: "redis-service"
REDIS_PORT: "6379"
RABBITMQ_HOST: "rabbitmq-service"
RABBITMQ_PORT: "5672"
RABBITMQ_MANAGEMENT_PORT: "15672"
RABBITMQ_VHOST: "/"
# Database Hosts
AUTH_DB_HOST: "auth-db-service"
TENANT_DB_HOST: "tenant-db-service"
TRAINING_DB_HOST: "training-db-service"
FORECASTING_DB_HOST: "forecasting-db-service"
SALES_DB_HOST: "sales-db-service"
EXTERNAL_DB_HOST: "external-db-service"
NOTIFICATION_DB_HOST: "notification-db-service"
INVENTORY_DB_HOST: "inventory-db-service"
RECIPES_DB_HOST: "recipes-db-service"
SUPPLIERS_DB_HOST: "suppliers-db-service"
POS_DB_HOST: "pos-db-service"
ORDERS_DB_HOST: "orders-db-service"
PRODUCTION_DB_HOST: "production-db-service"
ALERT_PROCESSOR_DB_HOST: "alert-processor-db-service"
# Database Ports
DB_PORT: "5432"
# Database Names
AUTH_DB_NAME: "auth_db"
TENANT_DB_NAME: "tenant_db"
TRAINING_DB_NAME: "training_db"
FORECASTING_DB_NAME: "forecasting_db"
SALES_DB_NAME: "sales_db"
EXTERNAL_DB_NAME: "external_db"
NOTIFICATION_DB_NAME: "notification_db"
INVENTORY_DB_NAME: "inventory_db"
RECIPES_DB_NAME: "recipes_db"
SUPPLIERS_DB_NAME: "suppliers_db"
POS_DB_NAME: "pos_db"
ORDERS_DB_NAME: "orders_db"
PRODUCTION_DB_NAME: "production_db"
ALERT_PROCESSOR_DB_NAME: "alert_processor_db"
# PostgreSQL Settings
POSTGRES_INITDB_ARGS: "--auth-host=scram-sha-256"
# Service URLs (internal cluster communication)
AUTH_SERVICE_URL: "http://auth-service:8000"
TENANT_SERVICE_URL: "http://tenant-service:8000"
TRAINING_SERVICE_URL: "http://training-service:8000"
FORECASTING_SERVICE_URL: "http://forecasting-service:8000"
SALES_SERVICE_URL: "http://sales-service:8000"
EXTERNAL_SERVICE_URL: "http://external-service:8000"
NOTIFICATION_SERVICE_URL: "http://notification-service:8000"
INVENTORY_SERVICE_URL: "http://inventory-service:8000"
RECIPES_SERVICE_URL: "http://recipes-service:8000"
SUPPLIERS_SERVICE_URL: "http://suppliers-service:8000"
POS_SERVICE_URL: "http://pos-service:8000"
ORDERS_SERVICE_URL: "http://orders-service:8000"
PRODUCTION_SERVICE_URL: "http://production-service:8000"
# Cache Settings
REDIS_MAX_MEMORY: "512mb"
# Monitoring
PROMETHEUS_RETENTION: "200h"
TIMEZONE: "UTC"

View File

@@ -0,0 +1,69 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: bakery-ingress
namespace: bakery-ia
labels:
app.kubernetes.io/name: bakery-ia
app.kubernetes.io/component: ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/cors-allow-methods: "GET, POST, PUT, DELETE, OPTIONS"
nginx.ingress.kubernetes.io/cors-allow-headers: "Content-Type, Authorization"
spec:
ingressClassName: nginx
rules:
- host: bakery-ia.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 3000
- path: /api
pathType: Prefix
backend:
service:
name: gateway-service
port:
number: 8000
- path: /auth
pathType: Prefix
backend:
service:
name: auth-service
port:
number: 8000
- host: api.bakery-ia.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: gateway-service
port:
number: 8000
- host: monitoring.bakery-ia.local
http:
paths:
- path: /grafana
pathType: Prefix
backend:
service:
name: grafana-service
port:
number: 3000
- path: /prometheus
pathType: Prefix
backend:
service:
name: prometheus-service
port:
number: 9090

View File

@@ -0,0 +1,90 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
metadata:
name: bakery-ia-base
resources:
# Base configuration
- namespace.yaml
- configmap.yaml
- secrets.yaml
- ingress.yaml
# Infrastructure components
- components/databases/redis.yaml
- components/databases/rabbitmq.yaml
- components/infrastructure/gateway-service.yaml
# Database services
- components/databases/auth-db.yaml
- components/databases/tenant-db.yaml
- components/databases/training-db.yaml
- components/databases/forecasting-db.yaml
- components/databases/sales-db.yaml
- components/databases/external-db.yaml
- components/databases/notification-db.yaml
- components/databases/inventory-db.yaml
- components/databases/recipes-db.yaml
- components/databases/suppliers-db.yaml
- components/databases/pos-db.yaml
- components/databases/orders-db.yaml
- components/databases/production-db.yaml
- components/databases/alert-processor-db.yaml
# Microservices
- components/auth/auth-service.yaml
- components/tenant/tenant-service.yaml
- components/training/training-service.yaml
- components/forecasting/forecasting-service.yaml
- components/sales/sales-service.yaml
- components/external/external-service.yaml
- components/notification/notification-service.yaml
- components/inventory/inventory-service.yaml
- components/recipes/recipes-service.yaml
- components/suppliers/suppliers-service.yaml
- components/pos/pos-service.yaml
- components/orders/orders-service.yaml
- components/production/production-service.yaml
- components/alert-processor/alert-processor-service.yaml
# Frontend
- components/frontend/frontend-service.yaml
commonLabels:
app.kubernetes.io/part-of: bakery-ia
app.kubernetes.io/managed-by: kustomize
images:
- name: bakery/auth-service
newTag: latest
- name: bakery/tenant-service
newTag: latest
- name: bakery/training-service
newTag: latest
- name: bakery/forecasting-service
newTag: latest
- name: bakery/sales-service
newTag: latest
- name: bakery/external-service
newTag: latest
- name: bakery/notification-service
newTag: latest
- name: bakery/inventory-service
newTag: latest
- name: bakery/recipes-service
newTag: latest
- name: bakery/suppliers-service
newTag: latest
- name: bakery/pos-service
newTag: latest
- name: bakery/orders-service
newTag: latest
- name: bakery/production-service
newTag: latest
- name: bakery/alert-processor
newTag: latest
- name: bakery/gateway
newTag: latest
- name: bakery/dashboard
newTag: latest

View File

@@ -0,0 +1,9 @@
apiVersion: v1
kind: Namespace
metadata:
name: bakery-ia
labels:
name: bakery-ia
environment: local
app.kubernetes.io/name: bakery-ia
app.kubernetes.io/part-of: bakery-forecasting-platform

View File

@@ -0,0 +1,96 @@
apiVersion: v1
kind: Secret
metadata:
name: database-secrets
namespace: bakery-ia
labels:
app.kubernetes.io/name: bakery-ia
app.kubernetes.io/component: database
type: Opaque
data:
# Database Users (base64 encoded)
AUTH_DB_USER: YmFrZXJ5X2F1dGg= # bakery_auth
TENANT_DB_USER: YmFrZXJ5X3RlbmFudA== # bakery_tenant
TRAINING_DB_USER: YmFrZXJ5X3RyYWluaW5n # bakery_training
FORECASTING_DB_USER: YmFrZXJ5X2ZvcmVjYXN0aW5n # bakery_forecasting
SALES_DB_USER: YmFrZXJ5X3NhbGVz # bakery_sales
EXTERNAL_DB_USER: YmFrZXJ5X2V4dGVybmFs # bakery_external
NOTIFICATION_DB_USER: YmFrZXJ5X25vdGlmaWNhdGlvbg== # bakery_notification
INVENTORY_DB_USER: YmFrZXJ5X2ludmVudG9yeQ== # bakery_inventory
RECIPES_DB_USER: YmFrZXJ5X3JlY2lwZXM= # bakery_recipes
SUPPLIERS_DB_USER: YmFrZXJ5X3N1cHBsaWVycw== # bakery_suppliers
POS_DB_USER: YmFrZXJ5X3Bvcw== # bakery_pos
ORDERS_DB_USER: YmFrZXJ5X29yZGVycw== # bakery_orders
PRODUCTION_DB_USER: YmFrZXJ5X3Byb2R1Y3Rpb24= # bakery_production
ALERT_PROCESSOR_DB_USER: YmFrZXJ5X2FsZXJ0X3Byb2Nlc3Nvcg== # bakery_alert_processor
# Database Passwords (base64 encoded - change these in production!)
AUTH_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
TENANT_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
TRAINING_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
FORECASTING_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
SALES_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
EXTERNAL_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
NOTIFICATION_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
INVENTORY_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
RECIPES_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
SUPPLIERS_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
POS_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
ORDERS_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
PRODUCTION_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
ALERT_PROCESSOR_DB_PASSWORD: ZGV2X3Bhc3N3b3JkXzEyMw== # dev_password_123
---
apiVersion: v1
kind: Secret
metadata:
name: redis-secrets
namespace: bakery-ia
labels:
app.kubernetes.io/name: bakery-ia
app.kubernetes.io/component: redis
type: Opaque
data:
REDIS_PASSWORD: ZGV2X3JlZGlzXzEyMw== # dev_redis_123
---
apiVersion: v1
kind: Secret
metadata:
name: rabbitmq-secrets
namespace: bakery-ia
labels:
app.kubernetes.io/name: bakery-ia
app.kubernetes.io/component: rabbitmq
type: Opaque
data:
RABBITMQ_USER: YmFrZXJ5X3VzZXI= # bakery_user
RABBITMQ_PASSWORD: ZGV2X3JhYmJpdF8xMjM= # dev_rabbit_123
---
apiVersion: v1
kind: Secret
metadata:
name: jwt-secrets
namespace: bakery-ia
labels:
app.kubernetes.io/name: bakery-ia
app.kubernetes.io/component: auth
type: Opaque
data:
JWT_SECRET_KEY: ZGV2X2p3dF9zZWNyZXRfa2V5XzEyMzQ1Njc4OTA= # dev_jwt_secret_key_1234567890
JWT_REFRESH_SECRET_KEY: ZGV2X2p3dF9yZWZyZXNoX3NlY3JldF9rZXlfMTIzNDU2Nzg5MA== # dev_jwt_refresh_secret_key_1234567890
---
apiVersion: v1
kind: Secret
metadata:
name: monitoring-secrets
namespace: bakery-ia
labels:
app.kubernetes.io/name: bakery-ia
app.kubernetes.io/component: monitoring
type: Opaque
data:
GRAFANA_ADMIN_USER: YWRtaW4= # admin
GRAFANA_ADMIN_PASSWORD: ZGV2X2dyYWZhbmFfMTIz # dev_grafana_123

View File

@@ -0,0 +1,112 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: alert-processor-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: alert-processor-service
app.kubernetes.io/component: worker
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 2
selector:
matchLabels:
app.kubernetes.io/name: alert-processor-service
app.kubernetes.io/component: worker
template:
metadata:
labels:
app.kubernetes.io/name: alert-processor-service
app.kubernetes.io/component: worker
spec:
containers:
- name: alert-processor-service
image: bakery/alert-processor:latest
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: ALERT_PROCESSOR_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: ALERT_PROCESSOR_DB_HOST
- name: ALERT_PROCESSOR_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: ALERT_PROCESSOR_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: ALERT_PROCESSOR_DB_NAME
- name: ALERT_PROCESSOR_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: ALERT_PROCESSOR_DB_USER
- name: ALERT_PROCESSOR_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: ALERT_PROCESSOR_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: NOTIFICATION_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: NOTIFICATION_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"

View File

@@ -0,0 +1,156 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: auth-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: auth-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: auth-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: auth-service
image: bakery/auth-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: AUTH_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_DB_HOST
- name: AUTH_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: AUTH_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_DB_NAME
- name: AUTH_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: AUTH_DB_USER
- name: AUTH_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: AUTH_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: JWT_SECRET_KEY
valueFrom:
secretKeyRef:
name: jwt-secrets
key: JWT_SECRET_KEY
- name: JWT_REFRESH_SECRET_KEY
valueFrom:
secretKeyRef:
name: jwt-secrets
key: JWT_REFRESH_SECRET_KEY
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: auth-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: auth-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: auth-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: alert-processor-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: alert-processor-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alert-processor-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: alert-processor-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: ALERT_PROCESSOR_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: ALERT_PROCESSOR_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: ALERT_PROCESSOR_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: alert-processor-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: alert-processor-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: alert-processor-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: alert-processor-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: alert-processor-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: alert-processor-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: auth-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: auth-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: auth-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: AUTH_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: AUTH_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: auth-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: auth-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: auth-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: auth-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: auth-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: auth-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: external-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: external-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: external-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: EXTERNAL_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: EXTERNAL_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: EXTERNAL_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: external-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: external-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: external-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: external-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: external-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: external-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: forecasting-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: forecasting-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: forecasting-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: forecasting-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: FORECASTING_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: FORECASTING_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: FORECASTING_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: forecasting-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: forecasting-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: forecasting-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: forecasting-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: forecasting-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: forecasting-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: inventory-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: inventory-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: inventory-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: inventory-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: INVENTORY_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: INVENTORY_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: INVENTORY_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: inventory-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: inventory-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: inventory-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: inventory-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: inventory-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: inventory-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: notification-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: notification-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: notification-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: notification-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: NOTIFICATION_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: NOTIFICATION_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: NOTIFICATION_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: notification-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: notification-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: notification-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: notification-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: notification-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: notification-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: orders-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: orders-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: orders-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: orders-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: ORDERS_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: ORDERS_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: ORDERS_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: orders-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: orders-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: orders-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: orders-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: orders-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: orders-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: pos-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: pos-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: pos-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: pos-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: POS_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: POS_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: POS_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: pos-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: pos-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: pos-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: pos-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pos-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: pos-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{SERVICE_NAME}}-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: {{SERVICE_NAME}}-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: {{SERVICE_NAME}}-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: {{SERVICE_NAME}}-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: {{SERVICE_NAME_UPPER}}_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: {{SERVICE_NAME_UPPER}}_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: {{SERVICE_NAME_UPPER}}_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: {{SERVICE_NAME}}-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: {{SERVICE_NAME}}-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: {{SERVICE_NAME}}-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: {{SERVICE_NAME}}-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{SERVICE_NAME}}-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: {{SERVICE_NAME}}-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: production-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: production-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: production-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: production-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: PRODUCTION_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: PRODUCTION_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: PRODUCTION_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: production-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: production-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: production-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: production-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: production-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: production-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,123 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: rabbitmq
namespace: bakery-ia
labels:
app.kubernetes.io/name: rabbitmq
app.kubernetes.io/component: message-broker
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: rabbitmq
app.kubernetes.io/component: message-broker
template:
metadata:
labels:
app.kubernetes.io/name: rabbitmq
app.kubernetes.io/component: message-broker
spec:
containers:
- name: rabbitmq
image: rabbitmq:3.12-management-alpine
ports:
- containerPort: 5672
name: amqp
- containerPort: 15672
name: management
env:
- name: RABBITMQ_DEFAULT_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_DEFAULT_PASS
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: RABBITMQ_DEFAULT_VHOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_VHOST
volumeMounts:
- name: rabbitmq-data
mountPath: /var/lib/rabbitmq
resources:
requests:
memory: "512Mi"
cpu: "200m"
limits:
memory: "1Gi"
cpu: "1000m"
livenessProbe:
exec:
command:
- timeout
- "5"
- bash
- -c
- "</dev/tcp/localhost/5672 && rabbitmq-diagnostics ping"
initialDelaySeconds: 40
timeoutSeconds: 10
periodSeconds: 30
failureThreshold: 5
readinessProbe:
exec:
command:
- timeout
- "5"
- bash
- -c
- "</dev/tcp/localhost/5672 && rabbitmq-diagnostics ping"
initialDelaySeconds: 20
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
volumes:
- name: rabbitmq-data
persistentVolumeClaim:
claimName: rabbitmq-pvc
---
apiVersion: v1
kind: Service
metadata:
name: rabbitmq-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: rabbitmq
app.kubernetes.io/component: message-broker
spec:
type: ClusterIP
ports:
- port: 5672
targetPort: 5672
protocol: TCP
name: amqp
- port: 15672
targetPort: 15672
protocol: TCP
name: management
selector:
app.kubernetes.io/name: rabbitmq
app.kubernetes.io/component: message-broker
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rabbitmq-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: rabbitmq
app.kubernetes.io/component: message-broker
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: recipes-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: recipes-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: recipes-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: recipes-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: RECIPES_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: RECIPES_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: RECIPES_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: recipes-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: recipes-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: recipes-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: recipes-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: recipes-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: recipes-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,115 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
namespace: bakery-ia
labels:
app.kubernetes.io/name: redis
app.kubernetes.io/component: cache
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: redis
app.kubernetes.io/component: cache
template:
metadata:
labels:
app.kubernetes.io/name: redis
app.kubernetes.io/component: cache
spec:
containers:
- name: redis
image: redis:7-alpine
ports:
- containerPort: 6379
name: redis
env:
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
command:
- redis-server
- --appendonly
- "yes"
- --requirepass
- $(REDIS_PASSWORD)
- --maxmemory
- "512mb"
- --databases
- "16"
volumeMounts:
- name: redis-data
mountPath: /data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- redis-cli
- -a
- $(REDIS_PASSWORD)
- ping
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- redis-cli
- -a
- $(REDIS_PASSWORD)
- ping
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: redis-data
persistentVolumeClaim:
claimName: redis-pvc
---
apiVersion: v1
kind: Service
metadata:
name: redis-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: redis
app.kubernetes.io/component: cache
spec:
type: ClusterIP
ports:
- port: 6379
targetPort: 6379
protocol: TCP
name: redis
selector:
app.kubernetes.io/name: redis
app.kubernetes.io/component: cache
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: redis
app.kubernetes.io/component: cache
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: sales-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: sales-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: sales-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: sales-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: SALES_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: SALES_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: SALES_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: sales-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: sales-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: sales-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: sales-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sales-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: sales-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: suppliers-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: suppliers-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: suppliers-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: suppliers-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: SUPPLIERS_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: SUPPLIERS_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: SUPPLIERS_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: suppliers-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: suppliers-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: suppliers-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: suppliers-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: suppliers-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: suppliers-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tenant-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: tenant-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: tenant-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: tenant-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: TENANT_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: TENANT_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: TENANT_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: tenant-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: tenant-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: tenant-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: tenant-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tenant-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: tenant-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,124 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: training-db
namespace: bakery-ia
labels:
app.kubernetes.io/name: training-db
app.kubernetes.io/component: database
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: training-db
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: training-db
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: bakery-config
key: TRAINING_DB_NAME
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: TRAINING_DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: TRAINING_DB_PASSWORD
- name: POSTGRES_INITDB_ARGS
valueFrom:
configMapKeyRef:
name: bakery-config
key: POSTGRES_INITDB_ARGS
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
exec:
command:
- pg_isready
- -U
- $(POSTGRES_USER)
- -d
- $(POSTGRES_DB)
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: training-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: training-db-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: training-db
app.kubernetes.io/component: database
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: postgres
selector:
app.kubernetes.io/name: training-db
app.kubernetes.io/component: database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: training-db-pvc
namespace: bakery-ia
labels:
app.kubernetes.io/name: training-db
app.kubernetes.io/component: database
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: external-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: external-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: external-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: external-service
image: bakery/external-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: EXTERNAL_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: EXTERNAL_DB_HOST
- name: EXTERNAL_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: EXTERNAL_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: EXTERNAL_DB_NAME
- name: EXTERNAL_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: EXTERNAL_DB_USER
- name: EXTERNAL_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: EXTERNAL_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: external-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: external-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: external-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: forecasting-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: forecasting-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: forecasting-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: forecasting-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: forecasting-service
image: bakery/forecasting-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: FORECASTING_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: FORECASTING_DB_HOST
- name: FORECASTING_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: FORECASTING_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: FORECASTING_DB_NAME
- name: FORECASTING_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: FORECASTING_DB_USER
- name: FORECASTING_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: FORECASTING_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: forecasting-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: forecasting-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: forecasting-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,79 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
namespace: bakery-ia
labels:
app.kubernetes.io/name: frontend
app.kubernetes.io/component: frontend
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: frontend
app.kubernetes.io/component: frontend
template:
metadata:
labels:
app.kubernetes.io/name: frontend
app.kubernetes.io/component: frontend
spec:
containers:
- name: frontend
image: bakery/dashboard:latest
ports:
- containerPort: 3000
name: http
env:
- name: NODE_ENV
value: "development"
- name: VITE_APP_TITLE
value: "PanIA Dashboard"
- name: VITE_APP_VERSION
value: "1.0.0"
- name: VITE_API_URL
value: "http://gateway-service:8000"
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "500m"
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 60
timeoutSeconds: 10
periodSeconds: 30
failureThreshold: 3
readinessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 20
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: frontend-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: frontend
app.kubernetes.io/component: frontend
spec:
type: ClusterIP
ports:
- port: 3000
targetPort: 3000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: frontend
app.kubernetes.io/component: frontend

View File

@@ -0,0 +1,126 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: gateway
namespace: bakery-ia
labels:
app.kubernetes.io/name: gateway
app.kubernetes.io/component: gateway
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: gateway
app.kubernetes.io/component: gateway
template:
metadata:
labels:
app.kubernetes.io/name: gateway
app.kubernetes.io/component: gateway
spec:
containers:
- name: gateway
image: bakery/gateway:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 10
periodSeconds: 30
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: gateway-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: gateway
app.kubernetes.io/component: gateway
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: gateway
app.kubernetes.io/component: gateway

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: inventory-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: inventory-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: inventory-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: inventory-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: inventory-service
image: bakery/inventory-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: INVENTORY_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: INVENTORY_DB_HOST
- name: INVENTORY_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: INVENTORY_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: INVENTORY_DB_NAME
- name: INVENTORY_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: INVENTORY_DB_USER
- name: INVENTORY_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: INVENTORY_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: inventory-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: inventory-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: inventory-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{SERVICE_NAME}}-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: {{SERVICE_NAME}}-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: {{SERVICE_NAME}}-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: {{SERVICE_NAME}}-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: {{SERVICE_NAME}}-service
image: bakery/{{SERVICE_NAME}}-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: {{SERVICE_NAME_UPPER}}_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: {{SERVICE_NAME_UPPER}}_DB_HOST
- name: {{SERVICE_NAME_UPPER}}_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: {{SERVICE_NAME_UPPER}}_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: {{SERVICE_NAME_UPPER}}_DB_NAME
- name: {{SERVICE_NAME_UPPER}}_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: {{SERVICE_NAME_UPPER}}_DB_USER
- name: {{SERVICE_NAME_UPPER}}_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: {{SERVICE_NAME_UPPER}}_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: {{SERVICE_NAME}}-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: {{SERVICE_NAME}}-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: {{SERVICE_NAME}}-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: notification-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: notification-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: notification-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: notification-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: notification-service
image: bakery/notification-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: NOTIFICATION_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: NOTIFICATION_DB_HOST
- name: NOTIFICATION_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: NOTIFICATION_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: NOTIFICATION_DB_NAME
- name: NOTIFICATION_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: NOTIFICATION_DB_USER
- name: NOTIFICATION_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: NOTIFICATION_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: notification-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: notification-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: notification-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: orders-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: orders-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: orders-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: orders-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: orders-service
image: bakery/orders-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: ORDERS_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: ORDERS_DB_HOST
- name: ORDERS_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: ORDERS_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: ORDERS_DB_NAME
- name: ORDERS_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: ORDERS_DB_USER
- name: ORDERS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: ORDERS_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: orders-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: orders-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: orders-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: pos-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: pos-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: pos-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: pos-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: pos-service
image: bakery/pos-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: POS_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: POS_DB_HOST
- name: POS_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: POS_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: POS_DB_NAME
- name: POS_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: POS_DB_USER
- name: POS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: POS_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: pos-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: pos-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: pos-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: production-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: production-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: production-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: production-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: production-service
image: bakery/production-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: PRODUCTION_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: PRODUCTION_DB_HOST
- name: PRODUCTION_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: PRODUCTION_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: PRODUCTION_DB_NAME
- name: PRODUCTION_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: PRODUCTION_DB_USER
- name: PRODUCTION_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: PRODUCTION_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: production-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: production-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: production-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: recipes-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: recipes-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: recipes-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: recipes-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: recipes-service
image: bakery/recipes-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: RECIPES_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RECIPES_DB_HOST
- name: RECIPES_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: RECIPES_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: RECIPES_DB_NAME
- name: RECIPES_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: RECIPES_DB_USER
- name: RECIPES_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: RECIPES_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: recipes-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: recipes-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: recipes-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: sales-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: sales-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: sales-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: sales-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: sales-service
image: bakery/sales-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: SALES_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: SALES_DB_HOST
- name: SALES_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: SALES_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: SALES_DB_NAME
- name: SALES_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: SALES_DB_USER
- name: SALES_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: SALES_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: sales-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: sales-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: sales-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: suppliers-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: suppliers-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: suppliers-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: suppliers-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: suppliers-service
image: bakery/suppliers-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: SUPPLIERS_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: SUPPLIERS_DB_HOST
- name: SUPPLIERS_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: SUPPLIERS_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: SUPPLIERS_DB_NAME
- name: SUPPLIERS_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: SUPPLIERS_DB_USER
- name: SUPPLIERS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: SUPPLIERS_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: suppliers-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: suppliers-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: suppliers-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tenant-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: tenant-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: tenant-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: tenant-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: tenant-service
image: bakery/tenant-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: TENANT_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: TENANT_DB_HOST
- name: TENANT_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: TENANT_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: TENANT_DB_NAME
- name: TENANT_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: TENANT_DB_USER
- name: TENANT_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: TENANT_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: tenant-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: tenant-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: tenant-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: training-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: training-service
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: bakery-ia
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: training-service
app.kubernetes.io/component: microservice
template:
metadata:
labels:
app.kubernetes.io/name: training-service
app.kubernetes.io/component: microservice
spec:
containers:
- name: training-service
image: bakery/training-service:latest
ports:
- containerPort: 8000
name: http
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: bakery-config
key: ENVIRONMENT
- name: DEBUG
valueFrom:
configMapKeyRef:
name: bakery-config
key: DEBUG
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: bakery-config
key: LOG_LEVEL
- name: TRAINING_DB_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: TRAINING_DB_HOST
- name: TRAINING_DB_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: DB_PORT
- name: TRAINING_DB_NAME
valueFrom:
configMapKeyRef:
name: bakery-config
key: TRAINING_DB_NAME
- name: TRAINING_DB_USER
valueFrom:
secretKeyRef:
name: database-secrets
key: TRAINING_DB_USER
- name: TRAINING_DB_PASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: TRAINING_DB_PASSWORD
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_HOST
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: REDIS_PORT
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: RABBITMQ_HOST
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_HOST
- name: RABBITMQ_PORT
valueFrom:
configMapKeyRef:
name: bakery-config
key: RABBITMQ_PORT
- name: RABBITMQ_USER
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_USER
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-secrets
key: RABBITMQ_PASSWORD
- name: AUTH_SERVICE_URL
valueFrom:
configMapKeyRef:
name: bakery-config
key: AUTH_SERVICE_URL
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: training-service
namespace: bakery-ia
labels:
app.kubernetes.io/name: training-service
app.kubernetes.io/component: microservice
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: training-service
app.kubernetes.io/component: microservice

View File

@@ -0,0 +1,49 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: bakery-config
namespace: bakery-ia
data:
# Development specific overrides
DEBUG: "true"
LOG_LEVEL: "DEBUG"
AUTO_RELOAD: "true"
PROFILING_ENABLED: "true"
MOCK_EXTERNAL_APIS: "true"
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: bakery-ingress
namespace: bakery-ia
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/cors-allow-methods: "GET, POST, PUT, DELETE, OPTIONS"
nginx.ingress.kubernetes.io/cors-allow-headers: "Content-Type, Authorization"
# Development specific annotations
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
spec:
ingressClassName: nginx
rules:
- host: localhost
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 3000
- path: /api
pathType: Prefix
backend:
service:
name: gateway-service
port:
number: 8000

View File

@@ -0,0 +1,99 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
metadata:
name: bakery-ia-dev
namespace: bakery-ia
resources:
- ../../base
patchesStrategicMerge:
- dev-patches.yaml
configMapGenerator:
- name: bakery-dev-config
literals:
- ENVIRONMENT=development
- DEBUG=true
- LOG_LEVEL=DEBUG
- AUTO_RELOAD=true
- PROFILING_ENABLED=true
secretGenerator:
- name: dev-secrets
literals:
- DEV_MODE=true
commonLabels:
environment: development
tier: local
images:
- name: bakery/auth-service
newTag: dev
- name: bakery/tenant-service
newTag: dev
- name: bakery/training-service
newTag: dev
- name: bakery/forecasting-service
newTag: dev
- name: bakery/sales-service
newTag: dev
- name: bakery/external-service
newTag: dev
- name: bakery/notification-service
newTag: dev
- name: bakery/inventory-service
newTag: dev
- name: bakery/recipes-service
newTag: dev
- name: bakery/suppliers-service
newTag: dev
- name: bakery/pos-service
newTag: dev
- name: bakery/orders-service
newTag: dev
- name: bakery/production-service
newTag: dev
- name: bakery/alert-processor
newTag: dev
- name: bakery/gateway
newTag: dev
- name: bakery/dashboard
newTag: dev
replicas:
- name: auth-service
count: 1
- name: tenant-service
count: 1
- name: training-service
count: 1
- name: forecasting-service
count: 1
- name: sales-service
count: 1
- name: external-service
count: 1
- name: notification-service
count: 1
- name: inventory-service
count: 1
- name: recipes-service
count: 1
- name: suppliers-service
count: 1
- name: pos-service
count: 1
- name: orders-service
count: 1
- name: production-service
count: 1
- name: alert-processor-service
count: 1
- name: gateway
count: 1
- name: frontend
count: 1