From c7b8eec9dbdab0bde7abdee3b280e73cfbb4f39e Mon Sep 17 00:00:00 2001 From: Braden Mars Date: Tue, 19 Mar 2024 18:14:47 -0500 Subject: [PATCH] feat(charts.crisiscleanup): increase memory limit of api jobs Signed-off-by: Braden Mars --- .../test/__snapshots__/main.spec.ts.snap | 12 ++++++------ packages/k8s/construct/api/src/api.ts | 5 ++++- .../stacks/api/test/__snapshots__/main.spec.ts.snap | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/charts/crisiscleanup/test/__snapshots__/main.spec.ts.snap b/packages/charts/crisiscleanup/test/__snapshots__/main.spec.ts.snap index 7bd119a..9be8338 100644 --- a/packages/charts/crisiscleanup/test/__snapshots__/main.spec.ts.snap +++ b/packages/charts/crisiscleanup/test/__snapshots__/main.spec.ts.snap @@ -191,7 +191,7 @@ exports[`CrisisCleanupChart: 'defaults' > api matches snapshot > defaults-api 1` "name": "migrate", "resources": { "limits": { - "memory": "1024Mi", + "memory": "3072Mi", }, "requests": { "cpu": "100m", @@ -268,7 +268,7 @@ exports[`CrisisCleanupChart: 'defaults' > api matches snapshot > defaults-api 1` "name": "collectstatic", "resources": { "limits": { - "memory": "1024Mi", + "memory": "3072Mi", }, "requests": { "cpu": "100m", @@ -1445,7 +1445,7 @@ exports[`CrisisCleanupChart: 'with spread' > api matches snapshot > with spread- "name": "migrate", "resources": { "limits": { - "memory": "1024Mi", + "memory": "3072Mi", }, "requests": { "cpu": "100m", @@ -1522,7 +1522,7 @@ exports[`CrisisCleanupChart: 'with spread' > api matches snapshot > with spread- "name": "collectstatic", "resources": { "limits": { - "memory": "1024Mi", + "memory": "3072Mi", }, "requests": { "cpu": "100m", @@ -2595,7 +2595,7 @@ exports[`CrisisCleanupChart: 'with sync' > api matches snapshot > with sync-api "name": "migrate", "resources": { "limits": { - "memory": "1024Mi", + "memory": "3072Mi", }, "requests": { "cpu": "100m", @@ -2672,7 +2672,7 @@ exports[`CrisisCleanupChart: 'with sync' > api matches snapshot > with sync-api "name": "collectstatic", "resources": { "limits": { - "memory": "1024Mi", + "memory": "3072Mi", }, "requests": { "cpu": "100m", diff --git a/packages/k8s/construct/api/src/api.ts b/packages/k8s/construct/api/src/api.ts index f7857ca..fd76fd9 100644 --- a/packages/k8s/construct/api/src/api.ts +++ b/packages/k8s/construct/api/src/api.ts @@ -229,7 +229,10 @@ export class ApiWSGI const jobResources: kplus.ContainerProps['resources'] = { cpu: this.props.containerDefaults!.resources!.cpu!, - memory: this.props.containerDefaults!.resources!.memory!, + memory: { + ...this.props.containerDefaults!.resources!.memory!, + limit: Size.gibibytes(3), + }, } // migrate + collectstatic jobs diff --git a/packages/stacks/api/test/__snapshots__/main.spec.ts.snap b/packages/stacks/api/test/__snapshots__/main.spec.ts.snap index 8cf8ed3..a454b2b 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\\":6,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":6},\\"name\\":\\"gunicorn\\",\\"ports\\":[{\\"containerPort\\":5000}],\\"readinessProbe\\":{\\"failureThreshold\\":6,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":6},\\"resources\\":{\\"limits\\":{\\"memory\\":\\"1200Mi\\"},\\"requests\\":{\\"cpu\\":\\"100m\\",\\"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\\":\\"1024Mi\\"},\\"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\\":\\"1024Mi\\"},\\"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\\":\\"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\\":6,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":6},\\"name\\":\\"hypercorn\\",\\"ports\\":[{\\"containerPort\\":5000}],\\"readinessProbe\\":{\\"failureThreshold\\":6,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":6},\\"resources\\":{\\"limits\\":{\\"cpu\\":\\"3\\",\\"memory\\":\\"3072Mi\\"},\\"requests\\":{\\"cpu\\":\\"200m\\",\\"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\\":\\"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\\":\\"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\\"}]}}}}]", + "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\\":6,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":6},\\"name\\":\\"gunicorn\\",\\"ports\\":[{\\"containerPort\\":5000}],\\"readinessProbe\\":{\\"failureThreshold\\":6,\\"httpGet\\":{\\"path\\":\\"/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":6},\\"resources\\":{\\"limits\\":{\\"memory\\":\\"1200Mi\\"},\\"requests\\":{\\"cpu\\":\\"100m\\",\\"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\\":\\"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\\":6,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":6},\\"name\\":\\"hypercorn\\",\\"ports\\":[{\\"containerPort\\":5000}],\\"readinessProbe\\":{\\"failureThreshold\\":6,\\"httpGet\\":{\\"path\\":\\"/ws/health\\",\\"port\\":5000,\\"scheme\\":\\"HTTP\\"},\\"initialDelaySeconds\\":20,\\"periodSeconds\\":10,\\"timeoutSeconds\\":6},\\"resources\\":{\\"limits\\":{\\"cpu\\":\\"3\\",\\"memory\\":\\"3072Mi\\"},\\"requests\\":{\\"cpu\\":\\"200m\\",\\"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\\":\\"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\\":\\"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\\"}]}}}}]", "PruneLabel": "aws.cdk.eks/prune-c82f78fa5f1261be46ff61475603c88ab5fa680f3b", "RoleArn": { "Fn::GetAtt": [