Commit Graph

2029 Commits

Author SHA1 Message Date
Donal McBreen
8d5ed62d30 Don't allow booleans for root proxy config
Setting it to a false or true doesn't affect the config so shouldn't be
allowed. true/false are for role level configurations.

Fixes: https://github.com/basecamp/kamal/issues/1120
2025-04-18 14:25:29 +01:00
Donal McBreen
58d5c7fb15 Merge pull request #1508 from basecamp/app-hosts
Add KAMAL.app_hosts
2025-04-18 13:26:10 +01:00
Donal McBreen
e4e39c31e3 Add KAMAL.app_hosts
KAMAL.hosts includes accessory and apps hosts. Add KAMAL.app_hosts which
does not include accessory only hosts and use it for app specific
commands.

Fixes:
- https://github.com/basecamp/kamal/issues/1059
- https://github.com/basecamp/kamal/issues/1148
2025-04-18 13:15:50 +01:00
Donal McBreen
5c71f2ba5a Merge pull request #1507 from basecamp/fix-accessory-setup
Fix accessory setup
2025-04-18 11:16:52 +01:00
Donal McBreen
05f04f4c10 Merge pull request #1506 from basecamp/registry-login-on-push-and-pull
Move docker login into build command
2025-04-18 10:56:14 +01:00
Donal McBreen
03cac7ae3d Skip existing containers on accessory boot
When booting an accessory, check for the container first and skip boot
if it exists. This allows us to rerun `kamal setup` on hosts with
accessories without raising an error.

Fixes: https://github.com/basecamp/kamal/issues/488
2025-04-18 10:53:26 +01:00
Donal McBreen
399f1526af Handle role filter when booting accessories
Filter the accessory hosts via KAMAL.accessory_hosts, which correctly
handles role and host filters.

Fixes: https://github.com/basecamp/kamal/issues/935
2025-04-18 10:20:54 +01:00
Donal McBreen
84fa30e376 Merge pull request #1501 from basecamp/accessory-only
Allow accessory only configurations
2025-04-18 09:58:38 +01:00
Donal McBreen
098c937bab Move docker login into build command
We only need to run the docker login commands for pushing and pulling
images.

So let's move the logins into those commands. This ensures we are logged
in when calling `kamal build` commands directly.

Fixes: https://github.com/basecamp/kamal/issues/919
2025-04-18 09:57:02 +01:00
Donal McBreen
95e3edc32b Merge pull request #1503 from basecamp/disallow-options-restart
Ensure that the restart policy is unless-stopped
2025-04-17 15:16:54 +01:00
Donal McBreen
ac719dc271 Merge pull request #1502 from basecamp/remove-next-container-special-case
Rely on semver for version checks
2025-04-17 15:16:00 +01:00
Donal McBreen
91f01ece1b Ensure that the restart policy is unless-stopped
No other restart policy makes sense to don't let it be changed.

Fixes: https://github.com/basecamp/kamal/issues/749
2025-04-17 13:36:26 +01:00
Donal McBreen
521425c386 Rely on semver for version checks 2025-04-17 13:18:46 +01:00
Donal McBreen
55ec6ca0a6 Allow accessory only configurations
If there are accessories defined in the configuration, we'll not require
servers to be defined as well.

This allows for accessory-only configurations which allows you to run
external images with kamal-proxy for zero-downtime deployments.

We don't manage image cleanup for accessories though so the user will
need to deal with that themselves.
2025-04-17 11:40:03 +01:00
Donal McBreen
2a8d561094 Merge pull request #1497 from basecamp/maintenance-mode
Maintenance mode
2025-04-17 09:25:58 +01:00
Donal McBreen
354530f3b8 Maintenance mode
Adds support for maintenance mode to Kamal.

There are two new commands:
- `kamal app maintenance` - puts the app in maintenance mode
- `kamal app live` - puts the app back in live mode

