Skip to content

Conversation

@djmb
Copy link
Collaborator

@djmb djmb commented Oct 6, 2025

With Kamal 2.0 the plan was to have kamal proxy as a zero config proxy, so that you could run multiple apps through a single proxy instance without configuration conflicts - as such a lot of configuration is done at deploy time, rather than boot time.

But there's actually quite a lot of configuration that's needed at boot time - anything that needs to be set where the container is started - ports, logging options, image version, custom docker options etc.

This can all be currently set with kamal proxy boot_config set ... but that is cumbersome and the config is stored on the servers which is not ideal. In practice you end up needing to set the config in a hook for consistency so it's in the app repo anyway.

So let's allow the config to be set in the deploy YAML at proxy/run instead. We'll keep the kamal proxy boot_config commands and use them if no run config is set, but we'll print a deprecation warning.

If you have conflicting proxy configs for a single host in an app, we'll raise a configuration error. If you have them across multiple apps, we'll just use them both and the container will use whichever config it was last booted with.

In the next major version we'll remove the boot_config commands and just use the run config.

With Kamal 2.0 the plan was to have kamal proxy as a zero config proxy,
so that you could run multiple apps through a single prozy without
configuration conflicts - as such a lot of configuration is done at
deploy time, rather than boot time.

But there's actually quite a lot of configuration that's needed at boot
time - anything that needs to be set where the container is started -
ports, logging options, image version, custom docker options etc.

This can all be currently set with `kamal proxy boot_config set ...` but
that is cumbersome and the config is stored on the servers which is not
ideal. In practice you end up needing to set the config in a hook for
consistency so its up in the app repo anyway.

So let's allow the config to be set in the deploy YAML at `proxy/run`
instead. We'll keep the `kamal proxy boot_config` commands and use them
if no run config is set, but we'll print a deprecation warning.

If you have proxy configs for a single host in an app, we'll raise a
configuration error. If you have them across multiple apps, we'll just
use them both and the container will use whichever config it was last
booted with.

In the next major version we'll remove the boot_config commands and
just use the run config.
version: v0.8.0
options:
label:
- traefik.http.services.kamal_proxy.loadbalancer.server.scheme=http
Copy link
Contributor

Choose a reason for hiding this comment

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

It seems like having labels for traefik in here is going to cause confusion since traefik as the proxy was removed. Maybe --health-check-path and --health-check-port instead? I know there's the app_with_traefik integration test but that's as an accessory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants