Skip to content
Open
101 changes: 68 additions & 33 deletions charts/plane-enterprise/README.md

Large diffs are not rendered by default.

340 changes: 234 additions & 106 deletions charts/plane-enterprise/questions.yml

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions charts/plane-enterprise/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,12 @@
annotations: {{ toYaml . | nindent 4 }}
{{- end }}
{{- end }}

{{- define "enable.hpa" -}}
{{- $metrics := lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "system:metrics-server" }}
{{- if not $metrics }}
false
{{- else }}
true
{{- end }}
{{- end }}
43 changes: 40 additions & 3 deletions charts/plane-enterprise/templates/workloads/admin.deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,53 @@ spec:
tty: true
resources:
requests:
memory: {{ .Values.services.admin.memoryRequest | default "50Mi" | quote }}
cpu: {{ .Values.services.admin.cpuRequest | default "50m" | quote }}
cpu: {{ .Values.services.admin.cpuRequest | default "100m" | quote }}
memory: {{ .Values.services.admin.memoryRequest | default "200Mi" | quote }}
limits:
memory: {{ .Values.services.admin.memoryLimit | default "1000Mi" | quote }}
cpu: {{ .Values.services.admin.cpuLimit | default "500m" | quote}}
memory: {{ .Values.services.admin.memoryLimit | default "1000Mi" | quote }}
{{- if .Values.extraEnv }}
env:
{{- toYaml .Values.extraEnv | nindent 10 }}
{{- end }}
{{- include "plane.podScheduling" .Values.services.admin }}
serviceAccount: {{ .Release.Name }}-srv-account
serviceAccountName: {{ .Release.Name }}-srv-account
---
{{- if eq (include "enable.hpa" . | trim) "true" }}

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-admin-hpa
namespace: {{ .Release.Namespace }}
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-admin-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ .Release.Name }}-admin-wl
minReplicas: {{ .Values.services.admin.autoscaling.minReplicas | default 1 }}
maxReplicas: {{ .Values.services.admin.autoscaling.maxReplicas | default 5 }}
{{- if or .Values.services.admin.autoscaling.targetCPUUtilizationPercentage .Values.services.admin.autoscaling.targetMemoryUtilizationPercentage }}
metrics:
{{- if .Values.services.admin.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.services.admin.autoscaling.targetCPUUtilizationPercentage | default 90 }}
{{- end }}
{{- if .Values.services.admin.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.services.admin.autoscaling.targetMemoryUtilizationPercentage | default 90 }}
{{- end }}
{{- end }}
{{- end }}
---
48 changes: 43 additions & 5 deletions charts/plane-enterprise/templates/workloads/api.deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ spec:
tty: true
resources:
requests:
memory: {{ .Values.services.api.memoryRequest | default "50Mi" | quote }}
cpu: {{ .Values.services.api.cpuRequest | default "50m" | quote }}
cpu: {{ .Values.services.api.cpuRequest | default "1000m" | quote }}
memory: {{ .Values.services.api.memoryRequest | default "1000Mi" | quote }}
limits:
memory: {{ .Values.services.api.memoryLimit | default "1000Mi" | quote }}
cpu: {{ .Values.services.api.cpuLimit | default "500m" | quote}}
cpu: {{ .Values.services.api.cpuLimit | default "2000m" | quote}}
memory: {{ .Values.services.api.memoryLimit | default "2000Mi" | quote }}
{{- if and .Values.airgapped.enabled .Values.airgapped.s3SecretName .Values.airgapped.s3SecretKey }}
volumeMounts:
- name: s3-custom-ca
Expand Down Expand Up @@ -140,4 +140,42 @@ spec:
{{- include "plane.podScheduling" .Values.services.api }}
serviceAccount: {{ .Release.Name }}-srv-account
serviceAccountName: {{ .Release.Name }}-srv-account
---

---
{{- if eq (include "enable.hpa" . | trim) "true" }}

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-api-hpa
namespace: {{ .Release.Namespace }}
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-api-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ .Release.Name }}-api-wl
minReplicas: {{ .Values.services.api.autoscaling.minReplicas | default 1 }}
maxReplicas: {{ .Values.services.api.autoscaling.maxReplicas | default 5 }}
{{- if or .Values.services.api.autoscaling.targetCPUUtilizationPercentage .Values.services.api.autoscaling.targetMemoryUtilizationPercentage }}
metrics:
{{- if .Values.services.api.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.services.api.autoscaling.targetCPUUtilizationPercentage | default 90 }}
{{- end }}
{{- if .Values.services.api.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.services.api.autoscaling.targetMemoryUtilizationPercentage | default 90 }}
{{- end }}
{{- end }}
{{- end }}
Comment on lines +144 to +180

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