In maintenance mode, the kamal proxy will respond to requests with a
503 status code. It will use an error page built into kamal proxy.

You can use your own error page by setting `error_pages_path` in the
configuration. This will copy any 4xx.html or 5xx.html files from that
page to a volume mounted into the proxy container.
2025-04-17 09:11:21 +01:00
Donal McBreen
26b6c072f3 Add a writable proxy volume
Maps in and external /home/kamal-proxy/.app-config volume that we can
use to map files to the proxy.

Can be used to store custom maintenance pages or SSL certificates.
2025-04-17 09:08:36 +01:00
Donal McBreen
3c1fbb41cb Merge pull request #1499 from basecamp/custom-proxy-image
Custom proxy image
2025-04-17 09:05:27 +01:00
Donal McBreen
8ceeda6ac9 Extract proxy_default_boot_options 2025-04-17 08:47:01 +01:00
Donal McBreen
dd9048e09c Allow version 'next' 2025-04-17 08:20:25 +01:00
Donal McBreen
bd81632439 Set DEBUG for integration test output 2025-04-16 16:54:46 +01:00
Donal McBreen
85320dbc51 Custom proxy image registry, repo and version
Use the --registry, --repository and --image_version options of
`kamal proxy boot_config set` to change the kamal-proxy image used.

We'll still insist that the image version is at least as high as the
minimum.
2025-04-16 16:54:46 +01:00
Donal McBreen
c9a755bde6 Extract echo_boot_config/docker_run methods 2025-04-16 14:33:15 +01:00
Donal McBreen
c3a9a3c1eb Merge pull request #1494 from basecamp/integration-test-registry-3
Use registry:3 image for the integration tests
2025-04-15 11:36:01 +01:00
Donal McBreen
215fd2faed Use registry:3 image for the integration tests
v3 was recently released which broke the integration tests. Update them
to use the correct config file.

Set the major version to prevent this from happening when v4 is
released.
2025-04-15 10:55:36 +01:00
Donal McBreen
ec28caa83f Merge pull request #1476 from aliismayilov/aws-secrets-json
Enforce JSON output format for aws secrets manager command
2025-04-15 10:05:31 +01:00
Donal McBreen
a71ea08fb6 Merge pull request #1464 from basecamp/dependabot/bundler/bundler-bee64d1bf2
Bump nokogiri from 1.18.3 to 1.18.4 in the bundler group across 1 directory
2025-04-15 09:46:50 +01:00
Ali Ismayilov
0b28a54518 Enforce JSON output format for aws command 2025-04-02 18:18:03 +02:00
Daniel Perrett
d7dbef1c9e chore: guard GithubStatusChecks.new, which makes calls on initialize 2025-03-25 14:03:22 +00:00
Donal McBreen
8fe2f92164 Merge pull request #1466 from basecamp/env-secrets-tidy
Tidy up the env secrets handling
2025-03-24 09:38:22 +00:00
Donal McBreen
fb95b38e73 Tidy up the env secrets handling
The secrets accessor was only used in the tests so remove it.
Skip the memoization, it makes things slightly harder to follow and
it's not needed.
2025-03-24 09:21:27 +00:00
Donal McBreen
3aef9303c3 Merge pull request #1465 from visini/feature/aliased-secrets-within-tags
Add ability to alias secrets for tags
2025-03-24 09:15:27 +00:00
Camillo Visini
c1d8ce7f70 Add ability to alias secrets for tags
Aliasing for secrets was introduced in #1439, but only supported
"top-level" secrets. This adds support for aliasing/mapping secrets
for tags.
2025-03-22 12:11:48 +01:00
dependabot[bot]
eeb5c01fc5 Bump nokogiri in the bundler group across 1 directory
Bumps the bundler group with 1 update in the / directory: [nokogiri](https://github.com/sparklemotion/nokogiri).


Updates `nokogiri` from 1.18.3 to 1.18.4
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.3...v1.18.4)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
  dependency-group: bundler
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-21 23:59:58 +00:00
Donal McBreen
58e23f9167 Merge pull request #1459 from basecamp/xargs-proxy-options
Use xargs to handle spaces in proxy options
2025-03-19 09:19:12 +00:00
Donal McBreen
7fa27faaca Use xargs to handle spaces in proxy options
We cat the options file, append the proxy image and then pass it
to xargs to ensure it handles spaces correctly.

