From 4efca5fc10d76d77dd8ba0eaab05402bd5b1142e Mon Sep 17 00:00:00 2001
From: Hugo Renard <hugo.renard@protonmail.com>
Date: Thu, 21 Oct 2021 12:05:57 +0200
Subject: [PATCH] memory constaints + strict antiAffinity

---
 nextcloud/manifests/app.yml  | 74 ++++++++++++++++++++++--------------
 rocketchat/manifests/app.yml | 25 ++++++------
 2 files changed, 59 insertions(+), 40 deletions(-)

diff --git a/nextcloud/manifests/app.yml b/nextcloud/manifests/app.yml
index 3720621..7e56e07 100644
--- a/nextcloud/manifests/app.yml
+++ b/nextcloud/manifests/app.yml
@@ -1,3 +1,4 @@
+---
 apiVersion: v1
 kind: Service
 metadata:
@@ -117,20 +118,18 @@ spec:
                 values:
                 - "true"
         podAntiAffinity:
-          preferredDuringSchedulingIgnoredDuringExecution:
-          - weight: 100
-            podAffinityTerm:
-              topologyKey: kubernetes.io/hostname
-              labelSelector:
-                matchExpressions:
-                - key: app.kubernetes.io/instance
-                  operator: In
-                  values:
-                  - ${FQDN} 
-                - key: app.kubernetes.io/component
-                  operator: In
-                  values:
-                  - app
+          requiredDuringSchedulingIgnoredDuringExecution:
+          - topologyKey: kubernetes.io/hostname
+            labelSelector:
+              matchExpressions:
+              - key: app.kubernetes.io/instance
+                operator: In
+                values:
+                - ${FQDN}
+              - key: app.kubernetes.io/component
+                operator: In
+                values:
+                - app
       containers:
       - command:
         - php-fpm
@@ -192,7 +191,11 @@ spec:
         - containerPort: 9000
           name: api
           protocol: TCP
-        resources: {}
+        resources: 
+          requests:
+            memory: "80Mi"
+          limits:
+            memory: "500Mi"
         terminationMessagePath: /dev/termination-log
         terminationMessagePolicy: File
       dnsPolicy: ClusterFirst
@@ -238,21 +241,34 @@ spec:
         app.kubernetes.io/part-of: Nextcloud
     spec:
       affinity:
-        podAntiAffinity:
+        podAffinity:
           preferredDuringSchedulingIgnoredDuringExecution:
-          - weight: 100
-            podAffinityTerm:
-              topologyKey: kubernetes.io/hostname
-              labelSelector:
-                matchExpressions:
-                - key: app.kubernetes.io/instance
-                  operator: In
-                  values:
-                  - ${FQDN} 
-                - key: app.kubernetes.io/component
-                  operator: In
-                  values:
-                  - web 
+            - weight: 10
+              podAffinityTerm:
+                topologyKey: kubernetes.io/hostname
+                labelSelector:
+                  matchExpressions:
+                  - key: app.kubernetes.io/instance
+                    operator: In
+                    values:
+                    - ${FQDN}
+                  - key: app.kubernetes.io/component
+                    operator: In
+                    values:
+                    - app
+        podAntiAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+          - topologyKey: kubernetes.io/hostname
+            labelSelector:
+              matchExpressions:
+              - key: app.kubernetes.io/instance
+                operator: In
+                values:
+                - ${FQDN} 
+              - key: app.kubernetes.io/component
+                operator: In
+                values:
+                - web
       containers:
       - image: libresh/nextcloud:${NC_WEB_IMAGE_TAG}
         imagePullPolicy: Always
diff --git a/rocketchat/manifests/app.yml b/rocketchat/manifests/app.yml
index 5f4bbaa..4420b30 100644
--- a/rocketchat/manifests/app.yml
+++ b/rocketchat/manifests/app.yml
@@ -1,3 +1,4 @@
+---
 apiVersion: apps/v1
 kind: Deployment
 metadata:
@@ -42,16 +43,14 @@ spec:
                 values:
                 - "true"
         podAntiAffinity:
-          preferredDuringSchedulingIgnoredDuringExecution:
-          - weight: 100
-            podAffinityTerm:
-              topologyKey: kubernetes.io/hostname
-              labelSelector:
-                matchExpressions:
-                - key: app.kubernetes.io/instance
-                  operator: In
-                  values:
-                  - ${FQDN} 
+          requiredDuringSchedulingIgnoredDuringExecution:
+          - topologyKey: kubernetes.io/hostname
+            labelSelector:
+              matchExpressions:
+              - key: app.kubernetes.io/instance
+                operator: In
+                values:
+                - ${FQDN}
       containers:
       - env:
         - name: TZ
@@ -141,7 +140,11 @@ spec:
         - containerPort: 3000
           name: http
           protocol: TCP
-        resources: {}
+        resources:
+          requests:
+            memory: "500Mi"
+          limits:
+            memory: "2Gi"
         terminationMessagePath: /dev/termination-log
         terminationMessagePolicy: File
       dnsPolicy: ClusterFirst
-- 
GitLab