Skip to content

Commit

Permalink
Define service resources from within services.{service}.resources values
Browse files Browse the repository at this point in the history
This deprecates the use of resources.memory.{service}, except for job resources (e.g. app-init/app-migrate, which don't have a similar abstraction yet)

Also the helm/_twig/values.yaml/resources.yml.twig is also deprecated, as unnecessary with serialisation of resources to yaml
  • Loading branch information
andytson-inviqa committed Oct 23, 2020
1 parent 5b7a354 commit 7eb3ef9
Show file tree
Hide file tree
Showing 19 changed files with 168 additions and 192 deletions.
24 changes: 24 additions & 0 deletions src/_base/harness/attributes/docker-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ attributes:
publish: true
environment:
FPM_HOST: php-fpm
resources:
memory: "100Mi"
console:
enabled: true
image: = @('docker.repository') ~ ':' ~ @('app.version') ~ '-console'
Expand All @@ -46,19 +48,27 @@ attributes:
HAS_VARNISH: "= @('services.varnish.enabled') ? 'true' : 'false'"
environment_secrets:
DB_ADMIN_PASS: = @('database.root_pass')
resources:
memory: "2048Mi"
cron:
enabled: "= 'cron' in @('app.services')"
image: = @('docker.repository') ~ ':' ~ @('app.version') ~ '-cron'
publish: "= @('services.cron.enabled')"
resources:
memory: "1024Mi"
php-fpm:
image: = @('docker.repository') ~ ':' ~ @('app.version') ~ '-php-fpm'
publish: true
environment:
AUTOSTART_PHP_FPM: "true"
resources:
memory: "1024Mi"
php-fpm-exporter:
image: hipages/php-fpm_exporter
environment:
PHP_FPM_SCRAPE_URI: = php_fpm_exporter_scrape_url('php-fpm', @('php-fpm.pools'))
resources:
memory: "100Mi"
blackfire:
enabled: "= 'blackfire' in @('app.services')"
image: blackfire/blackfire:latest
Expand All @@ -73,6 +83,8 @@ attributes:
elasticsearch:
enabled: "= 'elasticsearch' in @('app.services')"
image: = @('elasticsearch.image') ~ ':' ~ @('elasticsearch.tag')
resources:
memory: "1024Mi"
memcached:
enabled: "= 'memcached' in @('app.services')"
image: memcached:1-alpine
Expand All @@ -86,6 +98,8 @@ attributes:
environment_secrets:
MYSQL_PASSWORD: = @('database.pass')
MYSQL_ROOT_PASSWORD: = @('database.root_pass')
resources:
memory: "512Mi"
postgres:
enabled: "= 'postgres' in @('app.services')"
image: postgres:9.6
Expand All @@ -95,6 +109,8 @@ attributes:
PGDATA: /var/lib/postgresql/data/pgdata
environment_secrets:
POSTGRES_PASSWORD: = @('database.pass')
resources:
memory: "512Mi"
rabbitmq:
enabled: "= 'rabbitmq' in @('app.services')"
image: = @('rabbitmq.image') ~ ':' ~ @('rabbitmq.tag')
Expand All @@ -104,12 +120,18 @@ attributes:
environment_secrets:
RABBITMQ_DEFAULT_PASS: = @('rabbitmq.password')
RABBITMQ_ERLANG_COOKIE: = @('rabbitmq.erlang_cookie')
resources:
memory: "1024Mi"
redis:
enabled: "= 'redis' in @('app.services')"
image: redis:5-alpine
resources:
memory: "256Mi"
redis_session:
enabled: "= 'redis_session' in @('app.services')"
image: redis:5-alpine
resources:
memory: "1024Mi"
relay:
enabled: true
publish: false
Expand All @@ -123,6 +145,8 @@ attributes:
image: varnish:6
environment:
VARNISH_SIZE: "1024M"
resources:
memory: "1124Mi"
# webapp is by default two services combined, nginx and php-fpm
webapp:
enabled: true
Expand Down
21 changes: 3 additions & 18 deletions src/_base/helm/app/_twig/values.yaml/resources.yml.twig
Original file line number Diff line number Diff line change
@@ -1,18 +1,3 @@
cpu:
requests:
limits:
memory:
app_init: {{ @('resources.memory.app_init') }}
app_migrate: {{ @('resources.memory.app_migrate') }}
console: {{ @('resources.memory.console') }}
cron: {{ @('resources.memory.cron') }}
elasticsearch: {{ @('resources.memory.elasticsearch') }}
mysql: {{ @('resources.memory.mysql') }}
nginx: {{ @('resources.memory.nginx') }}
php_fpm: {{ @('resources.memory.php_fpm') }}
php_fpm_exporter: {{ @('resources.memory.php_fpm_exporter') }}
postgres: {{ @('resources.memory.postgres') }}
rabbitmq: {{ @('resources.memory.rabbitmq') }}
redis: {{ @('resources.memory.redis') }}
redis_session: {{ @('resources.memory.redis_session') }}
varnish: {{ @('resources.memory.varnish') }}
{# this file is deprecated, and instead resources attribute is serialised into the values directly #}
{# in the case of services, resource attribute is further deprecated and available continuing forward in services.*.resources #}
{{ to_nice_yaml(@('resources'), 2, 2) | raw }}
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ spec:
name: console
resources:
limits:
memory: {{ .Values.resources.memory.console }}
memory: {{ .Values.resources.memory.console | default $service.resources.memory }}
requests:
memory: {{ .Values.resources.memory.console }}
memory: {{ .Values.resources.memory.console | default $service.resources.memory }}
readinessProbe:
exec:
command:
Expand Down
4 changes: 2 additions & 2 deletions src/_base/helm/app/templates/application/cron/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ spec:
imagePullPolicy: Always
resources:
limits:
memory: {{ .Values.resources.memory.cron }}
memory: {{ .Values.resources.memory.cron | default $service.resources.memory }}
requests:
memory: {{ .Values.resources.memory.cron }}
memory: {{ .Values.resources.memory.cron | default $service.resources.memory }}
volumeMounts:
{{- if not (and (eq "" (include "application.volumeMounts.backend" .)) (eq "" (include "application.volumeMounts.all" .)) ) }}
{{- include "application.volumeMounts.backend" . | indent 8 }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ spec:
containerPort: 80
resources:
limits:
memory: {{ .Values.resources.memory.nginx }}
memory: {{ .Values.resources.memory.nginx | default $service_php_fpm.resources.memory }}
requests:
memory: {{ .Values.resources.memory.nginx }}
memory: {{ .Values.resources.memory.nginx | default $service_php_fpm.resources.memory }}
readinessProbe:
tcpSocket:
port: 80
Expand Down
29 changes: 15 additions & 14 deletions src/_base/helm/app/templates/service/elasticsearch/deployment.yaml
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
{{ if .Values.service.elasticsearch | default .Values.docker.services.elasticsearch.enabled }}
{{- with .Values.docker.services.elasticsearch -}}
{{- if $.Values.service.elasticsearch | default .enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.resourcePrefix }}elasticsearch
name: {{ $.Values.resourcePrefix }}elasticsearch
annotations:
argocd.argoproj.io/sync-wave: "4"
labels:
app.service: {{ .Values.resourcePrefix }}elasticsearch
app.service: {{ $.Values.resourcePrefix }}elasticsearch
spec:
replicas: 1
selector:
matchLabels:
app.service: {{ .Values.resourcePrefix }}elasticsearch
{{- if .Values.persistence.elasticsearch.enabled }}
app.service: {{ $.Values.resourcePrefix }}elasticsearch
{{- if .enabled }}
strategy:
type: Recreate
{{- end }}
template:
metadata:
labels:
app.service: {{ .Values.resourcePrefix }}elasticsearch
app.service: {{ $.Values.resourcePrefix }}elasticsearch
spec:
securityContext:
fsGroup: 1000
Expand All @@ -29,32 +30,32 @@ spec:
value: -Xmx512m -Xms512m
- name: discovery.type
value: single-node
image: {{ .Values.docker.image.elasticsearch | default .Values.docker.services.elasticsearch.image | quote }}
image: {{ $.Values.docker.image.elasticsearch | default .image | quote }}
imagePullPolicy: Always
name: elasticsearch
ports:
- containerPort: 9200
resources:
limits:
memory: {{ .Values.resources.memory.elasticsearch }}
memory: {{ $.Values.resources.memory.elasticsearch | default .resources.memory }}
requests:
memory: {{ .Values.resources.memory.elasticsearch }}
memory: {{ $.Values.resources.memory.elasticsearch | default .resources.memory }}
readinessProbe:
tcpSocket:
port: 9200
initialDelaySeconds: 5
periodSeconds: 10
volumeMounts:
- name: {{ .Values.resourcePrefix }}elasticsearch-persistent-storage
- name: {{ $.Values.resourcePrefix }}elasticsearch-persistent-storage
mountPath: /usr/share/elasticsearch/data
restartPolicy: Always
volumes:
- name: {{ .Values.resourcePrefix }}elasticsearch-persistent-storage
{{- if .Values.persistence.elasticsearch.enabled }}
- name: {{ $.Values.resourcePrefix }}elasticsearch-persistent-storage
{{- if $.Values.persistence.elasticsearch.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.resourcePrefix }}elasticsearch-pv-claim
claimName: {{ $.Values.resourcePrefix }}elasticsearch-pv-claim
{{- else }}
emptyDir: {}
{{- end }}
status: {}
{{ end }}
{{- end }}
39 changes: 20 additions & 19 deletions src/_base/helm/app/templates/service/mysql/deployment.yaml
Original file line number Diff line number Diff line change
@@ -1,43 +1,44 @@
{{ if .Values.service.mysql | default .Values.docker.services.mysql.enabled }}
{{- with .Values.docker.services.mysql -}}
{{- if $.Values.service.mysql | default .enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.resourcePrefix }}mysql
name: {{ $.Values.resourcePrefix }}mysql
annotations:
argocd.argoproj.io/sync-wave: "4"
labels:
app.service: {{ .Values.resourcePrefix }}mysql
app.service: {{ $.Values.resourcePrefix }}mysql
spec:
replicas: 1
selector:
matchLabels:
app.service: {{ .Values.resourcePrefix }}mysql
{{- if .Values.persistence.mysql.enabled }}
app.service: {{ $.Values.resourcePrefix }}mysql
{{- if $.Values.persistence.mysql.enabled }}
strategy:
type: Recreate
{{- end }}
template:
metadata:
labels:
app.service: {{ .Values.resourcePrefix }}mysql
app.service: {{ $.Values.resourcePrefix }}mysql
spec:
containers:
- env:
{{- range $key, $value := .Values.docker.services.mysql.environment }}
{{- range $key, $value := .environment }}
- name: {{ $key | quote }}
value: {{ $value | quote }}
{{- end }}
{{- if .Values.docker.services.mysql.environment_secrets }}
{{- if .environment_secrets }}
envFrom:
- secretRef:
name: {{ .Values.resourcePrefix }}mysql
name: {{ $.Values.resourcePrefix }}mysql
{{- end }}
image: {{ .Values.docker.image.mysql | default .Values.docker.services.mysql.image | quote }}
image: {{ $.Values.docker.image.mysql | default .image | quote }}
imagePullPolicy: Always
name: mysql
{{- if .Values.docker.services.mysql.options }}
{{- if .options }}
args:
{{- range $var, $value := .Values.docker.services.mysql.options }}
{{- range $var, $value := .options }}
{{- if $value }}
- {{ print "--" $var "=" $value | quote }}
{{- end }}
Expand All @@ -47,25 +48,25 @@ spec:
- containerPort: 3306
resources:
limits:
memory: {{ .Values.resources.memory.mysql }}
memory: {{ $.Values.resources.memory.mysql | default .resources.memory }}
requests:
memory: {{ .Values.resources.memory.mysql }}
memory: {{ $.Values.resources.memory.mysql | default .resources.memory }}
readinessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 5
periodSeconds: 10
volumeMounts:
- name: {{ .Values.resourcePrefix }}mysql-persistent-storage
- name: {{ $.Values.resourcePrefix }}mysql-persistent-storage
mountPath: /var/lib/mysql
restartPolicy: Always
volumes:
- name: {{ .Values.resourcePrefix }}mysql-persistent-storage
{{- if .Values.persistence.mysql.enabled }}
- name: {{ $.Values.resourcePrefix }}mysql-persistent-storage
{{- if $.Values.persistence.mysql.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.resourcePrefix }}mysql-pv-claim
claimName: {{ $.Values.resourcePrefix }}mysql-pv-claim
{{- else }}
emptyDir: {}
{{- end }}
status: {}
{{ end }}
{{- end }}
35 changes: 18 additions & 17 deletions src/_base/helm/app/templates/service/postgres/deployment.yaml
Original file line number Diff line number Diff line change
@@ -1,63 +1,64 @@
{{ if .Values.service.postgres | default .Values.docker.services.postgres.enabled }}
{{- with .Values.docker.services.postgres -}}
{{- if $.Values.service.postgres | default .enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.resourcePrefix }}postgres
name: {{ $.Values.resourcePrefix }}postgres
annotations:
argocd.argoproj.io/sync-wave: "4"
labels:
app.service: {{ .Values.resourcePrefix }}postgres
app.service: {{ $.Values.resourcePrefix }}postgres
spec:
replicas: 1
selector:
matchLabels:
app.service: {{ .Values.resourcePrefix }}postgres
{{- if .Values.persistence.postgres.enabled }}
app.service: {{ $.Values.resourcePrefix }}postgres
{{- if $.Values.persistence.postgres.enabled }}
strategy:
type: Recreate
{{- end }}
template:
metadata:
labels:
app.service: {{ .Values.resourcePrefix }}postgres
app.service: {{ $.Values.resourcePrefix }}postgres
spec:
containers:
- env:
{{- range $key, $value := .Values.docker.services.postgres.environment }}
{{- range $key, $value := .environment }}
- name: {{ $key | quote }}
value: {{ $value | quote }}
{{- end }}
{{- if .Values.docker.services.postgres.environment_secrets }}
{{- if $service.environment_secrets }}
envFrom:
- secretRef:
name: {{ .Values.resourcePrefix }}postgres
name: {{ $.Values.resourcePrefix }}postgres
{{- end }}
image: {{ .Values.docker.services.postgres.image | quote }}
image: {{ .image | quote }}
imagePullPolicy: Always
name: postgres
ports:
- containerPort: 5432
resources:
limits:
memory: {{ .Values.resources.memory.postgres }}
memory: {{ $.Values.resources.memory.postgres | default .resources.memory }}
requests:
memory: {{ .Values.resources.memory.postgres }}
memory: {{ $.Values.resources.memory.postgres | default .resources.memory }}
readinessProbe:
tcpSocket:
port: 5432
initialDelaySeconds: 5
periodSeconds: 10
volumeMounts:
- name: {{ .Values.resourcePrefix }}postgres-persistent-storage
- name: {{ $.Values.resourcePrefix }}postgres-persistent-storage
mountPath: /var/lib/postgresql/data
restartPolicy: Always
volumes:
- name: {{ .Values.resourcePrefix }}postgres-persistent-storage
{{- if .Values.persistence.postgres.enabled }}
- name: {{ $.Values.resourcePrefix }}postgres-persistent-storage
{{- if $.Values.persistence.postgres.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.resourcePrefix }}postgres-pv-claim
claimName: {{ $.Values.resourcePrefix }}postgres-pv-claim
{{- else }}
emptyDir: {}
{{- end }}
status: {}
{{ end }}
{{- end }}
Loading

0 comments on commit 7eb3ef9

Please sign in to comment.