Blossom Logo Deploy your apps with Heroku-like simplicity using Blossom See Your Savings

DSL Merge Behavior

Generally, the merge should behave as expected. For example, map or Hash fields are merged together from multiple layers. Strings are simply replaced.

Hash Example

.kubes/resources/base/all.rb

labels(app: "demo")
# ...

.kubes/resources/base/all/env.rb

labels(env: Kubes.env)
# ...

.kubes/resources/web/deployment.rb

labels(role: "web")
# ...

Layering results in:

.kubes/output/web/deployment.yaml

metadata:
  labels:
    app: demo
    env: dev
    role: web
# ...

Hash Merge Behavior Override

You can override the merge behavior with the _mode key.

.kubes/resources/web/deployment.rb

labels(role: "web", _mode: "reset")
# ...

This will completely reset the labels and result in:

metadata:
  labels:
    role: web
# ...

String Example

The merging of simple String is a straightforward replacement.

.kubes/resources/web/deployment.rb

image docker_image # IE: user/demo:kubes-2020-06-13T19-55-16-43afc6e
# ...

.kubes/resources/web/deployment/prod.rb

image "nginx:prod-v1"
# ...

Results in:

.kubes/output/web/deployment.yaml

spec:
  # ...
  template:
    spec:
      containers:
      - image: nginx:prod-v1
        name: demo-web
  # ...

For a full list of the available methods, refer to the source itself syntax/backend_config.rb.