From 66bf000dac6f156e17b050cb4441cdb2e0ca0ff9 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:03:46 +0300 Subject: [PATCH 01/12] docs(radar): list the chart and container images for each release Add a Downloads section to the 2026.9.2 and 2026.9.5 release notes, taken from each chart's rendered defaults, so air-gapped installs know exactly which images to mirror for the version they install. Co-Authored-By: Claude Opus 5 --- content/operate/radar/release-notes/2026-9-2.md | 16 ++++++++++++++++ content/operate/radar/release-notes/2026-9-5.md | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/content/operate/radar/release-notes/2026-9-2.md b/content/operate/radar/release-notes/2026-9-2.md index 00305aa208..f2fd6f7c5a 100644 --- a/content/operate/radar/release-notes/2026-9-2.md +++ b/content/operate/radar/release-notes/2026-9-2.md @@ -46,3 +46,19 @@ See [Manage access]({{< relref "/operate/radar/manage-access" >}}). - Three install methods — **RPM** (RHEL 9), **Helm** (Kubernetes and OpenShift), and **Docker Compose** — from the same release artifacts. - Air-gapped installation supported for all three methods. See [Install Radar]({{< relref "/operate/radar/install" >}}). + +## Downloads + +- **Helm chart**: `radar` version `2026.9.2`, from the Redis Helm repository at `https://helm.redis.io/radar` + +### Container images + +The Helm chart pulls these images from Docker Hub. For an [air-gapped install]({{< relref "/operate/radar/install" >}}#install-on-an-air-gapped-host), mirror each one to a registry your cluster can reach. + +- **API server**: `redislabs/radar:app-v2026.9.2` +- **Worker**: `redislabs/radar:worker-v2026.9.2` +- **Migration job**: `redislabs/radar:migrate-v2026.9.2` +- **Database wait and Helm test**: `library/busybox:1.37` +- **Bundled PostgreSQL**, only if you enable it: `library/postgres:18.4-bookworm` + +The Radar images are built for `linux/amd64` only. diff --git a/content/operate/radar/release-notes/2026-9-5.md b/content/operate/radar/release-notes/2026-9-5.md index 6ad9beae29..91df7e241d 100644 --- a/content/operate/radar/release-notes/2026-9-5.md +++ b/content/operate/radar/release-notes/2026-9-5.md @@ -27,3 +27,19 @@ This is a Short-Term Support (STS) release. See [Self-managed releases]({{< relr - Track every agent under **Settings > Agents** and in the **Connected agents** list on the Connections page, with its mode, platform, version, and last heartbeat. Radar accepts agent connections on its agent gRPC endpoint, which isn't enabled on every Radar deployment. See [Connect clusters with an agent]({{< relref "/operate/radar/agent" >}}). + +## Downloads + +- **Helm chart**: `radar` version `2026.9.5`, from the Redis Helm repository at `https://helm.redis.io/radar` + +### Container images + +The Helm chart pulls these images from Docker Hub. For an [air-gapped install]({{< relref "/operate/radar/install" >}}#install-on-an-air-gapped-host), mirror each one to a registry your cluster can reach. + +- **API server**: `redislabs/radar:app-v2026.9.5` +- **Worker**: `redislabs/radar:worker-v2026.9.5` +- **Migration job**: `redislabs/radar:migrate-v2026.9.5` +- **Database wait and Helm test**: `library/busybox:1.37` +- **Bundled PostgreSQL**, only if you enable it: `library/postgres:18.4-bookworm` + +The Radar images are built for `linux/amd64` only. From b060360c41c0e40246455dcdd85759f02c3089d7 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:03:58 +0300 Subject: [PATCH 02/12] docs(radar): name the Helm repository on the release notes index The index still said "and the Helm chart" with no source, and did not say where per-release images are listed. Co-Authored-By: Claude Opus 5 --- content/operate/radar/release-notes/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/operate/radar/release-notes/_index.md b/content/operate/radar/release-notes/_index.md index 1b79f1cd66..e679e94619 100644 --- a/content/operate/radar/release-notes/_index.md +++ b/content/operate/radar/release-notes/_index.md @@ -23,7 +23,7 @@ Cloud releases roll out automatically on a regular basis, so there's nothing to ## Self-managed releases -Self-managed Radar ships as a Helm chart, an RPM, and a Docker Compose bundle, as described in [Install Radar]({{< relref "/operate/radar/install" >}}). Get the RPM from the [Redis Download Center](https://cloud.redis.io/#/rlec-downloads), under **Modules, tools and integrations**, the container images from Docker Hub, and the Helm chart. +Self-managed Radar ships as a Helm chart, an RPM, and a Docker Compose bundle, as described in [Install Radar]({{< relref "/operate/radar/install" >}}). Get the RPM from the [Redis Download Center](https://cloud.redis.io/#/rlec-downloads), under **Modules, tools and integrations**, the container images from Docker Hub, and the Helm chart from the Redis Helm repository at `https://helm.redis.io/radar`. Each release's notes list the exact chart version and container images under **Downloads**. Radar ships on two support tracks: From a8924f06c464270f2794abc56dd81676fc9b39d7 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:05:03 +0300 Subject: [PATCH 03/12] docs(radar): create the namespace before the Helm secrets Step 1 created secrets in the radar namespace, which only came into being at helm install --create-namespace, so kubectl create secret failed. Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index 8af57907f4..514f87c058 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -218,7 +218,15 @@ helm repo update radar If you install from a source checkout or from an air-gapped bundle instead, substitute `./helm/radar` or the bundle's `radar-*.tgz` file for `radar/radar` in the `helm install` commands below. -1. Create the database secret. Store the database connection string in a secret. +1. Create the namespace. + + ```bash + kubectl create namespace radar + ``` + +
+ +2. Create the database secret. Store the database connection string in a secret. ```bash kubectl create secret generic radar-db \ @@ -228,7 +236,7 @@ If you install from a source checkout or from an air-gapped bundle instead, subs
-2. Create the credentials secret. Generate the credential encryption key as a file and load it with `--from-file`. +3. Create the credentials secret. Generate the credential encryption key as a file and load it with `--from-file`. ```bash head -c 32 /dev/urandom > kek.bin @@ -248,12 +256,11 @@ If you install from a source checkout or from an air-gapped bundle instead, subs
-3. Install the chart. +4. Install the chart. ```bash helm install radar radar/radar \ --namespace radar \ - --create-namespace \ --set database.existingSecret=radar-db \ --set credentials.existingSecret=radar-credentials \ --set ingress.enabled=true \ @@ -281,7 +288,6 @@ If you install from a source checkout or from an air-gapped bundle instead, subs helm install radar radar/radar \ --namespace radar \ - --create-namespace \ -f ./radar/values-openshift.yaml \ --set database.existingSecret=radar-db \ --set credentials.existingSecret=radar-credentials \ @@ -292,7 +298,7 @@ If you install from a source checkout or from an air-gapped bundle instead, subs
-4. Verify the install. +5. Verify the install. ```bash kubectl get pods -n radar @@ -309,7 +315,7 @@ If you install from a source checkout or from an air-gapped bundle instead, subs
-5. Provide remote access. +6. Provide remote access. The API server and UI are served on port 80 of an in-cluster service. Expose it with an ingress, an OpenShift route, or a `LoadBalancer` service, and terminate TLS there. From 6aed0eb7bc775f7ebed1296171abaf3365231070 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:05:22 +0300 Subject: [PATCH 04/12] docs(radar): set database.host in the Helm install commands With an external database the chart fails to render without database.host ("database.host is required when postgresql.enabled is false"); its wait-for-db init containers probe that host. Both documented commands hit it. Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index 514f87c058..dbc3fcbe6e 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -234,6 +234,8 @@ If you install from a source checkout or from an air-gapped bundle instead, subs --from-literal=DATABASE_URL='postgres://radar:secret@postgres.example.com:5432/radar?sslmode=require' ``` + The chart also needs the database hostname as `database.host`, separate from the connection string. It uses the hostname to wait for the database before it starts the API server, the worker, and the migration job. If your database listens on a port other than 5432, also set `database.port`. +
3. Create the credentials secret. Generate the credential encryption key as a file and load it with `--from-file`. @@ -261,6 +263,7 @@ If you install from a source checkout or from an air-gapped bundle instead, subs ```bash helm install radar radar/radar \ --namespace radar \ + --set database.host=postgres.example.com \ --set database.existingSecret=radar-db \ --set credentials.existingSecret=radar-credentials \ --set ingress.enabled=true \ @@ -289,6 +292,7 @@ If you install from a source checkout or from an air-gapped bundle instead, subs helm install radar radar/radar \ --namespace radar \ -f ./radar/values-openshift.yaml \ + --set database.host=postgres.example.com \ --set database.existingSecret=radar-db \ --set credentials.existingSecret=radar-credentials \ --set route.host=radar.apps.example.com From 043b3d808edb68c9111a607ede5a6de94c62837a Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:05:33 +0300 Subject: [PATCH 05/12] docs(radar): quote bracketed --set values in the Helm command Unquoted ingress.hosts[0]... is a glob in zsh, the macOS default shell: "zsh: no matches found". Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index dbc3fcbe6e..8dfdad8926 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -268,9 +268,9 @@ If you install from a source checkout or from an air-gapped bundle instead, subs --set credentials.existingSecret=radar-credentials \ --set ingress.enabled=true \ --set ingress.className=nginx \ - --set ingress.hosts[0].host=radar.example.com \ - --set ingress.hosts[0].paths[0].path=/ \ - --set ingress.hosts[0].paths[0].pathType=Prefix + --set 'ingress.hosts[0].host=radar.example.com' \ + --set 'ingress.hosts[0].paths[0].path=/' \ + --set 'ingress.hosts[0].paths[0].pathType=Prefix' ``` With an external database, as configured here, the chart runs schema migration as a Kubernetes job before the API server and worker start. If you use the chart's bundled PostgreSQL container instead, migration instead runs after the API and worker pods start, so expect them to restart briefly until the migration job completes. Migrations apply forward only; there is no automated rollback. From 3754fcbacf731db9412815fa5a113a3062955de1 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:05:53 +0300 Subject: [PATCH 06/12] docs(radar): pin the chart version in the Helm commands Install a named release so the chart and the images mirrored for it match, and point to the per-release Downloads lists. Replace the source-checkout path, which refers to a repository customers cannot access, with the chart package file. Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index 8dfdad8926..0f22206ef6 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -216,7 +216,9 @@ helm repo add radar https://helm.redis.io/radar helm repo update radar ``` -If you install from a source checkout or from an air-gapped bundle instead, substitute `./helm/radar` or the bundle's `radar-*.tgz` file for `radar/radar` in the `helm install` commands below. +The chart version matches the Radar version. Replace `` in the commands with the release you install, such as `2026.9.5`, and use that release's container images. Each release's [release notes]({{< relref "/operate/radar/release-notes" >}}) list its chart version and images under **Downloads**. + +To install from a chart package file instead, such as on a cluster with no internet access, substitute the `radar-.tgz` file for `radar/radar` in the `helm install` commands. See [Install on an air-gapped host](#install-on-an-air-gapped-host). 1. Create the namespace. @@ -262,6 +264,7 @@ If you install from a source checkout or from an air-gapped bundle instead, subs ```bash helm install radar radar/radar \ + --version \ --namespace radar \ --set database.host=postgres.example.com \ --set database.existingSecret=radar-db \ @@ -287,9 +290,10 @@ If you install from a source checkout or from an air-gapped bundle instead, subs **For OpenShift**, use the OpenShift values file instead, which lets OpenShift assign namespace-scoped user IDs and switches the external access path from an ingress to a route. The file ships inside the chart, so extract it first. ```bash - helm pull radar/radar --untar --untardir . + helm pull radar/radar --version --untar --untardir . helm install radar radar/radar \ + --version \ --namespace radar \ -f ./radar/values-openshift.yaml \ --set database.host=postgres.example.com \ From 7922182bd8973d47c5707f553b18c51a09616580 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:06:32 +0300 Subject: [PATCH 07/12] docs(radar): correct the Helm image names and registry override The chart pulls redislabs/radar:{app,worker,migrate}-v, not radar-app/radar-worker/radar-migrate. global.imageRegistry does not reach those images (image.registry defaults to docker.io and wins) or busybox (no registry key), so the documented override pulled everything from Docker Hub. Verified by rendering charts 2026.9.2 and 2026.9.5 in both database modes. Compose names are left as documented; the bundle was not available to check. Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index 0f22206ef6..7c1f9e17c6 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -83,7 +83,7 @@ In that line, both `enabled` and `required` should read `true`. Search your logs ### Package and service names -Radar's services and paths use an `mcm` prefix. The RPM is named `radar`, its services are `mcm-api` and `mcm-worker`, and its configuration lives in `/etc/mcm/`. Container images use a `radar-` prefix in both the Docker Compose bundle and the Helm chart: `radar-app`, `radar-worker`, and `radar-migrate`. +Radar's services and paths use an `mcm` prefix. The RPM is named `radar`, its services are `mcm-api` and `mcm-worker`, and its configuration lives in `/etc/mcm/`. The Helm chart pulls one Docker Hub repository, `redislabs/radar`, and selects each component by tag: `app-v`, `worker-v`, and `migrate-v`. The Docker Compose bundle's container images use a `radar-` prefix: `radar-app`, `radar-worker`, and `radar-migrate`. ## Install on RHEL with the RPM @@ -278,15 +278,21 @@ To install from a chart package file instead, such as on a cluster with no inter With an external database, as configured here, the chart runs schema migration as a Kubernetes job before the API server and worker start. If you use the chart's bundled PostgreSQL container instead, migration instead runs after the API and worker pods start, so expect them to restart briefly until the migration job completes. Migrations apply forward only; there is no automated rollback. - **For a private or air-gapped registry**, override the image source. + **For a private or air-gapped registry**, mirror the images listed in the release notes for your version, keeping each image's repository path, then point the chart at your registry. Save these values to a file, such as `registry-values.yaml`, and add `-f registry-values.yaml` to the `helm install` command. ```yaml + image: + registry: registry.example.com + dbWaitInitContainer: + image: + repository: registry.example.com/library/busybox global: - imageRegistry: registry.example.com/redislabs imagePullSecrets: - name: registry-creds ``` + Set `image.registry` rather than `global.imageRegistry`. In chart 2026.9.5 and earlier, `global.imageRegistry` does not apply to the Radar images, and the `busybox` image has no registry setting, so its repository includes the registry. If you use the chart's bundled PostgreSQL container, also set `postgresql.image.registry`. + **For OpenShift**, use the OpenShift values file instead, which lets OpenShift assign namespace-scoped user IDs and switches the external access path from an ingress to a route. The file ships inside the chart, so extract it first. ```bash From a17933f4193b6bf792e410a94b3f4af1f6d1d490 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:06:46 +0300 Subject: [PATCH 08/12] docs(radar): describe what the migration job looks like after install With an external database the job is a Helm hook with hook-succeeded deletion, so a successful install leaves no job to list. With bundled PostgreSQL it is a kept resource with a 7-day TTL. Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index 7c1f9e17c6..c5c8a48171 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -320,7 +320,7 @@ To install from a chart package file instead, such as on a cluster with no inter helm test radar --namespace radar ``` - Expect a running API pod, a running worker pod, and a completed migration job. To check health without an external access path, use the following commands. + Expect a running API pod and a running worker pod. With an external database, Helm deletes the migration job once it succeeds, so the job is listed only while it runs or if it fails. With the bundled PostgreSQL container, the completed job stays listed for seven days by default. To check health without an external access path, use the following commands. ```bash kubectl port-forward -n radar svc/radar 8080:80 From 3877ec83bbf5702a52bdbd9802c3454aa00f96e2 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:07:35 +0300 Subject: [PATCH 09/12] docs(radar): replace docker load with a registry mirror for air-gapped Helm Kubernetes and OpenShift nodes run containerd or CRI-O, not Docker, and the images.tar.gz bundle is not published anywhere customers can download it. Document the path that works with public artifacts: helm pull the chart, copy the per-release images into a registry, install from the package. skopeo --all keeps multi-platform busybox intact when copying from an arm64 workstation. Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 35 +++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index c5c8a48171..1009743571 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -400,11 +400,44 @@ sha256sum -c radar-v.SHA256SUMS | Method | What to transfer | How it installs | |---|---|---| | RPM | The `.rpm` and the dependency closure, including `postgresql-server` if the host has no offline PostgreSQL | `dnf install` from the local file | -| Helm | `images.tar.gz`, the packaged chart, and the bundled values file | `docker load` the images onto the nodes, then install the chart | +| Helm | The chart package, `radar-.tgz`, and the container images listed in the release notes for your version | Copy the images into a registry the cluster can pull from, then install the chart from the package. See [Helm on an air-gapped cluster](#helm-on-an-air-gapped-cluster). | | Docker Compose | `images.tar.gz` and the Compose files | `docker load`, then `docker compose up` | Your PostgreSQL database and the clusters you plan to monitor still need to be reachable from the Radar host over the network. +### Helm on an air-gapped cluster + +1. On a machine with internet access, download the chart package. + + ```bash + helm repo add radar https://helm.redis.io/radar + helm pull radar/radar --version + ``` + + The command saves `radar-.tgz`, which includes `values-openshift.yaml`. + +
+ +2. Copy each image listed under **Downloads** in the [release notes]({{< relref "/operate/radar/release-notes" >}}) for your version into your registry, keeping its repository path. For example, with `skopeo`: + + ```bash + skopeo copy --all \ + docker://docker.io/redislabs/radar:app-v \ + docker://registry.example.com/redislabs/radar:app-v + ``` + + The `--all` option copies every platform of a multi-platform image, such as `busybox`, rather than only the platform of the machine that runs the copy. + +
+ +3. Install from the package. Follow [Install on Kubernetes with Helm](#install-on-kubernetes-with-helm), substitute `./radar-.tgz` for `radar/radar`, and add the registry values file. For OpenShift, extract the values file from the package instead of running `helm pull`: + + ```bash + tar -xzf radar-.tgz radar/values-openshift.yaml + ``` + +
+ ## Next steps Radar is installed but has nothing to show yet. Continue to [Connect clusters]({{< relref "/operate/radar/connect" >}}) to add your first cluster. From 122245efb530c3db344bb08db99acc95fe62af85 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:08:09 +0300 Subject: [PATCH 10/12] docs(radar): skip helm repo add in the air-gapped Helm steps Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index 1009743571..94b45571d3 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -430,7 +430,7 @@ Your PostgreSQL database and the clusters you plan to monitor still need to be r
-3. Install from the package. Follow [Install on Kubernetes with Helm](#install-on-kubernetes-with-helm), substitute `./radar-.tgz` for `radar/radar`, and add the registry values file. For OpenShift, extract the values file from the package instead of running `helm pull`: +3. Install from the package. Follow [Install on Kubernetes with Helm](#install-on-kubernetes-with-helm) without adding the Helm repository, substitute `./radar-.tgz` for `radar/radar`, and add the registry values file. For OpenShift, extract the values file from the package instead of running `helm pull`: ```bash tar -xzf radar-.tgz radar/values-openshift.yaml From ffe9372262e4ea6d9ba6ce354b860b764d2b5b8a Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:31:23 +0300 Subject: [PATCH 11/12] docs(radar): let helm test pull busybox from an authenticated mirror The chart's test pod renders no imagePullSecrets and runs as the default service account, so link the pull secret there. oc secrets link appends rather than replacing OpenShift's generated dockercfg secret. Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index 94b45571d3..24b359dfcc 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -293,6 +293,19 @@ To install from a chart package file instead, such as on a cluster with no inter Set `image.registry` rather than `global.imageRegistry`. In chart 2026.9.5 and earlier, `global.imageRegistry` does not apply to the Radar images, and the `busybox` image has no registry setting, so its repository includes the registry. If you use the chart's bundled PostgreSQL container, also set `postgresql.image.registry`. + In the same chart versions, the `helm test` pod doesn't receive `global.imagePullSecrets` and runs as the namespace's `default` service account. If your registry requires authentication, attach the pull secret to that service account so `helm test` can pull `busybox`. On OpenShift: + + ```bash + oc secrets link default registry-creds --for=pull -n radar + ``` + + On Kubernetes: + + ```bash + kubectl patch serviceaccount default -n radar \ + -p '{"imagePullSecrets": [{"name": "registry-creds"}]}' + ``` + **For OpenShift**, use the OpenShift values file instead, which lets OpenShift assign namespace-scoped user IDs and switches the external access path from an ingress to a route. The file ships inside the chart, so extract it first. ```bash From d25401bb3f2efe36ede4649fef5aaec1a0f10a72 Mon Sep 17 00:00:00 2001 From: Eli Shteinman <7198754@gmail.com> Date: Tue, 15 Sep 2026 23:31:23 +0300 Subject: [PATCH 12/12] docs(radar): verify SHA256SUMS only for artifacts that ship one A chart fetched with helm pull comes without a checksum file, so the unconditional sha256sum step blocked the Helm air-gapped path. Co-Authored-By: Claude Opus 5 --- content/operate/radar/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/operate/radar/install.md b/content/operate/radar/install.md index 24b359dfcc..51ce22c390 100644 --- a/content/operate/radar/install.md +++ b/content/operate/radar/install.md @@ -404,7 +404,7 @@ Confirm you've replaced every sample value, especially the credential encryption Air-gapped installation uses the same three methods. -Transfer the release artifacts to the target host or to an offline repository it can reach, then verify them: +Transfer the release artifacts to the target host or to an offline repository it can reach. If they include a `radar-v.SHA256SUMS` file, verify them: ```bash sha256sum -c radar-v.SHA256SUMS