Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update attached volume limitation on canary and bluegreen strategies #1886

Merged
merged 1 commit into from
Dec 17, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions reference/configuration.html.markerb
Original file line number Diff line number Diff line change
Expand Up @@ -220,9 +220,9 @@

**immediate**: Replace all Machines with new releases immediately without waiting for health checks to pass. This is useful in emergency situations where you're confident about release health and can't wait for health checks.

**canary**: Boots a single, new Machine with the new release, verifies its health, and then proceeds with a `rolling` restart strategy.
**canary**: Boots a single, new Machine with the new release, verifies its health, and then proceeds with a `rolling` restart strategy. The `canary` strategy cannot be used for Machines with attached volumes.

**bluegreen**: For every running Machine, a new one is booted alongside it in the same region. Once all of the new Machines pass health checks, traffic gets migrated to the new Machines and the old Machines are destroyed. If your app is scaled to 2 or more Machines, this strategy can reduce deploy time by running tasks in parallel. You need to configure at least one health check to use the `bluegreen` strategy. The `bluegreen` strategy doesn't work if Machines have volumes attached.
**bluegreen**: For every running Machine, a new one is booted alongside it in the same region. Once all of the new Machines pass health checks, traffic gets migrated to the new Machines and the old Machines are destroyed. If your app is scaled to 2 or more Machines, this strategy can reduce deploy time by running tasks in parallel. You need to configure at least one health check to use the `bluegreen` strategy. The `bluegreen` strategy cannot be used for Machines with attached volumes.

<div class="note icon">
**Note:** If `max-per-region` is set to 1, then the default strategy is set to `rolling`. This happens because `canary` needs to temporarily run more than one Machine to work correctly. The `bluegreen` strategy will behave similarly with `max-per-region` set to 1.
Expand Down Expand Up @@ -693,7 +693,7 @@
* `kill_signal`: The signal to send to the test process if it runs too long. Defaults to the signal of the image, if a custom image is set.
* `kill_timeout`: The time to wait before sending the kill signal. Defaults to the timeout of the image, if a custom image is set.

Machine checks are especially useful for canary deploys. `flyctl` will spawn a new Machine, ensure all machine capabilities are functional, and then deploy the rest of the Machines in your app.

Check warning on line 696 in reference/configuration.html.markerb

View workflow job for this annotation

GitHub Actions / Vale linter

[vale] reported by reviewdog 🐶 [Fly.Machine] Use 'Machine' instead of 'machine'. Raw Output: {"message": "[Fly.Machine] Use 'Machine' instead of 'machine'.", "location": {"path": "reference/configuration.html.markerb", "range": {"start": {"line": 696, "column": 103}}}, "severity": "INFO"}

## The `mounts` section

Expand Down Expand Up @@ -860,13 +860,13 @@
processes = ["app"]
```

When a machine unexpectedly exits, our scheduling machinery follows a machine’s restart policy to restart it without your intervention. These policies are quite similar to docker’s container restart policies:

Check warning on line 863 in reference/configuration.html.markerb

View workflow job for this annotation

GitHub Actions / Vale linter

[vale] reported by reviewdog 🐶 [Fly.Machine] Use 'Machine' instead of 'machine'. Raw Output: {"message": "[Fly.Machine] Use 'Machine' instead of 'machine'.", "location": {"path": "reference/configuration.html.markerb", "range": {"start": {"line": 863, "column": 7}}}, "severity": "INFO"}

Check warning on line 863 in reference/configuration.html.markerb

View workflow job for this annotation

GitHub Actions / Vale linter

[vale] reported by reviewdog 🐶 [Fly.Machine] Use 'Machine' instead of 'machine'. Raw Output: {"message": "[Fly.Machine] Use 'Machine' instead of 'machine'.", "location": {"path": "reference/configuration.html.markerb", "range": {"start": {"line": 863, "column": 70}}}, "severity": "INFO"}

- always: we’ll attempt to restart the machine no matter the exit code.

Check warning on line 865 in reference/configuration.html.markerb

View workflow job for this annotation

GitHub Actions / Vale linter

[vale] reported by reviewdog 🐶 [Fly.Machine] Use 'Machine' instead of 'machine'. Raw Output: {"message": "[Fly.Machine] Use 'Machine' instead of 'machine'.", "location": {"path": "reference/configuration.html.markerb", "range": {"start": {"line": 865, "column": 39}}}, "severity": "INFO"}
- never: we won’t restart the machine even if it exits with a non-zero exit code.

Check warning on line 866 in reference/configuration.html.markerb

View workflow job for this annotation

GitHub Actions / Vale linter

[vale] reported by reviewdog 🐶 [Fly.Machine] Use 'Machine' instead of 'machine'. Raw Output: {"message": "[Fly.Machine] Use 'Machine' instead of 'machine'.", "location": {"path": "reference/configuration.html.markerb", "range": {"start": {"line": 866, "column": 30}}}, "severity": "INFO"}
- on-failure: we’ll only restart the machine if it exited with a non-zero exit code (due to a failure or crash). This is the default policy if one is not explicitly set.

Check warning on line 867 in reference/configuration.html.markerb

View workflow job for this annotation

GitHub Actions / Vale linter

[vale] reported by reviewdog 🐶 [Fly.Machine] Use 'Machine' instead of 'machine'. Raw Output: {"message": "[Fly.Machine] Use 'Machine' instead of 'machine'.", "location": {"path": "reference/configuration.html.markerb", "range": {"start": {"line": 867, "column": 37}}}, "severity": "INFO"}

A restart policy can be targeted to a specific process group. If a group is not specified, all machines in an app will have the same default restart policy. You can also specify the number of times we should retry restarting the machine before giving up.

Check warning on line 869 in reference/configuration.html.markerb

View workflow job for this annotation

GitHub Actions / Vale linter

[vale] reported by reviewdog 🐶 [Fly.Machine] Use 'Machines' instead of 'machines'. Raw Output: {"message": "[Fly.Machine] Use 'Machines' instead of 'machines'.", "location": {"path": "reference/configuration.html.markerb", "range": {"start": {"line": 869, "column": 95}}}, "severity": "INFO"}

Check warning on line 869 in reference/configuration.html.markerb

View workflow job for this annotation

GitHub Actions / Vale linter

[vale] reported by reviewdog 🐶 [Fly.Machine] Use 'Machine' instead of 'machine'. Raw Output: {"message": "[Fly.Machine] Use 'Machine' instead of 'machine'.", "location": {"path": "reference/configuration.html.markerb", "range": {"start": {"line": 869, "column": 229}}}, "severity": "INFO"}

## The `checks` section

Expand Down Expand Up @@ -987,7 +987,7 @@

The "guest path" --- the path inside your container where the files to serve are located --- can overlap with other static mappings; the URL prefix should not (so, two mappings to `/public/foo` and `/public/bar` are fine, but two mappings to `/public` are not).

Alternatively, you can serve statics directly from object storage using [Tigris](/docs/tigris/). Similar to machine statics, requests under `url_prefix` are served from static assets in your Tigris bucket under `guest_path`. The same rules apply for overlapping URL prefixes.

Check warning on line 990 in reference/configuration.html.markerb

View workflow job for this annotation

GitHub Actions / Vale linter

[vale] reported by reviewdog 🐶 [Fly.Machine] Use 'Machine' instead of 'machine'. Raw Output: {"message": "[Fly.Machine] Use 'Machine' instead of 'machine'.", "location": {"path": "reference/configuration.html.markerb", "range": {"start": {"line": 990, "column": 108}}}, "severity": "INFO"}

```toml
[[statics]]
Expand Down
Loading