Skip to content

Commit 582cdc7

Browse files
authored
Document what a new version can refuse, and bump to 1.13.0 (#25)
Three releases in a row have tightened what the config accepts, and until now the only place that was written down was the error message itself. A new docs/upgrading.md answers each one: the dry run to do first, what actually happens per deployment if you skip it, and then a section per refusal headed by the verbatim message so that pasting a log line finds it. The seven messages in that page were generated by running -check against a config that trips each one, not copied from the source. A page like this is worthless if a character drifts. The deployment section is the part worth reading twice. A running instance that reloads keeps its pages. A Kubernetes rollout stalls on 503 readiness and the old pod keeps serving. Compose restarted comes back healthy on liveness and serves the getting-started page instead of the site, which is the one case the dry run exists for, so docker-compose.md now says so where the image tags are chosen. Linked from the README table, the docs index and llms.txt, and every pinned 1.12.0 in the chart and the deployment pages moves to 1.13.0.
1 parent 6f03d8a commit 582cdc7

8 files changed

Lines changed: 221 additions & 27 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ understanding how a thing works, start anywhere below.
167167

168168
| | |
169169
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
170-
| **Start** | [Getting started](docs/getting-started.md), the five-minute path |
170+
| **Start** | [Getting started](docs/getting-started.md), the five-minute path · [Upgrading](docs/upgrading.md), what a new version can refuse and how to fix it |
171171
| **Configure** | [Services](docs/configuration/services.md) · [Site](docs/configuration/site.md) · [Text](docs/configuration/text.md) · [Theming](docs/configuration/theming.md) · [Languages](docs/configuration/i18n.md) |
172172
| **Deploy** | [Docker Compose](docs/deployment/docker-compose.md) · [Podman](docs/deployment/podman.md) · [Bare binary](docs/deployment/binary.md) · [Kubernetes](docs/deployment/kubernetes.md) · [Helm](docs/deployment/helm.md) · [Air-gapped](docs/deployment/airgap.md) · [Reverse proxies](docs/deployment/reverse-proxies.md) |
173173
| **Recipes** | [Status page with Gatus](docs/recipes/gatus.md) · [Icons](docs/recipes/icons.md) · [Multiple files](docs/recipes/multiple-files.md) · [Migration](docs/recipes/migration.md) |

charts/cairn/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ type: application
77
# the chart, so a published chart always carries the cairn it installs. What
88
# is written here only matters to someone running `helm install ./charts/cairn`
99
# from a checkout.
10-
version: 1.12.0
11-
appVersion: "1.12.0"
10+
version: 1.13.0
11+
appVersion: "1.13.0"
1212

1313
# networking.k8s.io/v1 Ingress, which is 1.19 and later. Declaring it here
1414
# means the templates can use one API version instead of sniffing .Capabilities.

docs/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ reading anything: <https://cairn.libresoftware.cloud>.
66
## First steps
77

88
- [Getting started](getting-started.md): zero to a served page in five minutes.
9+
- [Upgrading](upgrading.md): what a new version can refuse, each message and its fix.
910

1011
## Configuration
1112

docs/deployment/airgap.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ page renders, and the icons are simply missing.
1414

1515
| Artifact | Size | Where it comes from |
1616
| -------------------- | -------- | -------------------------------------------------------------- |
17-
| `cairn-1.12.0.tgz` | 4 KB | `helm pull`, the signed artifact rather than the folder in git |
17+
| `cairn-1.13.0.tgz` | 4 KB | `helm pull`, the signed artifact rather than the folder in git |
1818
| `gatus-1.5.0.tgz` | 9 KB | the Gatus project's own chart |
1919
| `images.tar` | 26 MB | `docker save` of cairn and Gatus |
2020
| `assets/icons/*.svg` | a few KB | what `cairn -emit-icons` downloads |
@@ -32,14 +32,14 @@ The order matters. `cosign verify` queries the public transparency log, so it is
3232
not something you get to do on the other side.
3333

3434
```sh
35-
helm pull oci://ghcr.io/morgankryze/charts/cairn --version 1.12.0
35+
helm pull oci://ghcr.io/morgankryze/charts/cairn --version 1.13.0
3636

37-
cosign verify ghcr.io/morgankryze/charts/cairn:1.12.0 \
37+
cosign verify ghcr.io/morgankryze/charts/cairn:1.13.0 \
3838
--certificate-identity-regexp '^https://github.com/MorganKryze/cairn/' \
3939
--certificate-oidc-issuer https://token.actions.githubusercontent.com
4040
```
4141

42-
The same two lines for `ghcr.io/morgankryze/cairn:1.12.0`, the image. Keep the
42+
The same two lines for `ghcr.io/morgankryze/cairn:1.13.0`, the image. Keep the
4343
output: this is the only moment where you can prove where these bytes came from.
4444

4545
Gatus publishes its own chart, from a classic repository rather than a registry,
@@ -64,7 +64,7 @@ amd64 cluster from an arm64 laptop is the classic way to learn this at
6464
```sh
6565
PLATFORM=linux/amd64
6666

67-
docker pull --platform $PLATFORM ghcr.io/morgankryze/cairn:1.12.0
67+
docker pull --platform $PLATFORM ghcr.io/morgankryze/cairn:1.13.0
6868
docker pull --platform $PLATFORM ghcr.io/twin/gatus:v5.36.0
6969
```
7070

@@ -75,9 +75,9 @@ names nothing you can reason about six months later. To be exact, v5.36.0 is
7575
Then give both the name they will carry inside, and save them together:
7676

7777
```sh
78-
docker tag ghcr.io/morgankryze/cairn:1.12.0 harbor.internal/cairn:1.12.0
78+
docker tag ghcr.io/morgankryze/cairn:1.13.0 harbor.internal/cairn:1.13.0
7979
docker tag ghcr.io/twin/gatus:v5.36.0 harbor.internal/gatus:5.36.0
80-
docker save harbor.internal/cairn:1.12.0 harbor.internal/gatus:5.36.0 -o images.tar
80+
docker save harbor.internal/cairn:1.13.0 harbor.internal/gatus:5.36.0 -o images.tar
8181
```
8282

8383
Retag even if you have no registry. An image named after a host that resolves
@@ -89,7 +89,7 @@ to have a route after all: the mistake becomes loud instead of invisible.
8989
This is the step nothing downstream will remind you about.
9090

9191
```sh
92-
docker run --rm -v ./config:/config ghcr.io/morgankryze/cairn:1.12.0 -emit-icons > get-icons.sh
92+
docker run --rm -v ./config:/config ghcr.io/morgankryze/cairn:1.13.0 -emit-icons > get-icons.sh
9393
mkdir -p assets && (cd assets && sh ../get-icons.sh)
9494
```
9595

@@ -101,7 +101,7 @@ bring the files. See [Icons](../recipes/icons.md).
101101
### The Gatus endpoints
102102

103103
```sh
104-
docker run --rm -v ./config:/config ghcr.io/morgankryze/cairn:1.12.0 -emit-gatus > gatus-endpoints.yaml
104+
docker run --rm -v ./config:/config ghcr.io/morgankryze/cairn:1.13.0 -emit-gatus > gatus-endpoints.yaml
105105
```
106106

107107
One endpoint per service, named after its id, which is how each pill finds its
@@ -111,7 +111,7 @@ service. More in [Status page](../recipes/gatus.md).
111111

112112
```sh
113113
docker run --rm -v ./config:/config:ro -v ./assets:/assets:ro \
114-
ghcr.io/morgankryze/cairn:1.12.0 -check
114+
ghcr.io/morgankryze/cairn:1.13.0 -check
115115
```
116116

117117
**Mount both directories.** Given only `/config`, `-check` cannot see the icons
@@ -142,7 +142,7 @@ the far side of the gap there is no fixing a broken image with a download.
142142

143143
```sh
144144
docker load -i images.tar
145-
docker push harbor.internal/cairn:1.12.0
145+
docker push harbor.internal/cairn:1.13.0
146146
docker push harbor.internal/gatus:5.36.0
147147
```
148148

@@ -152,7 +152,7 @@ Harbor, Zot or `registry:2` you already run. The chart wants one value.
152152
```yaml
153153
image:
154154
repository: harbor.internal/cairn
155-
tag: "1.12.0"
155+
tag: "1.13.0"
156156
# Only if the project is private. The Secrets have to exist in the namespace
157157
# already; the chart names them, it does not create them.
158158
imagePullSecrets:
@@ -164,7 +164,7 @@ OCI artifacts, so a project named `helm` holds them next to the images and
164164
nothing else has to be installed:
165165

166166
```sh
167-
helm push cairn-1.12.0.tgz oci://harbor.internal/helm
167+
helm push cairn-1.13.0.tgz oci://harbor.internal/helm
168168
helm push gatus-1.5.0.tgz oci://harbor.internal/helm
169169
```
170170

@@ -199,7 +199,7 @@ it worked:
199199

200200
```console
201201
$ kubectl get events --field-selector reason=Pulled
202-
Container image "harbor.internal/cairn:1.12.0" already present on machine
202+
Container image "harbor.internal/cairn:1.13.0" already present on machine
203203
Container image "harbor.internal/gatus:5.36.0" already present on machine
204204
```
205205

@@ -223,7 +223,7 @@ under `binaryData` on its own.
223223
# values.yaml
224224
image:
225225
repository: harbor.internal/cairn
226-
tag: "1.12.0"
226+
tag: "1.13.0"
227227
228228
config:
229229
site.yaml: |
@@ -272,7 +272,7 @@ and one version to name, which is also what Argo CD will read:
272272

273273
```sh
274274
helm registry login harbor.internal --ca-file /etc/pki/internal-ca.crt
275-
helm install cairn oci://harbor.internal/helm/cairn --version 1.12.0 \
275+
helm install cairn oci://harbor.internal/helm/cairn --version 1.13.0 \
276276
--ca-file /etc/pki/internal-ca.crt -f values.yaml
277277
```
278278

@@ -289,7 +289,7 @@ credential store: a `docker login` already done on that host does not count.
289289
Without a registry, install what you carried:
290290

291291
```sh
292-
helm install cairn ./cairn-1.12.0.tgz -f values.yaml
292+
helm install cairn ./cairn-1.13.0.tgz -f values.yaml
293293
```
294294

295295
`linked: false` is a decision rather than an omission. Without it the pills link

docs/deployment/docker-compose.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,17 @@ test suite inside the build:
6868
| `unstable` | every commit on `main` |
6969
| a commit hash | that exact build |
7070

71+
Following `latest` or `stable` means a new version arrives on its own. A
72+
release occasionally tightens what the config accepts, and this is the
73+
deployment where that shows: `/healthz` is liveness and stays green, so the
74+
container comes back up healthy and serves the getting-started page instead of
75+
your site. One command tells you beforehand, and
76+
[Upgrading](../upgrading.md) is the page that answers whatever it prints:
77+
78+
```sh
79+
docker run --rm -v ./config:/config ghcr.io/morgankryze/cairn:stable -check
80+
```
81+
7182
To build from source instead, replace `image:` with:
7283

7384
```yaml

docs/deployment/helm.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ kubectl port-forward svc/cairn 8080:80
2626

2727
Add `--version` with the number from the
2828
[releases](https://github.com/MorganKryze/cairn/releases) to pin. Chart version
29-
and cairn version are the same number, always: chart `1.12.0` installs cairn
30-
`1.12.0`, so there is only ever one version to talk about, and `image.tag` is
29+
and cairn version are the same number, always: chart `1.13.0` installs cairn
30+
`1.13.0`, so there is only ever one version to talk about, and `image.tag` is
3131
there if you ever want to break the pair apart.
3232

3333
## Feeding it your config
@@ -209,8 +209,8 @@ OCI artifact, so it can be mirrored into whatever registry you already keep, and
209209
driven from there:
210210

211211
```sh
212-
helm pull oci://ghcr.io/morgankryze/charts/cairn --version 1.12.0
213-
helm push cairn-1.12.0.tgz oci://harbor.internal/helm
212+
helm pull oci://ghcr.io/morgankryze/charts/cairn --version 1.13.0
213+
helm push cairn-1.13.0.tgz oci://harbor.internal/helm
214214
```
215215

216216
Argo CD needs the repository declared before an Application can name it. Note
@@ -246,7 +246,7 @@ spec:
246246
source:
247247
repoURL: harbor.internal/helm
248248
chart: cairn
249-
targetRevision: 1.12.0
249+
targetRevision: 1.13.0
250250
helm:
251251
valuesObject:
252252
ingress:
@@ -270,7 +270,7 @@ spec:
270270
sources:
271271
- repoURL: harbor.internal/helm
272272
chart: cairn
273-
targetRevision: 1.12.0
273+
targetRevision: 1.13.0
274274
helm:
275275
valueFiles:
276276
- $values/cairn/values.yaml
@@ -297,7 +297,7 @@ The chart is signed the same way the image is, keylessly, bound to the workflow
297297
that published it:
298298

299299
```sh
300-
cosign verify ghcr.io/morgankryze/charts/cairn:1.12.0 \
300+
cosign verify ghcr.io/morgankryze/charts/cairn:1.13.0 \
301301
--certificate-identity-regexp '^https://github.com/MorganKryze/cairn/' \
302302
--certificate-oidc-issuer https://token.actions.githubusercontent.com
303303
```

0 commit comments

Comments
 (0)