Works better than using eval which can handle spaces but tries
to evaluate things like backticks.

Fixes: https://github.com/basecamp/kamal/issues/1448
2025-03-18 08:46:31 +00:00
Donal McBreen
a02826284d Merge pull request #1454 from basecamp/proxy-disable-redirect
Add `ssl_redirect` option
2025-03-18 08:46:00 +00:00
Donal McBreen
4d78afaf1b Merge pull request #1452 from basecamp/dependabot/bundler/bundler-9e375bb185
Bump the bundler group across 1 directory with 2 updates
2025-03-17 14:44:59 +00:00
Kevin McConnell
d4ab010b01 Add ssl_redirect proxy option 2025-03-12 11:11:14 +00:00
Kevin McConnell
3c9a3f2264 Require proxy version v0.8.7 2025-03-12 10:50:45 +00:00
dependabot[bot]
8098ed1fd1 Bump the bundler group across 1 directory with 2 updates
Bumps the bundler group with 2 updates in the / directory: [rack](https://github.com/rack/rack) and [uri](https://github.com/ruby/uri).


Updates `rack` from 3.1.10 to 3.1.12
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v3.1.10...v3.1.12)

Updates `uri` from 1.0.2 to 1.0.3
- [Release notes](https://github.com/ruby/uri/releases)
- [Commits](https://github.com/ruby/uri/compare/v1.0.2...v1.0.3)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
  dependency-group: bundler
- dependency-name: uri
  dependency-type: indirect
  dependency-group: bundler
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 22:29:34 +00:00
Donal McBreen
0d034ec5dc Merge pull request #1439 from matthewbjones/feature/aliased-secrets
Adds the ability to alias/map secrets
2025-03-10 10:06:45 +00:00
Donal McBreen
598bd65b78 Merge pull request #1449 from basecamp/kamal-proxy-drain-timeout-fix
Update to kamal-proxy 0.8.6
2025-03-10 10:06:14 +00:00
Donal McBreen
36f4e90a76 Update to kamal-proxy 0.8.6
Includes a fix for locking the proxy while draining
2025-03-07 11:33:17 +00:00
Matthew Jones
973fa1a7ff Adds the ability to alias/map secrets 2025-03-04 07:23:26 -07:00
Michael Weiner
5e87b6d58e Use double-quotes on UT 2025-03-04 06:32:08 -06:00
Donal McBreen
f87bcf5bc6 Merge pull request #1413 from basecamp/dependabot/bundler/bundler-fd41ac4d62
Bump rack from 3.1.8 to 3.1.10 in the bundler group across 1 directory
2025-03-03 14:49:37 +00:00
Donal McBreen
62dfa45ee6 Bump version for 2.5.3 v2.5.3 2025-02-27 10:27:27 +00:00
Donal McBreen
c13ee578df Merge pull request #1420 from smartygus/docker-build-fix
Fix Docker Build under Ruby 3.4
2025-02-27 09:42:57 +00:00
Michael Smart
f01238112e Update nokogiri to 1.18.3
See: https://github.com/sparklemotion/nokogiri/releases/tag/v1.18.0

- required for ruby 3.4 compatibility
- add more platforms to lockfile to support
  docker build process, due to changes
  in the nokogiri native gem setup where
  -musl and -gnu linux platforms are no longer
  interchangeable
- bundler >= 2.5.6 required according to Nokogiri release
  notes, so updated to current latest version (2.6.5)
2025-02-21 13:23:08 +01:00