Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions kubernetes/glpi/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,66 @@ Return the proper MariaDB image name
{{- printf "%s:%s" .Values.mariadb.image.repository .Values.mariadb.image.tag }}
{{- end }}

{{/*
Return a resource request/limit object for one of a fixed set of size presets
(nano/micro/small/medium/large/xlarge/2xlarge), following the same tiers used by
the Bitnami charts (bitnami/common's common.resources.preset) so operators already
familiar with that convention get predictable numbers here too. Only used as a
fallback when a component's explicit `resources` value is left empty ({}); an
explicit `resources` block always takes precedence over the preset.
Usage: {{ include "glpi.resources.preset" (dict "type" "small") }}
*/}}
{{- define "glpi.resources.preset" -}}
{{- $presets := dict
"nano" (dict
"requests" (dict "cpu" "100m" "memory" "128Mi")
"limits" (dict "cpu" "150m" "memory" "192Mi")
)
"micro" (dict
"requests" (dict "cpu" "250m" "memory" "256Mi")
"limits" (dict "cpu" "375m" "memory" "384Mi")
)
"small" (dict
"requests" (dict "cpu" "500m" "memory" "512Mi")
"limits" (dict "cpu" "750m" "memory" "768Mi")
)
"medium" (dict
"requests" (dict "cpu" "500m" "memory" "1024Mi")
"limits" (dict "cpu" "750m" "memory" "1536Mi")
)
"large" (dict
"requests" (dict "cpu" "1.0" "memory" "2048Mi")
"limits" (dict "cpu" "1.5" "memory" "3072Mi")
)
"xlarge" (dict
"requests" (dict "cpu" "1.0" "memory" "3072Mi")
"limits" (dict "cpu" "3.0" "memory" "6144Mi")
)
"2xlarge" (dict
"requests" (dict "cpu" "1.0" "memory" "3072Mi")
"limits" (dict "cpu" "6.0" "memory" "12288Mi")
)
}}
{{- if hasKey $presets .type -}}
{{- index $presets .type | toYaml -}}
{{- else -}}
{{- printf "ERROR: resourcesPreset '%s' invalid. Allowed values are %s" .type (join "," (keys $presets)) | fail -}}
{{- end -}}
{{- end }}

{{/*
Render a component's resources block: uses the explicit `resources` dict if it is
non-empty, otherwise falls back to `resourcesPreset` (skipped entirely if both are
unset). Usage: {{- include "glpi.resources" (dict "resources" .Values.glpi.phpfpm.resources "preset" .Values.glpi.phpfpm.resourcesPreset) | nindent 12 }}
*/}}
{{- define "glpi.resources" -}}
{{- if .resources -}}
{{- toYaml .resources -}}
{{- else if and .preset (ne .preset "none") -}}
{{- include "glpi.resources.preset" (dict "type" .preset) -}}
{{- end -}}
{{- end }}

{{/*
Return the proper Redis image name
*/}}
Expand Down
10 changes: 8 additions & 2 deletions kubernetes/glpi/templates/glpi-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,11 @@ spec:
timeoutSeconds: {{ .Values.glpi.phpfpm.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.glpi.phpfpm.readinessProbe.failureThreshold }}
{{- end }}
{{- $phpfpmRes := include "glpi.resources" (dict "resources" .Values.glpi.phpfpm.resources "preset" .Values.glpi.phpfpm.resourcesPreset) }}
{{- if $phpfpmRes }}
resources:
{{- toYaml .Values.glpi.phpfpm.resources | nindent 12 }}
{{- $phpfpmRes | nindent 12 }}
{{- end }}
volumes:
- name: etc
persistentVolumeClaim:
Expand Down Expand Up @@ -196,8 +199,11 @@ spec:
timeoutSeconds: {{ .Values.glpi.nginx.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.glpi.nginx.readinessProbe.failureThreshold }}
{{- end }}
{{- $nginxRes := include "glpi.resources" (dict "resources" .Values.glpi.nginx.resources "preset" .Values.glpi.nginx.resourcesPreset) }}
{{- if $nginxRes }}
resources:
{{- toYaml .Values.glpi.nginx.resources | nindent 12 }}
{{- $nginxRes | nindent 12 }}
{{- end }}
volumes:
- name: etc
persistentVolumeClaim:
Expand Down
5 changes: 4 additions & 1 deletion kubernetes/glpi/templates/mariadb-statefulset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,11 @@ spec:
- containerPort: 3306
name: mariadb
protocol: TCP
{{- $mariadbRes := include "glpi.resources" (dict "resources" .Values.mariadb.primary.resources "preset" .Values.mariadb.primary.resourcesPreset) }}
{{- if $mariadbRes }}
resources:
{{- toYaml .Values.mariadb.primary.resources | nindent 12 }}
{{- $mariadbRes | nindent 12 }}
{{- end }}
volumeMounts:
- name: data
mountPath: "/var/lib/mysql"
Expand Down
5 changes: 4 additions & 1 deletion kubernetes/glpi/templates/redis-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ spec:
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
{{- $redisRes := include "glpi.resources" (dict "resources" .Values.redis.resources "preset" .Values.redis.resourcesPreset) }}
{{- if $redisRes }}
resources:
{{- toYaml .Values.redis.resources | nindent 12 }}
{{- $redisRes | nindent 12 }}
{{- end }}
{{- end }}
17 changes: 17 additions & 0 deletions kubernetes/glpi/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ glpi:
# Number of PHP-FPM replicas
replicaCount: 1

# Set container resources according to one common preset (allowed values: none, nano,
# micro, small, medium, large, xlarge, 2xlarge). Only applied when `resources` below is
# left empty ({}). In production, setting `resources` explicitly is recommended over
# relying on a preset.
resourcesPreset: "none"
# Resource limits and requests for PHP-FPM container
resources:
limits:
Expand Down Expand Up @@ -82,6 +87,10 @@ glpi:
# Number of Nginx replicas
replicaCount: 1

# Set container resources according to one common preset (allowed values: none, nano,
# micro, small, medium, large, xlarge, 2xlarge). Only applied when `resources` below is
# left empty ({}).
resourcesPreset: "none"
# Resource limits and requests for Nginx container
resources:
limits:
Expand Down Expand Up @@ -250,6 +259,10 @@ mariadb:

# Primary database configuration
primary:
# Set container resources according to one common preset (allowed values: none, nano,
# micro, small, medium, large, xlarge, 2xlarge). Only applied when `resources` below is
# left empty ({}).
resourcesPreset: "none"
# Resource limits and requests for MariaDB
resources:
limits:
Expand Down Expand Up @@ -309,6 +322,10 @@ redis:
# Number of Redis replicas
replicaCount: 1

# Set container resources according to one common preset (allowed values: none, nano,
# micro, small, medium, large, xlarge, 2xlarge). Only applied when `resources` below is
# left empty ({}).
resourcesPreset: "none"
# Resource limits and requests for Redis
resources:
limits:
Expand Down