Donal McBreen
d6eda3d741
Merge pull request #942 from basecamp/kamal-2-upgrade
...
Upgrade commands for Kamal 1.x -> 2.0
2024-09-17 13:34:00 +01:00
Donal McBreen
0fe6a17a91
Need a duration string for the response timeout
...
Add `s` as the timeout is a duration.
2024-09-17 13:23:15 +01:00
Donal McBreen
7f15fd143f
Upgrade commands for Kamal 1.x -> 2.0
...
Adds:
- `kamal upgrade` to upgrade all app hosts and accessory hosts
- `kamal proxy upgrade` to upgrade the proxy on all hosts
- `kamal accessory upgrade [name]` to upgrade accessories on all hosts
Upgrade takes rolling and confirmed options and calls `proxy upgrade`
and `accessory upgrade` in turn.
To just upgrade a single host add -h [host] to the command. But the
upgrade should run on all hosts, not just those running the proxy.
Calling upgrade on a host that has already been upgraded should work ok.
Upgrading hosts causes downtime but you can avoid if you run multiple
hosts by:
1. Implementing the pre-proxy-reboot and post-proxy-reboot hooks to
remove the host from external load balancers
2. Running the upgrade with the --rolling option
**kamal proxy upgrade**
1. Creates a `kamal` network if required
2. Stops and removes the old proxy (whether Traefik or kamal-proxy)
3. Starts a kamal-proxy container in the `kamal` network
4. Reboots the app containers in the `kamal` network
**kamal accessory upgrade [name]**
1. Creates a `kamal` network if required
2. Reboots the accessory containers in the `kamal` network
A matching `downgrade` command will be added to Kamal 1.9.
2024-09-17 13:02:02 +01:00
Donal McBreen
434490bd0c
Merge pull request #940 from basecamp/proxy
...
Replace Traefik with kamal-proxy
2024-09-17 09:47:16 +01:00
Donal McBreen
267b526438
Switch proxy/hosts to proxy/host
...
The proxy only supports a single host per app for nowm so make the
config match that.
2024-09-16 20:45:09 +01:00
Donal McBreen
1f721739d6
Use version 0.1.0 of kamal-proxy and add minimum version check
2024-09-16 16:44:58 +01:00
Donal McBreen
6c51e596ae
Put locks directories in .kamal so they leave no trace when deleted
2024-09-16 16:44:58 +01:00
Donal McBreen
7f31510aec
Set hosts via config rather than options
2024-09-16 16:44:58 +01:00
Donal McBreen
e8ff233e81
Fix default log header tests
2024-09-16 16:44:58 +01:00
Donal McBreen
a316e51eda
Add user agent to default headers
2024-09-16 16:44:58 +01:00
Donal McBreen
bf91d6c1ca
Fix command description
2024-09-16 16:44:58 +01:00
Donal McBreen
a84ee6315f
Rename service -> app directory
2024-09-16 16:44:58 +01:00
Donal McBreen
3c39086613
Not experimental
2024-09-16 16:44:58 +01:00
Donal McBreen
8b965b0a31
Handle polling without the healthcheck config
2024-09-16 16:44:58 +01:00
Donal McBreen
d2672c771e
Remove redundant call to env remove
2024-09-16 16:44:58 +01:00
Donal McBreen
24031fefb0
Remove proxy only if no apps are installed
2024-09-16 16:44:58 +01:00
Donal McBreen
35fe9c154d
Move audits back to run dir so they survive kamal remove
2024-09-16 16:44:58 +01:00
Donal McBreen
b8972a6833
Remove service directory on kamal remove
2024-09-16 16:44:58 +01:00
Donal McBreen
d7d6fa34b0
Use Volume for kamal proxy config volume
2024-09-16 16:44:58 +01:00
Donal McBreen
c21757f747
Move all files on the host under a common directory
...
This will make running kamal remove simpler, we can just clean up that
directory.
2024-09-16 16:44:58 +01:00
Donal McBreen
cb73c730f9
No need for run_id
2024-09-16 16:44:58 +01:00
Donal McBreen
109339189a
Fix up integration app_test.rb
2024-09-16 16:44:58 +01:00
Donal McBreen
33834a266a
Drop sleep after container healthy
2024-09-16 16:44:58 +01:00
Donal McBreen
e1016b2469
No need to wait_for_healthy
2024-09-16 16:44:58 +01:00
Donal McBreen
a40b644145
Check that there's no traefik hooks left behind
2024-09-16 16:44:58 +01:00
Donal McBreen
ccb7424197
Remove stray exit!
2024-09-16 16:44:58 +01:00
Donal McBreen
2125327d54
proxy/host -> proxy/hosts
2024-09-16 16:44:58 +01:00
Donal McBreen
f4d309c5cc
Rip out Traefik
2024-09-16 16:44:55 +01:00
Donal McBreen
5bca8015bc
Map kamal proxy config into .kamal/proxy/config
...
This will allow us to share files with the proxy via the host.
2024-09-16 16:44:41 +01:00
Donal McBreen
27a7b339a6
Drop run_directory configuration option
...
We need to drop to be fixed so multiple applications put the config in
the same place.
2024-09-16 16:44:41 +01:00
Donal McBreen
dcd4778dd9
Port -> app_port
2024-09-16 16:44:41 +01:00
Donal McBreen
6f2eaed398
Work out the host and port for the container
...
Avoid docker inspect:
1. Use the container ID as the host
2. Configure the port, default to 3000
2024-09-16 16:44:41 +01:00
Donal McBreen
e9d480b514
Add the proxy/ssl config and pass on to kamal-proxy
2024-09-16 16:44:41 +01:00
Donal McBreen
2fdc59a3aa
Fix tests
2024-09-16 16:44:41 +01:00
Donal McBreen
b33c999125
Remove envify, make proxy booting work with env files
2024-09-16 16:44:41 +01:00
Donal McBreen
2056351c38
Use kamal network for accessories
2024-09-16 16:44:41 +01:00
Donal McBreen
9c2d5f83f7
Boot latest version when upgrading proxy
2024-09-16 16:44:41 +01:00
Donal McBreen
f347ef7e44
Add proxy upgrade command
2024-09-16 16:44:41 +01:00
Donal McBreen
63ebeda489
Create proxy and app containers in a kamal network
2024-09-16 16:44:41 +01:00
Donal McBreen
13bdf50ceb
Fix tests for proxy defaults and required builder arch
2024-09-16 16:44:41 +01:00
Donal McBreen
bd6558630f
Fix merge error
2024-09-16 16:44:39 +01:00
Donal McBreen
53903ddcd2
Read buffer not buffering
2024-09-16 16:44:21 +01:00
Donal McBreen
55756fa6f3
Set request and response headers
2024-09-16 16:44:21 +01:00
Donal McBreen
fe0c656de5
Split buffer requests/responses
2024-09-16 16:44:21 +01:00
Donal McBreen
418d8045d8
Add forward headers support
2024-09-16 16:44:21 +01:00
Donal McBreen
d63ff8f251
Set extra fields
2024-09-16 16:44:21 +01:00
Donal McBreen
eab717e0cf
Add kamal-proxy in experimental mode
...
The proxy can be enabled via the config:
```
proxy:
enabled: true
hosts:
- 10.0.0.1
- 10.0.0.2
```
This will enable the proxy and cause it to be run on the hosts listed
under `hosts`, after running `kamal proxy reboot`.
Enabling the proxy disables `kamal traefik` commands and replaces them
with `kamal proxy` ones. However only the marked hosts will run the
kamal-proxy container, the rest will run Traefik as before.
2024-09-16 16:44:19 +01:00
Donal McBreen
66d5e25834
Merge pull request #939 from basecamp/secrets-mutex
...
Add a mutex around loading secrets
2024-09-16 16:26:58 +01:00
Donal McBreen
6bbbd81da1
Add a mutex around loading secrets
...
Loading secrets may ask for use input, so we need to ensure only one
thread does it at a time.
2024-09-16 14:44:39 +01:00
Donal McBreen
876eebc7c5
Merge pull request #936 from basecamp/asset-extraction-entrypoint
...
Override the entrypoint when extracting assets
2024-09-13 17:46:43 +01:00