minReplicas, maxReplicas, and averageUtilization rendered as strings will break kubectl apply

The | quote filter forces the integers to YAML strings:

minReplicas: "1"

Kubernetes rejects this with
cannot unmarshal string into Go value of type int32.

Same for averageUtilization.

-  minReplicas: {{ .Values.services.api.autoscaling.minReplicas | default 1 | quote }}
-  maxReplicas: {{ .Values.services.api.autoscaling.maxReplicas | default 5 | quote }}
+  minReplicas: {{ .Values.services.api.autoscaling.minReplicas | default 1 | int }}
+  maxReplicas: {{ .Values.services.api.autoscaling.maxReplicas | default 5 | int }}

-          averageUtilization: {{ .Values.services.api.autoscaling.targetCPUUtilizationPercentage | default 90 | quote }}
+          averageUtilization: {{ .Values.services.api.autoscaling.targetCPUUtilizationPercentage | default 90 | int }}

Repeat the | int change for the memory metric block as well.

🤖 Prompt for AI Agents
In charts/plane-enterprise/templates/workloads/api.deployment.yaml between lines
85 and 121, the minReplicas, maxReplicas, and averageUtilization fields are
incorrectly rendered as strings due to the use of the | quote filter, which
causes kubectl apply to fail. Remove the | quote filter from these fields and
instead use the | int filter to ensure they are rendered as integers. Apply this
fix consistently to both the CPU and memory averageUtilization values.

---
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ spec:
tty: true
resources:
requests:
memory: {{ .Values.services.beatworker.memoryRequest | default "50Mi" | quote }}
cpu: {{ .Values.services.beatworker.cpuRequest | default "50m" | quote }}
cpu: {{ .Values.services.beatworker.cpuRequest | default "500m" | quote }}
memory: {{ .Values.services.beatworker.memoryRequest | default "1000Mi" | quote }}
limits:
memory: {{ .Values.services.beatworker.memoryLimit | default "1000Mi" | quote }}
cpu: {{ .Values.services.beatworker.cpuLimit | default "500m" | quote}}
cpu: {{ .Values.services.beatworker.cpuLimit | default "1000m" | quote}}
memory: {{ .Values.services.beatworker.memoryLimit | default "2000Mi" | quote }}
command:
- ./bin/docker-entrypoint-beat.sh
envFrom:
Expand All @@ -55,4 +55,41 @@ spec:
{{- include "plane.podScheduling" .Values.services.beatworker }}
serviceAccount: {{ .Release.Name }}-srv-account
serviceAccountName: {{ .Release.Name }}-srv-account
---
{{- if eq (include "enable.hpa" . | trim) "true" }}

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-beat-worker-hpa
namespace: {{ .Release.Namespace }}
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-beat-worker-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ .Release.Name }}-beat-worker-wl
minReplicas: {{ .Values.services.beatworker.autoscaling.minReplicas | default 1 }}
maxReplicas: {{ .Values.services.beatworker.autoscaling.maxReplicas | default 5 }}
{{- if or .Values.services.beatworker.autoscaling.targetCPUUtilizationPercentage .Values.services.beatworker.autoscaling.targetMemoryUtilizationPercentage }}
metrics:
{{- if .Values.services.beatworker.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.services.beatworker.autoscaling.targetCPUUtilizationPercentage | default 90 }}
{{- end }}
{{- if .Values.services.beatworker.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.services.beatworker.autoscaling.targetMemoryUtilizationPercentage | default 90 }}
{{- end }}
{{- end }}
{{- end }}
---
44 changes: 41 additions & 3 deletions charts/plane-enterprise/templates/workloads/email.deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,11 @@ spec:
failureThreshold: 3
resources:
requests:
memory: {{ .Values.services.email_service.memoryRequest | default "50Mi" | quote }}
cpu: {{ .Values.services.email_service.cpuRequest | default "50m" | quote }}
cpu: {{ .Values.services.email_service.cpuRequest | default "100m" | quote }}
memory: {{ .Values.services.email_service.memoryRequest | default "200Mi" | quote }}
limits:
memory: {{ .Values.services.email_service.memoryLimit | default "1000Mi" | quote }}
cpu: {{ .Values.services.email_service.cpuLimit | default "500m" | quote}}
memory: {{ .Values.services.email_service.memoryLimit | default "1000Mi" | quote }}
envFrom:
- configMapRef:
name: {{ .Release.Name }}-email-vars
Expand Down Expand Up @@ -105,5 +105,43 @@ spec:
{{- include "plane.podScheduling" .Values.services.email_service }}
serviceAccount: {{ .Release.Name }}-srv-account
serviceAccountName: {{ .Release.Name }}-srv-account

