Skip to content

feat: Add package registry to eck#8800

Merged
pkoutsovasilis merged 104 commits intoelastic:mainfrom
tehbooom:epr
Dec 22, 2025
Merged

feat: Add package registry to eck#8800
pkoutsovasilis merged 104 commits intoelastic:mainfrom
tehbooom:epr

Conversation

@tehbooom
Copy link
Member

@tehbooom tehbooom commented Aug 20, 2025

Resolves #8925

Elastic Package Registry (EPR) has been highly requested to be added to ECK.

EPR does not have any references since it does not require a license nor any other application.

The following was implemented for EPR

  • defaults to TLS
  • Sets the default container image to docker.elastic.co/package-registry/distribution
  • Users can set their own images
  • Users can update the config following the reference
  • Kibana can reference the EPR like Elasticsearch and Enterprise Search
  • If Kibana references EPR and TLS is enabled it will populate xpack.fleet.registryUrl and set the environment variable NODE_EXTRA_CA_CERTS to the path of EPR's CA which is mounted
  • If a user provides their own NODE_EXTRA_CA_CERTS with a mount the controller will combine the certs appending the EPR's CA to the users specified CA

This was tested with and without setting NODE_EXTRA_CA_CERTS using the below manifest

apiVersion: epr.k8s.elastic.co/v1alpha1
kind: ElasticPackageRegistry
metadata:
  name: registry
spec:
  version: 9.1.2
  count: 1
  podTemplate:
    spec:
      containers:
      - name: package-registry
        image: docker.elastic.co/package-registry/distribution:lite-9.1.2
---
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: elasticsearch
spec:
  version: 9.1.2
  nodeSets:
  - name: default
    count: 1
---
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: kibana
spec:
  version: 9.1.2
  count: 1
  elasticsearchRef:
    name: elasticsearch
  packageRegistryRef:
    name: registry
  config:
    telemetry.optIn: false
    xpack.fleet.isAirGapped: true
    xpack.fleet.agents.elasticsearch.hosts: ["https://elasticsearch-es-http.default.svc:9200"]
    xpack.fleet.agents.fleet_server.hosts: ["https://fleet-server-agent-http.default.svc:8220"]
    xpack.fleet.packages:
      - name: system
        version: latest
      - name: elastic_agent
        version: latest
      - name: fleet_server
        version: latest
    xpack.fleet.agentPolicies:
      - name: Fleet Server on ECK policy
        id: eck-fleet-server
        namespace: default
        monitoring_enabled:
          - logs
          - metrics
        unenroll_timeout: 900
        package_policies:
        - name: fleet_server-1
          id: fleet_server-1
          package:
            name: fleet_server
  podTemplate:
    spec:
      containers:
      - name: kibana
        env:
        - name: NODE_EXTRA_CA_CERTS
          value: /custom/user/ca-bundle.crt
        volumeMounts:
        - name: custom-ca
          mountPath: /custom/user
          readOnly: true
      volumes:
      - name: custom-ca
        secret:
          secretName: user-custom-ca-secret
---
apiVersion: v1
kind: Secret
metadata:
  name: user-custom-ca-secret
  namespace: default
