Add base kubernetes support
This commit is contained in:
85
infrastructure/kubernetes/base/configmap.yaml
Normal file
85
infrastructure/kubernetes/base/configmap.yaml
Normal 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"
|
||||
69
infrastructure/kubernetes/base/ingress.yaml
Normal file
69
infrastructure/kubernetes/base/ingress.yaml
Normal 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
|
||||
90
infrastructure/kubernetes/base/kustomization.yaml
Normal file
90
infrastructure/kubernetes/base/kustomization.yaml
Normal 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
|
||||
9
infrastructure/kubernetes/base/namespace.yaml
Normal file
9
infrastructure/kubernetes/base/namespace.yaml
Normal 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
|
||||
96
infrastructure/kubernetes/base/secrets.yaml
Normal file
96
infrastructure/kubernetes/base/secrets.yaml
Normal 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
|
||||
Reference in New Issue
Block a user