---
{{- if eq (include "enable.hpa" . | trim) "true" }}

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-email-hpa
namespace: {{ .Release.Namespace }}
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-email-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ .Release.Name }}-email-app
minReplicas: {{ .Values.services.email_service.autoscaling.minReplicas | default 1 }}
maxReplicas: {{ .Values.services.email_service.autoscaling.maxReplicas | default 5 }}
{{- if or .Values.services.email_service.autoscaling.targetCPUUtilizationPercentage .Values.services.email_service.autoscaling.targetMemoryUtilizationPercentage }}
metrics:
{{- if .Values.services.email_service.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.services.email_service.autoscaling.targetCPUUtilizationPercentage | default 90 }}
{{- end }}
{{- if .Values.services.email_service.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.services.email_service.autoscaling.targetMemoryUtilizationPercentage | default 90 }}
{{- end }}
{{- end }}
{{- end }}
---
{{- end }}
45 changes: 41 additions & 4 deletions charts/plane-enterprise/templates/workloads/live.deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ spec:
tty: true
resources:
requests:
memory: {{ .Values.services.live.memoryRequest | default "50Mi" | quote }}
cpu: {{ .Values.services.live.cpuRequest | default "50m" | quote }}
cpu: {{ .Values.services.live.cpuRequest | default "500m" | quote }}
memory: {{ .Values.services.live.memoryRequest | default "1000Mi" | quote }}
limits:
memory: {{ .Values.services.live.memoryLimit | default "1000Mi" | quote }}
cpu: {{ .Values.services.live.cpuLimit | default "500m" | quote}}
cpu: {{ .Values.services.live.cpuLimit | default "1000m" | quote}}
memory: {{ .Values.services.live.memoryLimit | default "2000Mi" | quote }}
envFrom:
- configMapRef:
name: {{ .Release.Name }}-live-vars
Expand All @@ -68,3 +68,40 @@ spec:
serviceAccount: {{ .Release.Name }}-srv-account
serviceAccountName: {{ .Release.Name }}-srv-account
---
{{- if eq (include "enable.hpa" . | trim) "true" }}

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-live-hpa
namespace: {{ .Release.Namespace }}
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-live-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ .Release.Name }}-live-wl
minReplicas: {{ .Values.services.live.autoscaling.minReplicas | default 1 }}
maxReplicas: {{ .Values.services.live.autoscaling.maxReplicas | default 5 }}
{{- if or .Values.services.live.autoscaling.targetCPUUtilizationPercentage .Values.services.live.autoscaling.targetMemoryUtilizationPercentage }}
metrics:
{{- if .Values.services.live.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.services.live.autoscaling.targetCPUUtilizationPercentage | default 90 }}
{{- end }}
{{- if .Values.services.live.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.services.live.autoscaling.targetMemoryUtilizationPercentage | default 90 }}
{{- end }}
{{- end }}
{{- end }}
Comment on lines 70 to +106

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Cast numeric knobs to int to avoid “cannot unmarshal string into int32”

If a user sets these values as strings in values.yaml (common Helm pattern) the rendered YAML will emit quoted scalars, and kubectl apply will fail. Pipe through | int to guarantee correct type:

-  minReplicas: {{ .Values.services.live.autoscaling.minReplicas | default 1 }}
-  maxReplicas: {{ .Values.services.live.autoscaling.maxReplicas | default 5 }}
+  minReplicas: {{ .Values.services.live.autoscaling.minReplicas | default 1 | int }}
+  maxReplicas: {{ .Values.services.live.autoscaling.maxReplicas | default 5 | int }}

-          averageUtilization: {{ .Values.services.live.autoscaling.targetCPUUtilizationPercentage | default 90 }}
+          averageUtilization: {{ .Values.services.live.autoscaling.targetCPUUtilizationPercentage | default 90 | int }}

Repeat the | int addition for the memory metric block as well.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
---
{{- if eq (include "enable.hpa" . | trim) "true" }}
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-live-hpa
namespace: {{ .Release.Namespace }}
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-live-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ .Release.Name }}-live-wl
minReplicas: {{ .Values.services.live.autoscaling.minReplicas | default 1 }}
maxReplicas: {{ .Values.services.live.autoscaling.maxReplicas | default 5 }}
{{- if or .Values.services.live.autoscaling.targetCPUUtilizationPercentage .Values.services.live.autoscaling.targetMemoryUtilizationPercentage }}
metrics:
{{- if .Values.services.live.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.services.live.autoscaling.targetCPUUtilizationPercentage | default 90 }}
{{- end }}
{{- if .Values.services.live.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.services.live.autoscaling.targetMemoryUtilizationPercentage | default 90 }}
{{- end }}
{{- end }}
{{- end }}
---
{{- if eq (include "enable.hpa" . | trim) "true" }}
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-live-hpa
namespace: {{ .Release.Namespace }}
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-live-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ .Release.Name }}-live-wl
minReplicas: {{ .Values.services.live.autoscaling.minReplicas | default 1 | int }}
maxReplicas: {{ .Values.services.live.autoscaling.maxReplicas | default 5 | int }}
{{- if or .Values.services.live.autoscaling.targetCPUUtilizationPercentage .Values.services.live.autoscaling.targetMemoryUtilizationPercentage }}
metrics:
{{- if .Values.services.live.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.services.live.autoscaling.targetCPUUtilizationPercentage | default 90 | int }}
{{- end }}
{{- if .Values.services.live.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.services.live.autoscaling.targetMemoryUtilizationPercentage | default 90 }}
{{- end }}
{{- end }}
{{- end }}
🤖 Prompt for AI Agents
In charts/plane-enterprise/templates/workloads/live.deployment.yaml between
lines 69 and 105, the minReplicas, maxReplicas, and averageUtilization values
for CPU and memory metrics may be rendered as strings if set as strings in
values.yaml, causing kubectl apply to fail. Fix this by piping these values
through the int function (| int) to ensure they are rendered as integers. Apply
this change to minReplicas, maxReplicas, targetCPUUtilizationPercentage, and
targetMemoryUtilizationPercentage fields.

---
46 changes: 42 additions & 4 deletions charts/plane-enterprise/templates/workloads/silo.deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,11 @@ spec:
tty: true
resources:
requests:
memory: {{ .Values.services.silo.memoryRequest | default "50Mi" | quote }}
cpu: {{ .Values.services.silo.cpuRequest | default "50m" | quote }}
cpu: {{ .Values.services.silo.cpuRequest | default "250m" | quote }}
memory: {{ .Values.services.silo.memoryRequest | default "1000Mi" | quote }}
limits:
memory: {{ .Values.services.silo.memoryLimit | default "1000Mi" | quote }}
cpu: {{ .Values.services.silo.cpuLimit | default "500m" | quote}}
cpu: {{ .Values.services.silo.cpuLimit | default "1000m" | quote}}
memory: {{ .Values.services.silo.memoryLimit | default "2000Mi" | quote }}
envFrom:
- configMapRef:
name: {{ .Release.Name }}-silo-vars
Expand All @@ -90,5 +90,43 @@ spec:
{{- include "plane.podScheduling" .Values.services.silo }}
serviceAccount: {{ .Release.Name }}-srv-account
serviceAccountName: {{ .Release.Name }}-srv-account

---
{{- if eq (include "enable.hpa" . | trim) "true" }}

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-silo-hpa
namespace: {{ .Release.Namespace }}
labels:
app.name: {{ .Release.Namespace }}-{{ .Release.Name }}-silo-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ .Release.Name }}-silo-wl
minReplicas: {{ .Values.services.silo.autoscaling.minReplicas | default 1 }}
maxReplicas: {{ .Values.services.silo.autoscaling.maxReplicas | default 5 }}
{{- if or .Values.services.silo.autoscaling.targetCPUUtilizationPercentage .Values.services.silo.autoscaling.targetMemoryUtilizationPercentage }}
metrics:
{{- if .Values.services.silo.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.services.silo.autoscaling.targetCPUUtilizationPercentage | default 90 }}
{{- end }}
{{- if .Values.services.silo.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.services.silo.autoscaling.targetMemoryUtilizationPercentage | default 90 }}
{{- end }}
{{- end }}
{{- end }}
---
{{- end }}
Loading
Loading