type: Opaque
data:
  ca-bundle.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZtVENDQTRHZ0F3SUJBZ0lVYjVrK2d6V3A5YjljWTV4bkhUcWZNdHFHUXIwd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1hERUxNQWtHQTFVRUJoTUNXRmd4RlRBVEJnTlZCQWNNREVSbFptRjFiSFFnUTJsMGVURWNNQm9HQTFVRQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRFWU1CWUdBMVVFQXd3UGRHVnpkQzVsYkdGemRHbGpMbU52Ck1CNFhEVEkxTURneU1ERTRNakl3T0ZvWERUTTFNRGd4T0RFNE1qSXdPRm93WERFTE1Ba0dBMVVFQmhNQ1dGZ3gKRlRBVEJnTlZCQWNNREVSbFptRjFiSFFnUTJsMGVURWNNQm9HQTFVRUNnd1RSR1ZtWVhWc2RDQkRiMjF3WVc1NQpJRXgwWkRFWU1CWUdBMVVFQXd3UGRHVnpkQzVsYkdGemRHbGpMbU52TUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGCkFBT0NBZzhBTUlJQ0NnS0NBZ0VBMHljTGVySWR3LzdpbGlKMzVBUEZ4bUx6TFRnNWRhUStWSUttS2lNbStlTTYKanJOY3lnbGphNVFEbHYvMStGUm5hamhrRTBobHoycXEzTjk0U1pYN3M2eHBnQUVzMGVQQ3VaZVBNU2VUYlYyRgp0YlIxNnFuM0JjenVxN3laOXZwdHR3MmJRdkJkY3JzZFU4T2RYUWhGNFd4QUFwODRKYWlMNmkzMlA2K2VPODBwCmh3Z1kwS0F1bzZoZC8zaFpNME14M2MwRmJmU0JHaTUyOHZKODYzUDRXZlEwMWdtUUxVbGl0UlhhTUhiaDRXSm0KOU45c0psUXpnbkNuQjZ6YkZjZ2gweWxrakd0UzBIZEo3eSs3dmE0Q1BqdkxlWGpwTnZuQzRjTmlocnp4Wmw5bQphM0ZVdVpiU0lRekE2ZFlkdkdrT2V3OTJEek1BaTdldU14UDdyYVhRejZmc1N6U1V4N1RjQWl5M2E5VU9Fdi9rCk5NV3VTbDlUMHRRSkhJSzJMc0t0MlVKWVVHWk4wOWU2SUVSTlJOL0FIUjVDbTlhcVQ1Q2ZyQW9JVVhNdUg2S1oKN1JCZFFockRxL2xEQk54bWs5dW44V2lic0NSVnkvVXRJQ3lOSytxbGpGUWZEd01hNkRkd3BjcnpnTWZnU3RTawpLek1LRUJla2N0Q0Q4dHNmTjZYem5USmNBYUJETzFlQWZyT0Z2NG1PTXJqVG90OEYvK3pxN0dXNTlqWTRvdFhMCkY3TnpadFl0eWsvbDRvb2hUZUFuM1ptd1BDMGJFQ1FkTmpTVkZ6ZXJCamE4ZjhacGpKRzNjUllyVmh6YUNsRWMKRU5wbFRHcldVaUVwRDdnTnNlNWNDSnZpQU12NHdwait2QTVVNlA3Z0MxUUtKV2hWS3BVYWcvTmtTSUFCRmtrQwpBd0VBQWFOVE1GRXdIUVlEVlIwT0JCWUVGTWdldEVJajZtRWdsZURGNkVNdUY4NXVnYzdZTUI4R0ExVWRJd1FZCk1CYUFGTWdldEVJajZtRWdsZURGNkVNdUY4NXVnYzdZTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RFFZSktvWkkKaHZjTkFRRUxCUUFEZ2dJQkFEOFU3dm1yWmhHTUZiV2YzRDZlNy84TUwzWEhLRk5TNy9UeWF3U2tvdGVSTVdFbgp1RWhQK2dmbkdUT2ZITFlQeHl5eEJ4U041T29sZHRJclo5dnhBc2dlYWJzSkJaenhQVHpxU09VN3h3b09LcTlRCmdKRUYxL0ZmemFlR1V5dVE2S1ZaZ0QvZ1JPSW42Ri9OUGlzM1pvbUpPOStuVWdTTnNiUm9RYmdPUGdPV3Q3Z1gKVEhuOHJpdUp2OXRPNFBRN09Sa3pubDJYbERlcE9xNVpwSUtkcVl0Rm5MUjF3SllyREZESmt0Q3h6MzFob0FrZwpSVjlSU1BSMFFxZ1JQeFNpNGpXdkNGUk5XTUFJc0NadGJsWExRRUljWGI1YnlsWXV2a3psTTJ4dHlHK3FaRFhMCnFoZDVNeFZIUkpqTzE1VEdpZXFRcUpMVkZyVElhTHFoaXZpQ1pUbDJoVkYxVlpPVG05MU5aeE53M25RL3JyeDgKK2VQV2xTWlZKWXc3SDRkWkx5WTFjRUxLT0YrZDJybVNSZ2pWaHZycUZ3R1M3MUQzYkV4Y0dSakNrOHNQWEZyRwpsOFRzY05RMXBPSGVuNlJhOFhVdGtxU1doZllFb3owZjBEem4wYmt4c2VWaCttS1BHV3QxcHdlemVFTFVwaHE3CmwwSVRLeis1b1lqYWVHTDRia25kcWlpemwzWkc2N0lYL3VyR0dQVUxkLzU1NEtRMFFPMS92S3Y2dE1YMWc0dVMKWHdWc0pzQjlrTUIwRFFxbDhRYmg0UEJ2ZW9RRTZvL3BycXRtWjR1RWdDMCt1cm5paDlCY1FweFNKOUljR1kxTQpBQzRBcG5Pem1CYTFhUVBMcDRaRFIxQXpFK1hXWDd2WWNWYUxleUJxRzRja3dwbUtOUnhpcnJjS2NaMkYKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
