Overview
LILT runs Elasticsearch under the ECK operator. A LILT release can ship both a newer operator and a newer Elasticsearch major version, and the order in which they are upgraded matters: a newer operator refuses to manage Elasticsearch nodes below its supported floor. If the operator is upgraded first, it stops reconciling the existing cluster — the discovery configuration goes stale, and any Elasticsearch pod that restarts afterwards can no longer rejoin the cluster. This applies to any existing install whose running Elasticsearch major version is behind the version shipped with the new release, regardless of which LILT version it was installed from. Newer installers detect this and abort the operator upgrade with:The Rule
Never skip an Elasticsearch major version, and never upgrade the operator past what your running Elasticsearch supports. Per major version, the order is:- With the currently installed operator, upgrade the Elasticsearch
resource to the last minor of the running major (the bridge version —
for 8.x it is 8.19, shipped as the pinned tag
8.19.20). - Wait until the cluster is
greenand every node reports the bridge version. - Run the new installer normally: it upgrades the operator, then applies the shipped Elasticsearch version, which is now a supported single-major hop.
Prerequisites
-
The cluster is
greenbefore you start: -
The bridge-version Elasticsearch image is available to your nodes (in
your registry or loaded locally). Deliveries that cross an Elasticsearch
major include the pinned bridge image (currently
8.19.20) as an additional image — verify it is present in your registry before starting.
Steps (example: 8.x to 9.x)
Run from the installer directory on the master node:Gotchas
- Order is everything. Elasticsearch data is upgraded in place; each step is irreversible for the data. Take a backup before starting.
- The Elasticsearch StatefulSet uses
updateStrategy: OnDelete— akubectl rollout restartrolls nothing. The operator handles pod cycling; if you must recycle by hand, delete pods one at a time and wait for ready. - Do not downgrade the operator to recover. It collides with immutable
StatefulSet fields the newer operator wrote. If you already upgraded the
operator first and the cluster froze, contact LILT support — the recovery
(deleting the StatefulSet with
--cascade=orphanso pods and data survive) is easy to get wrong. - Long maintenance windows can outlive registry credentials. If your registry uses short-lived pull tokens, refresh them before the final rolling upgrade, or the new-image pull fails and a pod is left waiting on an image.
Verification
green, the full node count, and the shipped version. The
Elasticsearch-dependent applications (indexer, search, segment, core-api)
recover on their own once the cluster is reachable again — no restarts needed.
