Skip to content

Commit af14154

Browse files
committed
WIP: add hardened (Wolfi) images documentation for ECK
Adds a new page `deploy-manage/deploy/cloud-on-k8s/hardened-images.md` documenting Wolfi-based (hardened) images in ECK: - The ECK Operator image is Wolfi by default since v2.15.0 - Stack images (ES, Kibana, Agent, Beats, APM Server, Logstash) can be pulled as Wolfi variants via the `container-suffix: -wolfi` operator flag - EPR and Elastic Maps Server images are already natively Wolfi and require an explicit `.spec.image:` override to avoid pull failures when `container-suffix` is set Also adds an entry for the new page in `manage-deployments.md`. 1. Did you use a generative AI (GenAI) tool to assist in creating this contribution? - [x] Yes Tool(s) and model(s) used: Claude Code (claude-sonnet-4-6)
1 parent 53aa353 commit af14154

3 files changed

Lines changed: 88 additions & 0 deletions

File tree

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
---
2+
navigation_title: Hardened (Wolfi) images
3+
description: Learn how ECK uses Wolfi-based hardened images to reduce CVE exposure, and how to configure Wolfi images for Elastic Stack components.
4+
applies_to:
5+
deployment:
6+
eck: all
7+
products:
8+
- id: cloud-kubernetes
9+
- id: elasticsearch
10+
- id: kibana
11+
- id: elastic-agent
12+
- id: beats
13+
- id: apm
14+
- id: logstash
15+
---
16+
17+
# Hardened (Wolfi) images in {{eck}} [k8s-hardened-images]
18+
19+
Elastic has partnered with [Chainguard](https://www.chainguard.dev/) to provide hardened container images based on [Wolfi](https://github.com/wolfi-dev/os), a minimal, security-focused Linux distribution designed for containerized environments. These images significantly reduce the CVE footprint of Elastic containers by including only the application and its necessary runtime dependencies. For background on this initiative, refer to the blog post [Reducing CVEs in Elastic container images](https://www.elastic.co/blog/reducing-cves-in-elastic-container-images).
20+
21+
::::{note}
22+
Only images distributed via `docker.elastic.co` are officially supported by Elastic. Third-party hardened image sources, such as Docker Hardened Images (DHI) on Docker Hub, are not maintained by Elastic and fall outside the scope of Elastic support.
23+
::::
24+
25+
## The ECK Operator image [k8s-hardened-images-operator]
26+
27+
Since ECK **v2.15.0**, the ECK Operator image is built on Wolfi by default. No additional configuration is required — pulling the standard operator image from `docker.elastic.co` already provides a hardened, Wolfi-based container.
28+
29+
## {{stack}} images managed by {{eck}} [k8s-hardened-images-stack]
30+
31+
Wolfi-based variants of the {{stack}} images ({{es}}, {{kib}}, {{agent}}, {{beats}}) are available from v8.16.0 onwards (v8.15.0 for {{apm-server}} and {{ls}}). However, ECK does not pull Wolfi variants by default for {{stack}} components — the standard images are used unless explicitly overridden.
32+
33+
To have the operator pull Wolfi-based images natively for the {{stack}} components it manages, set the `container-suffix` configuration flag to `-wolfi`. The operator then appends this suffix to the container images it resolves. This flag cannot be combined with the `--ubi-only` flag. For more details, refer to [ECK configuration flags](cloud-on-k8s://reference/eck-configuration-flags.md).
34+
35+
For example, set the suffix in the `elastic-operator` ConfigMap:
36+
37+
```yaml
38+
apiVersion: v1
39+
kind: ConfigMap
40+
metadata:
41+
name: elastic-operator
42+
namespace: elastic-system
43+
data:
44+
eck.yaml: |-
45+
container-suffix: -wolfi
46+
```
47+
48+
::::{warning}
49+
The `container-suffix` flag applies to **all** resources managed by the operator, including [{{package-registry}}](package-registry.md) and [{{hosted-ems}}](elastic-maps-server.md). The images for these two components are **already natively based on Wolfi** and do not have a `-wolfi` suffix. With `container-suffix: -wolfi` set, the operator would try to pull non-existent suffixed images, causing the image pull to fail.
50+
51+
For these resources, explicitly set the container image in the manifest using `.spec.image` (without the suffix).
52+
53+
For [{{package-registry}}](package-registry.md), use:
54+
55+
```yaml subs=true
56+
apiVersion: packageregistry.k8s.elastic.co/v1alpha1
57+
kind: PackageRegistry
58+
metadata:
59+
name: package-registry-sample
60+
namespace: default
61+
spec:
62+
count: 1
63+
version: {{version.stack}}
64+
image: docker.elastic.co/package-registry/distribution:{{version.stack}}
65+
```
66+
67+
Other valid tags include `lite-<version>`, `production` and `lite`. For more details, refer to [Air-gapped environments](/reference/fleet/air-gapped.md#air-gapped-diy-epr).
68+
69+
For [{{hosted-ems}}](elastic-maps-server.md), use:
70+
71+
```yaml subs=true
72+
apiVersion: maps.k8s.elastic.co/v1alpha1
73+
kind: ElasticMapsServer
74+
metadata:
75+
name: quickstart
76+
spec:
77+
count: 1
78+
version: {{version.stack}}
79+
image: docker.elastic.co/elastic-maps-service/elastic-maps-server:{{version.stack}}
80+
```
81+
82+
::::
83+
84+
## Further reading [k8s-hardened-images-further-reading]
85+
86+
- [Reducing CVEs in Elastic container images](https://www.elastic.co/blog/reducing-cves-in-elastic-container-images)

deploy-manage/deploy/cloud-on-k8s/manage-deployments.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ In this section, you'll learn how to perform the following tasks in ECK:
3232
- [**Apply updates to your deployments**](./update-deployments.md): Modify existing deployments, scale clusters, and update configurations, while ensuring minimal disruption.
3333
- [**Configure access to your deployments**](./accessing-services.md): Use and adapt Kubernetes services to your needs.
3434
- [**Advanced configuration**](./configure-deployments.md): Explore available settings for {{es}} and {{kib}}, including storage, networking, security, and scaling options.
35+
- [**Hardened (Wolfi) images**](./hardened-images.md): Learn how the ECK Operator and the {{stack}} components managed by ECK use Wolfi-based images to reduce CVE exposure, and what this means in practice.
3536

3637
For a complete reference on configuration possibilities for {{es}} and {{kib}}, see:
3738

deploy-manage/toc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ toc:
279279
- file: deploy/cloud-on-k8s/update-strategy-logstash.md
280280
- file: deploy/cloud-on-k8s/advanced-configuration-logstash.md
281281
- file: deploy/cloud-on-k8s/package-registry.md
282+
- file: deploy/cloud-on-k8s/hardened-images.md
282283
- file: deploy/cloud-on-k8s/create-custom-images.md
283284
- file: deploy/cloud-on-k8s/tools-apis.md
284285
- file: deploy/self-managed.md

0 commit comments

Comments
 (0)