---
apiVersion: agent.k8s.elastic.co/v1alpha1
kind: Agent
metadata:
  name: fleet-server
spec:
  version: 9.1.2
  kibanaRef:
    name: kibana
  elasticsearchRefs:
  - name: elasticsearch
  mode: fleet
  fleetServerEnabled: true
  policyID: eck-fleet-server
  deployment:
    replicas: 1
    podTemplate:
      spec:
        serviceAccountName: fleet-server
        automountServiceAccountToken: true
        resources:
          requests:
            cpu: 200m
            memory: 1Gi
          limits:
            cpu: 1
            memory: 2Gi
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: fleet-server
  namespace: default
rules:
- apiGroups: [""]
  resources:
  - pods
  - namespaces
  - nodes
  verbs:
  - get
  - watch
  - list
- apiGroups: ["apps"]
  resources:
    - replicasets
  verbs:
    - get
    - watch
    - list
- apiGroups: ["batch"]
  resources:
    - jobs
  verbs:
    - get
    - watch
    - list
- apiGroups: ["coordination.k8s.io"]
  resources:
  - leases
  verbs:
  - get
  - create
  - update
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: fleet-server
  namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: fleet-server
  namespace: default
subjects:
- kind: ServiceAccount
  name: fleet-server
  namespace: default
roleRef:
  kind: ClusterRole
  name: fleet-server
  apiGroup: rbac.authorization.k8s.io

@prodsecmachine
Copy link
Collaborator

prodsecmachine commented Aug 20, 2025

Snyk checks have passed. No issues have been found so far.

Status Scanner Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Licenses 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@github-actions
Copy link

github-actions bot commented Aug 20, 2025

🔍 Preview links for changed docs

Copy link
Member

@jsoriano jsoriano left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Took a quick look from the side of the team maintaining Package Registry.

It looks great, thanks for adding support for package registry in ECK, this will help many users.

Added some comments, please let us know if you need a more in-depth review from our side.

@pebrc pebrc requested a review from Copilot August 25, 2025 15:17

This comment was marked as outdated.

@naemono naemono requested a review from Copilot August 25, 2025 18:39
@naemono naemono added >enhancement Enhancement of existing functionality discuss We need to figure this out labels Aug 25, 2025
@botelastic botelastic bot removed the triage label Aug 25, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds Elastic Package Registry (EPR) support to ECK, introducing a new CRD for deploying EPR instances and enabling Kibana to reference EPR instances for Fleet package management.

  • Adds ElasticPackageRegistry CRD with controller to manage EPR deployments
  • Enables Kibana to associate with EPR instances via packageRegistryRef field
  • Implements TLS certificate handling and CA mounting for secure communication between Kibana and EPR

