diff --git a/packages/charts/crisiscleanup/test/__snapshots__/main.spec.ts.snap b/packages/charts/crisiscleanup/test/__snapshots__/main.spec.ts.snap index 114610a..561270c 100644 --- a/packages/charts/crisiscleanup/test/__snapshots__/main.spec.ts.snap +++ b/packages/charts/crisiscleanup/test/__snapshots__/main.spec.ts.snap @@ -860,6 +860,28 @@ exports[`CrisisCleanupChart: 'defaults' > api matches snapshot > defaults-api 1` }, }, }, + { + "apiVersion": "autoscaling.k8s.io/v1", + "kind": "VerticalPodAutoscaler", + "metadata": { + "labels": { + "app.kubernetes.io/component": "api", + "app.kubernetes.io/part-of": "crisiscleanup", + }, + "name": "crisiscleanup-api-asgi-asgi-rag-vpa", + "namespace": "test", + }, + "spec": { + "targetRef": { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "name": "crisiscleanup-api-asgi-rag", + }, + "updatePolicy": { + "updateMode": "Auto", + }, + }, + }, { "apiVersion": "v1", "kind": "Service", @@ -2520,6 +2542,28 @@ exports[`CrisisCleanupChart: 'with spread' > api matches snapshot > with spread- }, }, }, + { + "apiVersion": "autoscaling.k8s.io/v1", + "kind": "VerticalPodAutoscaler", + "metadata": { + "labels": { + "app.kubernetes.io/component": "api", + "app.kubernetes.io/part-of": "crisiscleanup", + }, + "name": "crisiscleanup-api-asgi-asgi-rag-vpa", + "namespace": "test", + }, + "spec": { + "targetRef": { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "name": "crisiscleanup-api-asgi-rag", + }, + "updatePolicy": { + "updateMode": "Auto", + }, + }, + }, { "apiVersion": "v1", "kind": "Service", @@ -4154,6 +4198,28 @@ exports[`CrisisCleanupChart: 'with sync' > api matches snapshot > with sync-api }, }, }, + { + "apiVersion": "autoscaling.k8s.io/v1", + "kind": "VerticalPodAutoscaler", + "metadata": { + "labels": { + "app.kubernetes.io/component": "api", + "app.kubernetes.io/part-of": "crisiscleanup", + }, + "name": "crisiscleanup-api-asgi-asgi-rag-vpa", + "namespace": "test", + }, + "spec": { + "targetRef": { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "name": "crisiscleanup-api-asgi-rag", + }, + "updatePolicy": { + "updateMode": "Auto", + }, + }, + }, { "apiVersion": "v1", "kind": "Service", @@ -5927,6 +5993,28 @@ exports[`CrisisCleanupChart: 'with vertical scaling' > api matches snapshot > wi }, }, }, + { + "apiVersion": "autoscaling.k8s.io/v1", + "kind": "VerticalPodAutoscaler", + "metadata": { + "labels": { + "app.kubernetes.io/component": "api", + "app.kubernetes.io/part-of": "crisiscleanup", + }, + "name": "crisiscleanup-api-asgi-asgi-rag-vpa", + "namespace": "test", + }, + "spec": { + "targetRef": { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "name": "crisiscleanup-api-asgi-rag", + }, + "updatePolicy": { + "updateMode": "Auto", + }, + }, + }, { "apiVersion": "v1", "kind": "Service", diff --git a/packages/stacks/api/test/__snapshots__/main.spec.ts.snap b/packages/stacks/api/test/__snapshots__/main.spec.ts.snap index 95a4fbd..620496e 100644 --- a/packages/stacks/api/test/__snapshots__/main.spec.ts.snap +++ b/packages/stacks/api/test/__snapshots__/main.spec.ts.snap @@ -1283,7 +1283,7 @@ exports[`Snapshot 1`] = ` "ClusterName": { "Ref": "teststackF0A1F222", }, - "Manifest": "[{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/name\\":\\"wsgi\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"minReadySeconds\\":0,\\"progressDeadlineSeconds\\":600,\\"selector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-c83e828d\\"}},\\"strategy\\":{\\"rollingUpdate\\":{\\"maxSurge\\":\\"25%\\",\\"maxUnavailable\\":\\"25%\\"},\\"type\\":\\"RollingUpdate\\"},\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-c83e828d\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"/serve.sh\\",\\"wsgi\\",\\"--workers=2\\",\\"--threads=4\\",\\"--worker-class=gthread\\",\\"--worker-tmp-dir=/worker-tmp\\",\\"--timeout=90\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"livenessProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":8},\\"name\\":\\"gunicorn\\",\\"ports\\":[{\\"containerPort\\":5000}],\\"readinessProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":8},\\"resources\\":{\\"limits\\":{\\"cpu\\":\\"1800m\\",\\"memory\\":\\"1200Mi\\"},\\"requests\\":{\\"cpu\\":\\"1000m\\",\\"memory\\":\\"1200Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"startupProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"periodSeconds\\":15},\\"volumeMounts\\":[{\\"mountPath\\":\\"/app/staticfiles\\",\\"name\\":\\"staticfiles\\"},{\\"mountPath\\":\\"/worker-tmp\\",\\"name\\":\\"worker-tmp\\"},{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Always\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsNonRoot\\":true},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":30,\\"volumes\\":[{\\"emptyDir\\":{},\\"name\\":\\"staticfiles\\"},{\\"emptyDir\\":{\\"medium\\":\\"Memory\\"},\\"name\\":\\"worker-tmp\\"},{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}}}},{\\"apiVersion\\":\\"batch/v1\\",\\"kind\\":\\"Job\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-migrate\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"activeDeadlineSeconds\\":1800,\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-migrate-c8890c80\\",\\"component\\":\\"api-migrate\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"python\\",\\"manage.py\\",\\"migrate\\",\\"--noinput\\",\\"--verbosity=1\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"migrate\\",\\"resources\\":{\\"limits\\":{\\"memory\\":\\"3072Mi\\"},\\"requests\\":{\\"cpu\\":\\"100m\\",\\"memory\\":\\"1024Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"volumeMounts\\":[{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Never\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":300,\\"volumes\\":[{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}},\\"ttlSecondsAfterFinished\\":120}},{\\"apiVersion\\":\\"batch/v1\\",\\"kind\\":\\"Job\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-collectstatic\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"activeDeadlineSeconds\\":1800,\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-collectstatic-c871685d\\",\\"component\\":\\"api-static\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"python\\",\\"manage.py\\",\\"collectstatic\\",\\"--no-post-process\\",\\"--noinput\\",\\"--verbosity=2\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"collectstatic\\",\\"resources\\":{\\"limits\\":{\\"memory\\":\\"3072Mi\\"},\\"requests\\":{\\"cpu\\":\\"100m\\",\\"memory\\":\\"1024Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"volumeMounts\\":[{\\"mountPath\\":\\"/app/staticfiles\\",\\"name\\":\\"staticfiles\\"},{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Never\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":300,\\"volumes\\":[{\\"emptyDir\\":{},\\"name\\":\\"staticfiles\\"},{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}},\\"ttlSecondsAfterFinished\\":120}},{\\"apiVersion\\":\\"v1\\",\\"kind\\":\\"Service\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-service\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"externalIPs\\":[],\\"ports\\":[{\\"port\\":5000,\\"targetPort\\":5000}],\\"selector\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-c83e828d\\"},\\"type\\":\\"ClusterIP\\"}},{\\"apiVersion\\":\\"autoscaling/v2\\",\\"kind\\":\\"HorizontalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-hpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"behavior\\":{\\"scaleDown\\":{\\"policies\\":[{\\"periodSeconds\\":300,\\"type\\":\\"Pods\\",\\"value\\":1}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":300},\\"scaleUp\\":{\\"policies\\":[{\\"periodSeconds\\":60,\\"type\\":\\"Pods\\",\\"value\\":4},{\\"periodSeconds\\":60,\\"type\\":\\"Percent\\",\\"value\\":200}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":0}},\\"maxReplicas\\":3,\\"metrics\\":[{\\"resource\\":{\\"name\\":\\"cpu\\",\\"target\\":{\\"averageUtilization\\":70,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"},{\\"resource\\":{\\"name\\":\\"memory\\",\\"target\\":{\\"averageUtilization\\":85,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"}],\\"minReplicas\\":1,\\"scaleTargetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-wsgi\\"}}},{\\"apiVersion\\":\\"autoscaling.k8s.io/v1\\",\\"kind\\":\\"VerticalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-vpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"targetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-wsgi\\"},\\"updatePolicy\\":{\\"updateMode\\":\\"Auto\\"}}},{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/name\\":\\"asgi\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"minReadySeconds\\":0,\\"progressDeadlineSeconds\\":600,\\"selector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-c818ff7e\\"}},\\"strategy\\":{\\"rollingUpdate\\":{\\"maxSurge\\":\\"25%\\",\\"maxUnavailable\\":\\"25%\\"},\\"type\\":\\"RollingUpdate\\"},\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-c818ff7e\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"/serve.sh\\",\\"asgi\\",\\"--workers=2\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"livenessProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":8},\\"name\\":\\"hypercorn\\",\\"ports\\":[{\\"containerPort\\":5000}],\\"readinessProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":8},\\"resources\\":{\\"limits\\":{\\"cpu\\":\\"1500m\\",\\"memory\\":\\"1024Mi\\"},\\"requests\\":{\\"cpu\\":\\"500m\\",\\"memory\\":\\"1024Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"startupProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"periodSeconds\\":15},\\"volumeMounts\\":[{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Always\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsNonRoot\\":true},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":30,\\"volumes\\":[{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}}}},{\\"apiVersion\\":\\"storage.k8s.io/v1\\",\\"kind\\":\\"StorageClass\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"rag-models\\",\\"namespace\\":\\"local\\"},\\"parameters\\":{\\"allowAutoIOPSPerGBIncrease\\":\\"true\\",\\"iops\\":\\"1000\\",\\"type\\":\\"io2\\"},\\"provisioner\\":\\"ebs.csi.aws.com\\",\\"volumeBindingMode\\":\\"WaitForFirstConsumer\\"},{\\"apiVersion\\":\\"v1\\",\\"kind\\":\\"Service\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-asgi-rag-service\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"clusterIP\\":\\"None\\",\\"externalIPs\\":[],\\"ports\\":[{\\"name\\":\\"channels\\",\\"port\\":5000}],\\"selector\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"},\\"type\\":\\"ClusterIP\\"}},{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"StatefulSet\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-rag\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"minReadySeconds\\":0,\\"podManagementPolicy\\":\\"OrderedReady\\",\\"selector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"}},\\"serviceName\\":\\"crisiscleanup-api-asgi-asgi-rag-service\\",\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"}},\\"spec\\":{\\"affinity\\":{\\"podAntiAffinity\\":{\\"requiredDuringSchedulingIgnoredDuringExecution\\":[{\\"labelSelector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"}},\\"namespaces\\":[\\"local\\"],\\"topologyKey\\":\\"kubernetes.io/hostname\\"},{\\"labelSelector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"}},\\"namespaces\\":[\\"local\\"],\\"topologyKey\\":\\"topology.kubernetes.io/zone\\"}]}},\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"/serve.sh\\",\\"channelsworker\\",\\"rag-document\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"rag-channels\\",\\"resources\\":{\\"limits\\":{\\"memory\\":\\"4096Mi\\"},\\"requests\\":{\\"cpu\\":\\"200m\\",\\"memory\\":\\"1024Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"volumeMounts\\":[{\\"mountPath\\":\\"/ccu/nltk_data\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"nltk_data\\"},{\\"mountPath\\":\\"/ccu/.cache/huggingface\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"hf_data\\"},{\\"mountPath\\":\\"/ccu/.cache/matplotlib\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"mp_data\\"}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"initContainers\\":[{\\"command\\":[\\"sh\\",\\"-x\\",\\"-c\\",\\"mkdir -p /ccu && chown -R 1000:1000 /ccu\\"],\\"image\\":\\"public.ecr.aws/docker/library/busybox:stable\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"host-mounts-init\\",\\"resources\\":{\\"limits\\":{\\"cpu\\":\\"30m\\",\\"memory\\":\\"50Mi\\"},\\"requests\\":{\\"cpu\\":\\"20m\\",\\"memory\\":\\"20Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":0,\\"runAsNonRoot\\":false,\\"runAsUser\\":0},\\"volumeMounts\\":[{\\"mountPath\\":\\"/ccu/nltk_data\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"nltk_data\\"},{\\"mountPath\\":\\"/ccu/.cache/huggingface\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"hf_data\\"},{\\"mountPath\\":\\"/ccu/.cache/matplotlib\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"mp_data\\"}]}],\\"restartPolicy\\":\\"Always\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsNonRoot\\":true},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":30,\\"volumes\\":[{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}},\\"updateStrategy\\":{\\"rollingUpdate\\":{\\"partition\\":0},\\"type\\":\\"RollingUpdate\\"},\\"volumeClaimTemplates\\":[{\\"metadata\\":{\\"name\\":\\"rag-volume\\"},\\"spec\\":{\\"accessModes\\":[\\"ReadWriteOnce\\"],\\"storageClassName\\":\\"rag-models\\",\\"resources\\":{\\"requests\\":{\\"storage\\":\\"10Gi\\"}}}}]}},{\\"apiVersion\\":\\"autoscaling/v2\\",\\"kind\\":\\"HorizontalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-rag-scaling-hpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"behavior\\":{\\"scaleDown\\":{\\"policies\\":[{\\"periodSeconds\\":300,\\"type\\":\\"Pods\\",\\"value\\":1}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":300},\\"scaleUp\\":{\\"policies\\":[{\\"periodSeconds\\":60,\\"type\\":\\"Pods\\",\\"value\\":4},{\\"periodSeconds\\":60,\\"type\\":\\"Percent\\",\\"value\\":200}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":0}},\\"maxReplicas\\":6,\\"metrics\\":[{\\"resource\\":{\\"name\\":\\"cpu\\",\\"target\\":{\\"averageUtilization\\":50,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"},{\\"resource\\":{\\"name\\":\\"memory\\",\\"target\\":{\\"averageUtilization\\":80,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"}],\\"minReplicas\\":1,\\"scaleTargetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"StatefulSet\\",\\"name\\":\\"crisiscleanup-api-asgi-rag\\"}}},{\\"apiVersion\\":\\"v1\\",\\"kind\\":\\"Service\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-service\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"externalIPs\\":[],\\"ports\\":[{\\"port\\":5000,\\"targetPort\\":5000}],\\"selector\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-c818ff7e\\"},\\"type\\":\\"ClusterIP\\"}},{\\"apiVersion\\":\\"autoscaling/v2\\",\\"kind\\":\\"HorizontalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-hpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"behavior\\":{\\"scaleDown\\":{\\"policies\\":[{\\"periodSeconds\\":300,\\"type\\":\\"Pods\\",\\"value\\":1}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":300},\\"scaleUp\\":{\\"policies\\":[{\\"periodSeconds\\":60,\\"type\\":\\"Pods\\",\\"value\\":4},{\\"periodSeconds\\":60,\\"type\\":\\"Percent\\",\\"value\\":200}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":0}},\\"maxReplicas\\":2,\\"metrics\\":[{\\"resource\\":{\\"name\\":\\"cpu\\",\\"target\\":{\\"averageUtilization\\":70,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"},{\\"resource\\":{\\"name\\":\\"memory\\",\\"target\\":{\\"averageUtilization\\":85,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"}],\\"minReplicas\\":1,\\"scaleTargetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-asgi\\"}}},{\\"apiVersion\\":\\"autoscaling.k8s.io/v1\\",\\"kind\\":\\"VerticalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-vpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"targetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-asgi\\"},\\"updatePolicy\\":{\\"updateMode\\":\\"Auto\\"}}},{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/name\\":\\"adminwebsocket\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-admin-websocket\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"minReadySeconds\\":0,\\"progressDeadlineSeconds\\":600,\\"replicas\\":1,\\"selector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-admin-websocket-c879d9e4\\"}},\\"strategy\\":{\\"rollingUpdate\\":{\\"maxSurge\\":\\"25%\\",\\"maxUnavailable\\":\\"25%\\"},\\"type\\":\\"RollingUpdate\\"},\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-admin-websocket-c879d9e4\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"/serve.sh\\",\\"adminwebsocket\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"adminwebsocket\\",\\"resources\\":{\\"limits\\":{\\"memory\\":\\"250Mi\\"},\\"requests\\":{\\"cpu\\":\\"3m\\",\\"memory\\":\\"250Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"volumeMounts\\":[{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Always\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsNonRoot\\":true},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":30,\\"volumes\\":[{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}}}},{\\"apiVersion\\":\\"autoscaling.k8s.io/v1\\",\\"kind\\":\\"VerticalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-admin-websocket-vpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"targetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-admin-websocket\\"},\\"updatePolicy\\":{\\"updateMode\\":\\"Auto\\"}}}]", + "Manifest": "[{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/name\\":\\"wsgi\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"minReadySeconds\\":0,\\"progressDeadlineSeconds\\":600,\\"selector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-c83e828d\\"}},\\"strategy\\":{\\"rollingUpdate\\":{\\"maxSurge\\":\\"25%\\",\\"maxUnavailable\\":\\"25%\\"},\\"type\\":\\"RollingUpdate\\"},\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-c83e828d\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"/serve.sh\\",\\"wsgi\\",\\"--workers=2\\",\\"--threads=4\\",\\"--worker-class=gthread\\",\\"--worker-tmp-dir=/worker-tmp\\",\\"--timeout=90\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"livenessProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":8},\\"name\\":\\"gunicorn\\",\\"ports\\":[{\\"containerPort\\":5000}],\\"readinessProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":8},\\"resources\\":{\\"limits\\":{\\"cpu\\":\\"1800m\\",\\"memory\\":\\"1200Mi\\"},\\"requests\\":{\\"cpu\\":\\"1000m\\",\\"memory\\":\\"1200Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"startupProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"periodSeconds\\":15},\\"volumeMounts\\":[{\\"mountPath\\":\\"/app/staticfiles\\",\\"name\\":\\"staticfiles\\"},{\\"mountPath\\":\\"/worker-tmp\\",\\"name\\":\\"worker-tmp\\"},{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Always\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsNonRoot\\":true},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":30,\\"volumes\\":[{\\"emptyDir\\":{},\\"name\\":\\"staticfiles\\"},{\\"emptyDir\\":{\\"medium\\":\\"Memory\\"},\\"name\\":\\"worker-tmp\\"},{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}}}},{\\"apiVersion\\":\\"batch/v1\\",\\"kind\\":\\"Job\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-migrate\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"activeDeadlineSeconds\\":1800,\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-migrate-c8890c80\\",\\"component\\":\\"api-migrate\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"python\\",\\"manage.py\\",\\"migrate\\",\\"--noinput\\",\\"--verbosity=1\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"migrate\\",\\"resources\\":{\\"limits\\":{\\"memory\\":\\"3072Mi\\"},\\"requests\\":{\\"cpu\\":\\"100m\\",\\"memory\\":\\"1024Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"volumeMounts\\":[{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Never\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":300,\\"volumes\\":[{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}},\\"ttlSecondsAfterFinished\\":120}},{\\"apiVersion\\":\\"batch/v1\\",\\"kind\\":\\"Job\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-collectstatic\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"activeDeadlineSeconds\\":1800,\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-collectstatic-c871685d\\",\\"component\\":\\"api-static\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"python\\",\\"manage.py\\",\\"collectstatic\\",\\"--no-post-process\\",\\"--noinput\\",\\"--verbosity=2\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"collectstatic\\",\\"resources\\":{\\"limits\\":{\\"memory\\":\\"3072Mi\\"},\\"requests\\":{\\"cpu\\":\\"100m\\",\\"memory\\":\\"1024Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"volumeMounts\\":[{\\"mountPath\\":\\"/app/staticfiles\\",\\"name\\":\\"staticfiles\\"},{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Never\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":300,\\"volumes\\":[{\\"emptyDir\\":{},\\"name\\":\\"staticfiles\\"},{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}},\\"ttlSecondsAfterFinished\\":120}},{\\"apiVersion\\":\\"v1\\",\\"kind\\":\\"Service\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-service\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"externalIPs\\":[],\\"ports\\":[{\\"port\\":5000,\\"targetPort\\":5000}],\\"selector\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-wsgi-c83e828d\\"},\\"type\\":\\"ClusterIP\\"}},{\\"apiVersion\\":\\"autoscaling/v2\\",\\"kind\\":\\"HorizontalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-hpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"behavior\\":{\\"scaleDown\\":{\\"policies\\":[{\\"periodSeconds\\":300,\\"type\\":\\"Pods\\",\\"value\\":1}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":300},\\"scaleUp\\":{\\"policies\\":[{\\"periodSeconds\\":60,\\"type\\":\\"Pods\\",\\"value\\":4},{\\"periodSeconds\\":60,\\"type\\":\\"Percent\\",\\"value\\":200}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":0}},\\"maxReplicas\\":3,\\"metrics\\":[{\\"resource\\":{\\"name\\":\\"cpu\\",\\"target\\":{\\"averageUtilization\\":70,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"},{\\"resource\\":{\\"name\\":\\"memory\\",\\"target\\":{\\"averageUtilization\\":85,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"}],\\"minReplicas\\":1,\\"scaleTargetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-wsgi\\"}}},{\\"apiVersion\\":\\"autoscaling.k8s.io/v1\\",\\"kind\\":\\"VerticalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-wsgi-vpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"targetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-wsgi\\"},\\"updatePolicy\\":{\\"updateMode\\":\\"Auto\\"}}},{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/name\\":\\"asgi\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"minReadySeconds\\":0,\\"progressDeadlineSeconds\\":600,\\"selector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-c818ff7e\\"}},\\"strategy\\":{\\"rollingUpdate\\":{\\"maxSurge\\":\\"25%\\",\\"maxUnavailable\\":\\"25%\\"},\\"type\\":\\"RollingUpdate\\"},\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-c818ff7e\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"/serve.sh\\",\\"asgi\\",\\"--workers=2\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"livenessProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":8},\\"name\\":\\"hypercorn\\",\\"ports\\":[{\\"containerPort\\":5000}],\\"readinessProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":8},\\"resources\\":{\\"limits\\":{\\"cpu\\":\\"1500m\\",\\"memory\\":\\"1024Mi\\"},\\"requests\\":{\\"cpu\\":\\"500m\\",\\"memory\\":\\"1024Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"startupProbe\\":{\\"failureThreshold\\":30,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"periodSeconds\\":15},\\"volumeMounts\\":[{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Always\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsNonRoot\\":true},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":30,\\"volumes\\":[{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}}}},{\\"apiVersion\\":\\"storage.k8s.io/v1\\",\\"kind\\":\\"StorageClass\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"rag-models\\",\\"namespace\\":\\"local\\"},\\"parameters\\":{\\"allowAutoIOPSPerGBIncrease\\":\\"true\\",\\"iops\\":\\"1000\\",\\"type\\":\\"io2\\"},\\"provisioner\\":\\"ebs.csi.aws.com\\",\\"volumeBindingMode\\":\\"WaitForFirstConsumer\\"},{\\"apiVersion\\":\\"v1\\",\\"kind\\":\\"Service\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-asgi-rag-service\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"clusterIP\\":\\"None\\",\\"externalIPs\\":[],\\"ports\\":[{\\"name\\":\\"channels\\",\\"port\\":5000}],\\"selector\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"},\\"type\\":\\"ClusterIP\\"}},{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"StatefulSet\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-rag\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"minReadySeconds\\":0,\\"podManagementPolicy\\":\\"OrderedReady\\",\\"selector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"}},\\"serviceName\\":\\"crisiscleanup-api-asgi-asgi-rag-service\\",\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"}},\\"spec\\":{\\"affinity\\":{\\"podAntiAffinity\\":{\\"requiredDuringSchedulingIgnoredDuringExecution\\":[{\\"labelSelector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"}},\\"namespaces\\":[\\"local\\"],\\"topologyKey\\":\\"kubernetes.io/hostname\\"},{\\"labelSelector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-rag-c86cf6a6\\"}},\\"namespaces\\":[\\"local\\"],\\"topologyKey\\":\\"topology.kubernetes.io/zone\\"}]}},\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"/serve.sh\\",\\"channelsworker\\",\\"rag-document\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"rag-channels\\",\\"resources\\":{\\"limits\\":{\\"memory\\":\\"4096Mi\\"},\\"requests\\":{\\"cpu\\":\\"200m\\",\\"memory\\":\\"1024Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"volumeMounts\\":[{\\"mountPath\\":\\"/ccu/nltk_data\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"nltk_data\\"},{\\"mountPath\\":\\"/ccu/.cache/huggingface\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"hf_data\\"},{\\"mountPath\\":\\"/ccu/.cache/matplotlib\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"mp_data\\"}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"initContainers\\":[{\\"command\\":[\\"sh\\",\\"-x\\",\\"-c\\",\\"mkdir -p /ccu && chown -R 1000:1000 /ccu\\"],\\"image\\":\\"public.ecr.aws/docker/library/busybox:stable\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"host-mounts-init\\",\\"resources\\":{\\"limits\\":{\\"cpu\\":\\"30m\\",\\"memory\\":\\"50Mi\\"},\\"requests\\":{\\"cpu\\":\\"20m\\",\\"memory\\":\\"20Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":0,\\"runAsNonRoot\\":false,\\"runAsUser\\":0},\\"volumeMounts\\":[{\\"mountPath\\":\\"/ccu/nltk_data\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"nltk_data\\"},{\\"mountPath\\":\\"/ccu/.cache/huggingface\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"hf_data\\"},{\\"mountPath\\":\\"/ccu/.cache/matplotlib\\",\\"name\\":\\"rag-volume\\",\\"subPath\\":\\"mp_data\\"}]}],\\"restartPolicy\\":\\"Always\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsNonRoot\\":true},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":30,\\"volumes\\":[{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}},\\"updateStrategy\\":{\\"rollingUpdate\\":{\\"partition\\":0},\\"type\\":\\"RollingUpdate\\"},\\"volumeClaimTemplates\\":[{\\"metadata\\":{\\"name\\":\\"rag-volume\\"},\\"spec\\":{\\"accessModes\\":[\\"ReadWriteOnce\\"],\\"storageClassName\\":\\"rag-models\\",\\"resources\\":{\\"requests\\":{\\"storage\\":\\"10Gi\\"}}}}]}},{\\"apiVersion\\":\\"autoscaling/v2\\",\\"kind\\":\\"HorizontalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-rag-scaling-hpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"behavior\\":{\\"scaleDown\\":{\\"policies\\":[{\\"periodSeconds\\":300,\\"type\\":\\"Pods\\",\\"value\\":1}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":300},\\"scaleUp\\":{\\"policies\\":[{\\"periodSeconds\\":60,\\"type\\":\\"Pods\\",\\"value\\":4},{\\"periodSeconds\\":60,\\"type\\":\\"Percent\\",\\"value\\":200}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":0}},\\"maxReplicas\\":6,\\"metrics\\":[{\\"resource\\":{\\"name\\":\\"cpu\\",\\"target\\":{\\"averageUtilization\\":50,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"},{\\"resource\\":{\\"name\\":\\"memory\\",\\"target\\":{\\"averageUtilization\\":80,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"}],\\"minReplicas\\":1,\\"scaleTargetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"StatefulSet\\",\\"name\\":\\"crisiscleanup-api-asgi-rag\\"}}},{\\"apiVersion\\":\\"autoscaling.k8s.io/v1\\",\\"kind\\":\\"VerticalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-asgi-rag-vpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"targetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"StatefulSet\\",\\"name\\":\\"crisiscleanup-api-asgi-rag\\"},\\"updatePolicy\\":{\\"updateMode\\":\\"Auto\\"}}},{\\"apiVersion\\":\\"v1\\",\\"kind\\":\\"Service\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-service\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"externalIPs\\":[],\\"ports\\":[{\\"port\\":5000,\\"targetPort\\":5000}],\\"selector\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-asgi-c818ff7e\\"},\\"type\\":\\"ClusterIP\\"}},{\\"apiVersion\\":\\"autoscaling/v2\\",\\"kind\\":\\"HorizontalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-hpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"behavior\\":{\\"scaleDown\\":{\\"policies\\":[{\\"periodSeconds\\":300,\\"type\\":\\"Pods\\",\\"value\\":1}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":300},\\"scaleUp\\":{\\"policies\\":[{\\"periodSeconds\\":60,\\"type\\":\\"Pods\\",\\"value\\":4},{\\"periodSeconds\\":60,\\"type\\":\\"Percent\\",\\"value\\":200}],\\"selectPolicy\\":\\"Max\\",\\"stabilizationWindowSeconds\\":0}},\\"maxReplicas\\":2,\\"metrics\\":[{\\"resource\\":{\\"name\\":\\"cpu\\",\\"target\\":{\\"averageUtilization\\":70,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"},{\\"resource\\":{\\"name\\":\\"memory\\",\\"target\\":{\\"averageUtilization\\":85,\\"type\\":\\"Utilization\\"}},\\"type\\":\\"Resource\\"}],\\"minReplicas\\":1,\\"scaleTargetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-asgi\\"}}},{\\"apiVersion\\":\\"autoscaling.k8s.io/v1\\",\\"kind\\":\\"VerticalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-asgi-vpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"targetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-asgi\\"},\\"updatePolicy\\":{\\"updateMode\\":\\"Auto\\"}}},{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/name\\":\\"adminwebsocket\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-admin-websocket\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"minReadySeconds\\":0,\\"progressDeadlineSeconds\\":600,\\"replicas\\":1,\\"selector\\":{\\"matchLabels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-admin-websocket-c879d9e4\\"}},\\"strategy\\":{\\"rollingUpdate\\":{\\"maxSurge\\":\\"25%\\",\\"maxUnavailable\\":\\"25%\\"},\\"type\\":\\"RollingUpdate\\"},\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"cdk8s.io/metadata.addr\\":\\"crisiscleanup-api-admin-websocket-c879d9e4\\"}},\\"spec\\":{\\"automountServiceAccountToken\\":false,\\"containers\\":[{\\"command\\":[\\"/serve.sh\\",\\"adminwebsocket\\"],\\"env\\":[{\\"name\\":\\"POSTGRES_USER\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_USER\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_PASSWORD\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_PASSWORD\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}},{\\"name\\":\\"POSTGRES_HOST\\",\\"valueFrom\\":{\\"secretKeyRef\\":{\\"key\\":\\"POSTGRES_HOST\\",\\"name\\":\\"crisiscleanup-db-secrets\\"}}}],\\"envFrom\\":[{\\"configMapRef\\":{\\"name\\":\\"crisiscleanup-config-api-config\\"}}],\\"image\\":\\"crisiscleanup-api:latest\\",\\"imagePullPolicy\\":\\"IfNotPresent\\",\\"name\\":\\"adminwebsocket\\",\\"resources\\":{\\"limits\\":{\\"memory\\":\\"250Mi\\"},\\"requests\\":{\\"cpu\\":\\"3m\\",\\"memory\\":\\"250Mi\\"}},\\"securityContext\\":{\\"allowPrivilegeEscalation\\":false,\\"privileged\\":false,\\"readOnlyRootFilesystem\\":false,\\"runAsGroup\\":1000,\\"runAsNonRoot\\":true,\\"runAsUser\\":1000},\\"volumeMounts\\":[{\\"mountPath\\":\\"/mnt/secrets-store\\",\\"name\\":\\"secrets-store-inline\\",\\"readOnly\\":true}]}],\\"dnsPolicy\\":\\"ClusterFirst\\",\\"hostNetwork\\":false,\\"restartPolicy\\":\\"Always\\",\\"securityContext\\":{\\"fsGroupChangePolicy\\":\\"Always\\",\\"runAsNonRoot\\":true},\\"serviceAccountName\\":\\"crisiscleanup-api\\",\\"setHostnameAsFQDN\\":false,\\"terminationGracePeriodSeconds\\":30,\\"volumes\\":[{\\"csi\\":{\\"driver\\":\\"secrets-store.csi.k8s.io\\",\\"readOnly\\":true,\\"volumeAttributes\\":{\\"secretProviderClass\\":\\"crisiscleanup-api\\"}},\\"name\\":\\"secrets-store-inline\\"}]}}}},{\\"apiVersion\\":\\"autoscaling.k8s.io/v1\\",\\"kind\\":\\"VerticalPodAutoscaler\\",\\"metadata\\":{\\"labels\\":{\\"aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b\\":\\"\\",\\"app.kubernetes.io/component\\":\\"api\\",\\"app.kubernetes.io/part-of\\":\\"crisiscleanup\\"},\\"name\\":\\"crisiscleanup-api-admin-websocket-vpa\\",\\"namespace\\":\\"local\\"},\\"spec\\":{\\"targetRef\\":{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"name\\":\\"crisiscleanup-api-admin-websocket\\"},\\"updatePolicy\\":{\\"updateMode\\":\\"Auto\\"}}}]", "PruneLabel": "aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b", "RoleArn": { "Fn::GetAtt": [