diff --git a/smarketing-ai/deployment/manifest/configmap.yaml b/smarketing-ai/deployment/manifest/configmap.yaml new file mode 100644 index 0000000..798804c --- /dev/null +++ b/smarketing-ai/deployment/manifest/configmap.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: smarketing-config + namespace: smarketing +data: + SERVER_HOST: "0.0.0.0" + SERVER_PORT: "5001" + UPLOAD_FOLDER: "/app/uploads" + MAX_CONTENT_LENGTH: "16777216" # 16MB + ALLOWED_EXTENSIONS: "png,jpg,jpeg,gif,webp" \ No newline at end of file diff --git a/smarketing-ai/deployment/manifest/deployment.yaml b/smarketing-ai/deployment/manifest/deployment.yaml new file mode 100644 index 0000000..5e7e4cb --- /dev/null +++ b/smarketing-ai/deployment/manifest/deployment.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: smarketing + namespace: smarketing + labels: + app: smarketing +spec: + replicas: 1 + selector: + matchLabels: + app: smarketing + template: + metadata: + labels: + app: smarketing + spec: + imagePullSecrets: + - name: acr-secret + containers: + - name: smarketing + image: dg0408cr.azurecr.io/smarketing/smarketing-ai:latest + imagePullPolicy: Always + ports: + - containerPort: 5001 + resources: + requests: + cpu: 256m + memory: 512Mi + limits: + cpu: 1024m + memory: 2048Mi + envFrom: + - configMapRef: + name: smarketing-config + - secretRef: + name: smarketing-secret + volumeMounts: + - name: upload-storage + mountPath: /app/uploads + - name: temp-storage + mountPath: /app/uploads/temp + volumes: + - name: upload-storage + emptyDir: {} + - name: temp-storage + emptyDir: {} \ No newline at end of file diff --git a/smarketing-ai/deployment/manifest/ingress.yaml b/smarketing-ai/deployment/manifest/ingress.yaml new file mode 100644 index 0000000..5b5c4f4 --- /dev/null +++ b/smarketing-ai/deployment/manifest/ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: smarketing-ingress + namespace: smarketing + annotations: + kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/proxy-body-size: "16m" + nginx.ingress.kubernetes.io/proxy-read-timeout: "300" + nginx.ingress.kubernetes.io/proxy-send-timeout: "300" + nginx.ingress.kubernetes.io/cors-allow-methods: "GET, POST, PUT, DELETE, OPTIONS" + nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization" + nginx.ingress.kubernetes.io/cors-allow-origin: "*" + nginx.ingress.kubernetes.io/enable-cors: "true" +spec: + rules: + - host: smarketing.20.249.184.228.nip.io + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: smarketing-service + port: + number: 80 \ No newline at end of file diff --git a/smarketing-ai/deployment/manifest/secret.yaml b/smarketing-ai/deployment/manifest/secret.yaml new file mode 100644 index 0000000..d013ead --- /dev/null +++ b/smarketing-ai/deployment/manifest/secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + name: smarketing-secret + namespace: smarketing +type: Opaque +stringData: + SECRET_KEY: "your-secret-key-change-in-production" + CLAUDE_API_KEY: "your-claude-api-key" + OPENAI_API_KEY: "your-openai-api-key" \ No newline at end of file diff --git a/smarketing-ai/deployment/manifest/service.yaml b/smarketing-ai/deployment/manifest/service.yaml new file mode 100644 index 0000000..2bbc84d --- /dev/null +++ b/smarketing-ai/deployment/manifest/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: smarketing-service + namespace: smarketing + labels: + app: smarketing +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 5001 + protocol: TCP + name: http + selector: + app: smarketing \ No newline at end of file