diff --git a/k8s/base/app-redis.yml b/k8s/base/app-redis.yml index c0b53706..a056fec1 100644 --- a/k8s/base/app-redis.yml +++ b/k8s/base/app-redis.yml @@ -36,6 +36,30 @@ spec: containers: - name: redis image: gcr.io/tacoma-app/redis + resources: + requests: + memory: 128Mi + cpu: 50m + limits: + memory: 1Gi + cpu: 200m imagePullPolicy: Always ports: - containerPort: 6379 + +--- +apiVersion: autoscaling.k8s.io/v1 +kind: VerticalPodAutoscaler +metadata: + name: redis +spec: + targetRef: + kind: Deployment + name: redis-prod + apiVersion: apps/v1 + updatePolicy: + updateMode: Off + resourcePolicy: + containerPolicies: + - mode: 'Auto' + containerName: '*' diff --git a/k8s/base/app-worker-beat.yml b/k8s/base/app-worker-beat.yml index 5625b63d..39978281 100644 --- a/k8s/base/app-worker-beat.yml +++ b/k8s/base/app-worker-beat.yml @@ -19,9 +19,30 @@ spec: containers: - name: beat image: gcr.io/tacoma-app/bg_worker + resources: + requests: + memory: 256Mi + cpu: 50m command: - /run-beat.sh imagePullPolicy: Always envFrom: - secretRef: name: prod-secrets + +--- +apiVersion: autoscaling.k8s.io/v1 +kind: VerticalPodAutoscaler +metadata: + name: beat +spec: + targetRef: + kind: Deployment + name: beat-prod + apiVersion: apps/v1 + updatePolicy: + updateMode: Off + resourcePolicy: + containerPolicies: + - mode: 'Auto' + containerName: '*' diff --git a/k8s/base/app-worker.yml b/k8s/base/app-worker.yml index a100bd3d..2e9c5aeb 100644 --- a/k8s/base/app-worker.yml +++ b/k8s/base/app-worker.yml @@ -19,9 +19,33 @@ spec: containers: - name: worker image: gcr.io/tacoma-app/bg_worker + resources: + requests: + memory: 512Mi + cpu: 100m + limits: + memory: 2Gi + cpu: 1000m command: - /run-worker.sh imagePullPolicy: Always envFrom: - secretRef: name: prod-secrets + +--- +apiVersion: autoscaling.k8s.io/v1 +kind: VerticalPodAutoscaler +metadata: + name: worker +spec: + targetRef: + kind: Deployment + name: worker-prod + apiVersion: apps/v1 + updatePolicy: + updateMode: Off + resourcePolicy: + containerPolicies: + - mode: 'Auto' + containerName: '*' diff --git a/k8s/base/app.yml b/k8s/base/app.yml index a992a3cb..5cfa6f48 100644 --- a/k8s/base/app.yml +++ b/k8s/base/app.yml @@ -40,6 +40,13 @@ spec: containers: - name: stormpiper image: gcr.io/tacoma-app/stormpiper-pod + resources: + requests: + memory: 512Mi + cpu: 100m + limits: + memory: 1Gi + cpu: 500m imagePullPolicy: Always ports: - name: web @@ -52,3 +59,20 @@ spec: envFrom: - secretRef: name: prod-secrets + +--- +apiVersion: autoscaling.k8s.io/v1 +kind: VerticalPodAutoscaler +metadata: + name: stormpiper +spec: + targetRef: + kind: Deployment + name: stormpiper-prod + apiVersion: apps/v1 + updatePolicy: + updateMode: Off + resourcePolicy: + containerPolicies: + - mode: 'Auto' + containerName: '*' diff --git a/k8s/dev/kustomization.yml b/k8s/dev/kustomization.yml index b43da707..28f7be67 100644 --- a/k8s/dev/kustomization.yml +++ b/k8s/dev/kustomization.yml @@ -1,8 +1,12 @@ resources: - ../base nameSuffix: -dev -commonLabels: - app: stormpiper-dev +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +labels: +- includeSelectors: true + pairs: + app: stormpiper-dev images: - name: gcr.io/tacoma-app/stormpiper-pod newName: gcr.io/tacoma-app/stormpiper-pod @@ -13,22 +17,54 @@ images: - name: gcr.io/tacoma-app/redis newName: gcr.io/tacoma-app/redis newTag: edge -patchesJSON6902: - - target: +patches: + - path: secrets.yml + target: group: apps - version: v1 kind: Deployment - name: stormpiper-dev - path: secrets.yml - - target: + name: stormpiper + version: v1 + - path: secrets.yml + target: group: apps + kind: Deployment + name: worker version: v1 + - path: secrets.yml + target: + group: apps kind: Deployment - name: worker-dev - path: secrets.yml + name: beat + version: v1 - target: - group: apps version: v1 - kind: Deployment - name: beat-dev - path: secrets.yml + kind: VerticalPodAutoscaler + name: redis + patch: |- + - op: replace + path: /spec/targetRef/name + value: redis-dev + - target: + version: v1 + kind: VerticalPodAutoscaler + name: beat + patch: |- + - op: replace + path: /spec/targetRef/name + value: beat-dev + - target: + version: v1 + kind: VerticalPodAutoscaler + name: worker + patch: |- + - op: replace + path: /spec/targetRef/name + value: worker-dev + - target: + version: v1 + kind: VerticalPodAutoscaler + name: stormpiper + patch: |- + - op: replace + path: /spec/targetRef/name + value: stormpiper-dev diff --git a/k8s/readme.md b/k8s/readme.md index fbcb8b40..60ef1500 100644 --- a/k8s/readme.md +++ b/k8s/readme.md @@ -24,3 +24,9 @@ Update env vars if needed and then run from the project directory, rather than f kubectl rollout restart deploy --selector=app=stormpiper-dev kubectl rollout restart deploy --selector=app=stormpiper-prod ``` + +# check usage recommendations + +``` + kubectl get vpa worker-dev -o yaml +```