Skip to content

Commit 7e4ffaf

Browse files
authored
Merge pull request #12 from projectsyn/fix_container_params
Fix container params
2 parents be0c77f + be7f749 commit 7e4ffaf

File tree

7 files changed

+61
-24
lines changed

7 files changed

+61
-24
lines changed

.github/workflows/test.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,5 @@ jobs:
3838
path: ${{ env.COMPONENT_NAME }}
3939
- name: Compile component
4040
run: make test
41+
- name: Compile component with no defined resource limits
42+
run: make test-nolimits

Makefile

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,20 @@ docs-serve: ## Preview the documentation
5151
mkdir -p dependencies
5252
$(COMMODORE_CMD)
5353

54-
.PHONY: test
55-
test: commodore_args += -f tests/$(instance).yml
56-
test: .compile ## Compile the component
54+
.PHONY: test-nolimits
55+
test-nolimits: instance = no_container_limits
56+
test-nolimits: runtest
57+
58+
.PHONY: test-default
59+
test-default: instance = defaults
60+
test-default: runtest
61+
62+
.PHONY: test test-default test-nolimits
63+
test: test-default
64+
65+
.PHONY: runtest
66+
runtest: commodore_args += -f tests/$(instance).yml
67+
runtest: .compile ## Compile the component
5768

5869
.PHONY: clean
5970
clean: ## Clean the project

class/defaults.yml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,6 @@ parameters:
1616
monitor_user: maxscale
1717
service_pwd: ?{vaultkv:${customer:name}/${cluster:name}/${_instance}/service_pwd}
1818
monitor_pwd: ?{vaultkv:${customer:name}/${cluster:name}/${_instance}/monitor_pwd}
19-
containers:
20-
resources:
21-
requests:
22-
cpu: 1000m
23-
memory: 128Mi
24-
limits:
25-
cpu: 2000m
26-
memory: 512Mi
2719
images:
2820
maxscale:
2921
image: gchr.io/appuio/maxscale-docker

component/main.jsonnet

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,20 @@ local kap = import 'lib/kapitan.libjsonnet';
33
local kube = import 'lib/kube.libjsonnet';
44
local inv = kap.inventory();
55
local params = inv.parameters.maxscale;
6+
local res = if std.objectHas(params, 'resources') then params.resources else null;
7+
8+
local default_resources = {
9+
limits: {
10+
cpu: '2000m',
11+
memory: '512Mi',
12+
},
13+
requests: {
14+
cpu: '1000m',
15+
memory: '128Mi',
16+
},
17+
};
18+
19+
local resources = if res != null then std.mergePatch(default_resources, res) else null;
620

721
local namespace = kube.Namespace(params.namespace) {
822
metadata+: {
@@ -80,16 +94,7 @@ local deployment = kube.Deployment('maxscale') {
8094
},
8195
initialDelaySeconds: 15,
8296
},
83-
resources: {
84-
requests: {
85-
cpu: params.containers.resources.requests.cpu,
86-
memory: params.containers.resources.requests.memory,
87-
},
88-
limits: {
89-
cpu: params.containers.resources.limits.cpu,
90-
memory: params.containers.resources.limits.memory,
91-
},
92-
},
97+
[if resources != null then 'resources']: resources,
9398
volumeMounts: [
9499
{
95100
name: 'maxscale-cnf-volume',

docs/modules/ROOT/pages/references/parameters.adoc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ type:: string
8383
default:: `?{vaultkv:${customer:name}/${cluster:name}/maxscale/monitor_pwd}`
8484

8585

86-
= Container Parameters
86+
= Container Resource Parameters
8787

88-
The parent key for the following parameters is `containers` and they affect the MaxScale containers:
88+
By default there are no resource limits. As soon as you set *any* of these reource parameters, all the other ones are set to their defaults and you'll have to override them to change them. This prevents generating an invalid manifest.
8989

9090

9191
== `resources.requests.cpu`
@@ -127,7 +127,6 @@ maxscale:
127127
db3_port: 3305
128128
monitor_user: mymonitoruser
129129
service_user: myserviceuser
130-
containers:
131130
resources:
132131
requests:
133132
cpu: 1000m

tests/defaults.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,11 @@ parameters:
2020
monitor_user: maxscale-testmonitor
2121
service_pwd: testservicepwd
2222
monitor_pwd: testmonitorpwd
23+
containers:
24+
resources:
25+
limits:
26+
memory: 512Mi
27+
cpu: 1234m
28+
requests:
29+
memory: 1024Mi
30+
cpu: 123m

tests/no_container_limits.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Overwrite parameters here
2+
3+
# parameters: {...}
4+
---
5+
parameters:
6+
_instance: maxscale-nolimits
7+
maxscale:
8+
namespace: maxscale-test
9+
master_only_listen_address: 127.0.0.1
10+
read_write_listen_address: 127.0.0.1
11+
db1_address: db1.mygalera.test.example.org
12+
db1_port: 3307
13+
db2_address: db2.mygalera.test.example.org
14+
db2_port: 3307
15+
db3_address: db3.mygalera.test.example.org
16+
db3_port: 3307
17+
service_user: maxscale-testservice
18+
monitor_user: maxscale-testmonitor
19+
service_pwd: testservicepwd
20+
monitor_pwd: testmonitorpwd

0 commit comments

Comments
 (0)