Reviewed Changes

Copilot reviewed 60 out of 61 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
pkg/apis/epr/v1alpha1/ New API definitions for ElasticPackageRegistry CRD
pkg/controller/packageregistry/ Controller implementation for managing EPR resources
pkg/controller/association/controller/kibana_epr.go Association controller for Kibana-EPR relationships
pkg/apis/kibana/v1/kibana_types.go Adds packageRegistryRef field and EPR association support
pkg/controller/kibana/ Updates Kibana controller to handle EPR associations and CA certificates
test/e2e/ E2E tests for EPR functionality and associations
Comments suppressed due to low confidence (1)

pkg/controller/kibana/pod_test.go:1

  • The comment on line 67 says 'readinessProbe is the readiness probe for the maps container' but this function is in the packageregistry controller and should refer to the package registry container.
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@barkbay barkbay added >feature Adds or discusses adding a feature to the product and removed >enhancement Enhancement of existing functionality labels Aug 26, 2025
@pkoutsovasilis
Copy link
Contributor

buildkite test this -f p=gke,E2E_TAGS=epr

@pkoutsovasilis
Copy link
Contributor

buildkite test this -f p=gke,E2E_TAGS=epr

Copy link
Collaborator

@pebrc pebrc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM (let's address any follow up work around runAsNonRoot for 9.3.0 in a separate PR as this one is getting really hard to navigate now)

@pkoutsovasilis pkoutsovasilis merged commit 3592619 into elastic:main Dec 22, 2025
10 checks passed
naemono added a commit to elastic/docs-content that referenced this pull request Feb 3, 2026
* Do not merge until after ECK 3.3 release *

See
elastic/cloud-on-k8s#8800 (comment).
This is updating the documentation for Default memory resources for both
EPR and Autoops

---------

Signed-off-by: Michael Montgomery <mmontg1@gmail.com>
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Feb 3, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [eck-operator](https://github.com/elastic/cloud-on-k8s) | minor | `3.2.0` → `3.3.0` |

---

### Release Notes

<details>
<summary>elastic/cloud-on-k8s (eck-operator)</summary>

### [`v3.3.0`](https://github.com/elastic/cloud-on-k8s/releases/tag/v3.3.0)

[Compare Source](elastic/cloud-on-k8s@v3.2.0...v3.3.0)

##### Elastic Cloud on Kubernetes 3.3.0

- [Quickstart guide](https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s#eck-quickstart)

##### Release Highlights

##### AutoOps Integration (Enterprise feature)

ECK now supports integration with Elastic AutoOps through a new `AutoOpsAgentPolicy` custom resource. This allows you to instrument multiple Elasticsearch clusters at once for automated health monitoring and performance recommendations. The [AutoOps documentation](https://www.elastic.co/docs/deploy-manage/monitor/autoops) provides more details.

##### Elastic Package Registry Integration

ECK now supports deploying and managing Elastic Package Registry (EPR) through a new `PackageRegistry` custom resource. This is particularly useful for air-gapped environments, enabling Kibana to reference a self-hosted registry instead of the public one. The [package registry documentation](https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s/package-registry) provides more details.

##### Multiple Stack Configuration Policies composition support (Enterprise feature)

ECK now includes support for multiple Stack Config Policies targeting the same Elasticsearch cluster or Kibana instance, using a weight-based priority system for deterministic policy composition. The [stack config policy documentation](https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s/elastic-stack-configuration-policies) provides more details.

##### Features and enhancements

- AutoOpsAgentPolicy support [#&#8203;8941](elastic/cloud-on-k8s#8941) (issue: [#&#8203;8789](elastic/cloud-on-k8s#8789))
- ElasticPackageRegistry support [#&#8203;8800](elastic/cloud-on-k8s#8800) (issue: [#&#8203;8925](elastic/cloud-on-k8s#8925))
- Stack Config Policies composition support [#&#8203;8917](elastic/cloud-on-k8s#8917)
- Use standard Kibana labels and Helm labels on the ECK Operator pod [#&#8203;8840](elastic/cloud-on-k8s#8840) (issue: [#&#8203;8584](elastic/cloud-on-k8s#8584))
- Add service customization support for Elasticsearch remote cluster server [#&#8203;8892](elastic/cloud-on-k8s#8892)
- Removal of Elasticsearch 6.x support from codebase [#&#8203;8979](elastic/cloud-on-k8s#8979)

##### Fixes

- Upgrade master StatefulSets last when performing a version upgrade of Elasticsearch [#&#8203;8871](elastic/cloud-on-k8s#8871) (issue: [#&#8203;8429](elastic/cloud-on-k8s#8429))
- Fix race condition for pre-existing Stack Config Policy [#&#8203;8928](elastic/cloud-on-k8s#8928) (issue: [#&#8203;8912](elastic/cloud-on-k8s#8912))
- Do not set Kibana server.name [#&#8203;8930](elastic/cloud-on-k8s#8930) (issue: [#&#8203;8929](elastic/cloud-on-k8s#8929))
- Do not write `elasticsearch.k8s.elastic.co/managed-remote-clusters` when not necessary [#&#8203;8932](elastic/cloud-on-k8s#8932) (issue: [#&#8203;8781](elastic/cloud-on-k8s#8781))
- Cleanup orphaned secret mounts when removed from StackConfigPolicy [#&#8203;8937](elastic/cloud-on-k8s#8937) (issue: [#&#8203;8921](elastic/cloud-on-k8s#8921))
- Avoid duplicate error logging for generate GET operations on a GVK [#&#8203;8957](elastic/cloud-on-k8s#8957)
- Remove single master at a time upscale restriction [#&#8203;8940](elastic/cloud-on-k8s#8940) (issue: [#&#8203;8939](elastic/cloud-on-k8s#8939))
- AutoOps: Ignore deprecated ES clusters [#&#8203;9008](elastic/cloud-on-k8s#9008) (issue: [#&#8203;9000](elastic/cloud-on-k8s#9000))
- AutoOps: Require 9.2.1 for AutoOps agent [#&#8203;9007](elastic/cloud-on-k8s#9007) (issue: [#&#8203;9000](elastic/cloud-on-k8s#9000))
- Multi-SCP: Flip weight semantics - higher weight takes precedence [#&#8203;9046](elastic/cloud-on-k8s#9046)

##### Documentation improvements

- Update Google Cloud LoadBalancer recipe for new requirements [#&#8203;8843](elastic/cloud-on-k8s#8843)
- Fix minUnavailable typo in PDB documentation [#&#8203;8898](elastic/cloud-on-k8s#8898)
- Use GKE ComputeClass instead of DaemonSet for GKE AutoPilot [#&#8203;8982](elastic/cloud-on-k8s#8982)
- Adjust `vm.max_map_count` to [`1048576`](elastic/cloud-on-k8s@1048576) in GKE AutoPilot recipes [#&#8203;8986](elastic/cloud-on-k8s#8986)
- Remove support for Stack 7.17. [#&#8203;9038](elastic/cloud-on-k8s#9038)

##### Dependency updates

- Go 1.25.2 => 1.25.6
- github.com/KimMachineGun/automemlimit v0.7.4 => v0.7.5
- github.com/elastic/go-ucfg v0.8.9-0.20250307075119-2a22403faaea => v0.8.9-0.20251017163010-3520930bed4f
- github.com/gkampitakis/go-snaps v0.5.15 => v0.5.19
- github.com/google/go-containerregistry v0.20.6 => v0.20.7
- github.com/googlecloudplatform/compute-class-api => v0.0.0-20251208134148-ae2e7936c1f8
- github.com/prometheus/common v0.67.1 => v0.67.5
- github.com/spf13/cobra v1.10.1 => v1.10.2
- go.elastic.co/apm/v2 v2.7.1 => v2.7.2
- go.uber.org/zap v1.27.0 => v1.27.1
- golang.org/x/crypto v0.40.0 => v0.46.0
- k8s.io/api v0.34.1 => v0.35.0
- k8s.io/apimachinery v0.34.1 => v0.35.0
- k8s.io/client-go v0.34.1 => v0.35.0
- k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 => v0.0.0-20251002143259-bc988d571ff4
- sigs.k8s.io/controller-runtime v0.22.2 => v0.22.4
- sigs.k8s.io/controller-tools v0.19.0 => v0.20.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4wLjMiLCJ1cGRhdGVkSW5WZXIiOiI0My4wLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImNoYXJ0Il19-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/3682
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Feb 3, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [elastic/cloud-on-k8s](https://github.com/elastic/cloud-on-k8s) | minor | `v3.2.0` → `v3.3.0` |

---

### Release Notes

<details>
<summary>elastic/cloud-on-k8s (elastic/cloud-on-k8s)</summary>

### [`v3.3.0`](https://github.com/elastic/cloud-on-k8s/releases/tag/v3.3.0)

[Compare Source](elastic/cloud-on-k8s@v3.2.0...v3.3.0)

### Elastic Cloud on Kubernetes 3.3.0

- [Quickstart guide](https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s#eck-quickstart)

##### Release Highlights

##### AutoOps Integration (Enterprise feature)

ECK now supports integration with Elastic AutoOps through a new `AutoOpsAgentPolicy` custom resource. This allows you to instrument multiple Elasticsearch clusters at once for automated health monitoring and performance recommendations. The [AutoOps documentation](https://www.elastic.co/docs/deploy-manage/monitor/autoops) provides more details.

##### Elastic Package Registry Integration

ECK now supports deploying and managing Elastic Package Registry (EPR) through a new `PackageRegistry` custom resource. This is particularly useful for air-gapped environments, enabling Kibana to reference a self-hosted registry instead of the public one. The [package registry documentation](https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s/package-registry) provides more details.

##### Multiple Stack Configuration Policies composition support (Enterprise feature)

ECK now includes support for multiple Stack Config Policies targeting the same Elasticsearch cluster or Kibana instance, using a weight-based priority system for deterministic policy composition. The [stack config policy documentation](https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s/elastic-stack-configuration-policies) provides more details.

##### Features and enhancements

- AutoOpsAgentPolicy support [#&#8203;8941](elastic/cloud-on-k8s#8941) (issue: [#&#8203;8789](elastic/cloud-on-k8s#8789))
- ElasticPackageRegistry support [#&#8203;8800](elastic/cloud-on-k8s#8800) (issue: [#&#8203;8925](elastic/cloud-on-k8s#8925))
- Stack Config Policies composition support [#&#8203;8917](elastic/cloud-on-k8s#8917)
- Use standard Kibana labels and Helm labels on the ECK Operator pod [#&#8203;8840](elastic/cloud-on-k8s#8840) (issue: [#&#8203;8584](elastic/cloud-on-k8s#8584))
- Add service customization support for Elasticsearch remote cluster server [#&#8203;8892](elastic/cloud-on-k8s#8892)
- Removal of Elasticsearch 6.x support from codebase [#&#8203;8979](elastic/cloud-on-k8s#8979)

##### Fixes

- Upgrade master StatefulSets last when performing a version upgrade of Elasticsearch [#&#8203;8871](elastic/cloud-on-k8s#8871) (issue: [#&#8203;8429](elastic/cloud-on-k8s#8429))
- Fix race condition for pre-existing Stack Config Policy [#&#8203;8928](elastic/cloud-on-k8s#8928) (issue: [#&#8203;8912](elastic/cloud-on-k8s#8912))
- Do not set Kibana server.name [#&#8203;8930](elastic/cloud-on-k8s#8930) (issue: [#&#8203;8929](elastic/cloud-on-k8s#8929))
- Do not write `elasticsearch.k8s.elastic.co/managed-remote-clusters` when not necessary [#&#8203;8932](elastic/cloud-on-k8s#8932) (issue: [#&#8203;8781](elastic/cloud-on-k8s#8781))
- Cleanup orphaned secret mounts when removed from StackConfigPolicy [#&#8203;8937](elastic/cloud-on-k8s#8937) (issue: [#&#8203;8921](elastic/cloud-on-k8s#8921))
- Avoid duplicate error logging for generate GET operations on a GVK [#&#8203;8957](elastic/cloud-on-k8s#8957)
- Remove single master at a time upscale restriction [#&#8203;8940](elastic/cloud-on-k8s#8940) (issue: [#&#8203;8939](elastic/cloud-on-k8s#8939))
- AutoOps: Ignore deprecated ES clusters [#&#8203;9008](elastic/cloud-on-k8s#9008) (issue: [#&#8203;9000](elastic/cloud-on-k8s#9000))
- AutoOps: Require 9.2.1 for AutoOps agent [#&#8203;9007](elastic/cloud-on-k8s#9007) (issue: [#&#8203;9000](elastic/cloud-on-k8s#9000))
- Multi-SCP: Flip weight semantics - higher weight takes precedence [#&#8203;9046](elastic/cloud-on-k8s#9046)

##### Documentation improvements

- Update Google Cloud LoadBalancer recipe for new requirements [#&#8203;8843](elastic/cloud-on-k8s#8843)
- Fix minUnavailable typo in PDB documentation [#&#8203;8898](elastic/cloud-on-k8s#8898)
- Use GKE ComputeClass instead of DaemonSet for GKE AutoPilot [#&#8203;8982](elastic/cloud-on-k8s#8982)
- Adjust `vm.max_map_count` to [`1048576`](elastic/cloud-on-k8s@1048576) in GKE AutoPilot recipes [#&#8203;8986](elastic/cloud-on-k8s#8986)
- Remove support for Stack 7.17. [#&#8203;9038](elastic/cloud-on-k8s#9038)

##### Dependency updates

- Go 1.25.2 => 1.25.6
- github.com/KimMachineGun/automemlimit v0.7.4 => v0.7.5
- github.com/elastic/go-ucfg v0.8.9-0.20250307075119-2a22403faaea => v0.8.9-0.20251017163010-3520930bed4f
- github.com/gkampitakis/go-snaps v0.5.15 => v0.5.19
- github.com/google/go-containerregistry v0.20.6 => v0.20.7
- github.com/googlecloudplatform/compute-class-api => v0.0.0-20251208134148-ae2e7936c1f8
- github.com/prometheus/common v0.67.1 => v0.67.5
- github.com/spf13/cobra v1.10.1 => v1.10.2
- go.elastic.co/apm/v2 v2.7.1 => v2.7.2
- go.uber.org/zap v1.27.0 => v1.27.1
- golang.org/x/crypto v0.40.0 => v0.46.0
- k8s.io/api v0.34.1 => v0.35.0
- k8s.io/apimachinery v0.34.1 => v0.35.0
- k8s.io/client-go v0.34.1 => v0.35.0
- k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 => v0.0.0-20251002143259-bc988d571ff4
- sigs.k8s.io/controller-runtime v0.22.2 => v0.22.4
- sigs.k8s.io/controller-tools v0.19.0 => v0.20.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4wLjMiLCJ1cGRhdGVkSW5WZXIiOiI0My4wLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImltYWdlIl19-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/3685
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

discuss We need to figure this out >feature Adds or discusses adding a feature to the product release-highlight Candidate for the ECK release highlight summary v3.3.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add package registry (EPR) to ECK

9 participants