Skip to content

Commit d492e1e

Browse files
Merge branch 'main' into feat/service-discovery-and-exposition
2 parents 74197eb + 2f57dec commit d492e1e

File tree

10 files changed

+145
-132
lines changed

10 files changed

+145
-132
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file.
1111
- Allow adding entries to the OpenSearch keystore ([#76]).
1212
- Support objectOverrides using `.spec.objectOverrides`.
1313
See [objectOverrides concepts page](https://docs.stackable.tech/home/nightly/concepts/overrides/#object-overrides) for details ([#93]).
14+
- Enable the [restart-controller](https://docs.stackable.tech/home/nightly/commons-operator/restarter/), so that the Pods are automatically restarted on config changes ([#97]).
1415

1516
### Changed
1617

@@ -21,6 +22,7 @@ All notable changes to this project will be documented in this file.
2122
[#76]: https://github.com/stackabletech/opensearch-operator/pull/76
2223
[#91]: https://github.com/stackabletech/opensearch-operator/pull/91
2324
[#93]: https://github.com/stackabletech/opensearch-operator/pull/93
25+
[#97]: https://github.com/stackabletech/opensearch-operator/pull/97
2426

2527
## [25.11.0] - 2025-11-07
2628

Cargo.lock

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.nix

Lines changed: 15 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ edition = "2024"
1010
repository = "https://github.com/stackabletech/opensearch-operator"
1111

1212
[workspace.dependencies]
13-
stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.101.2", features = ["telemetry", "versioned"] }
13+
stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.102.0", features = ["telemetry", "versioned"] }
1414

1515
built = { version = "0.8.0", features = ["chrono", "git2"] }
1616
clap = "4.5"

crate-hashes.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/operator-binary/src/controller/apply.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,6 @@ impl<'a> Applier<'a> {
7676
mut self,
7777
resources: KubernetesResources<Prepared>,
7878
) -> Result<KubernetesResources<Applied>> {
79-
let stateful_sets = self.add_resources(resources.stateful_sets).await?;
80-
8179
let services = self.add_resources(resources.services).await?;
8280

8381
let listeners = self.add_resources(resources.listeners).await?;
@@ -90,6 +88,11 @@ impl<'a> Applier<'a> {
9088

9189
let pod_disruption_budgets = self.add_resources(resources.pod_disruption_budgets).await?;
9290

91+
// Note: The StatefulSet needs to be applied after all ConfigMaps and Secrets it mounts
92+
// to prevent unnecessary Pod restarts.
93+
// See https://github.com/stackabletech/commons-operator/issues/111 for details.
94+
let stateful_sets = self.add_resources(resources.stateful_sets).await?;
95+
9396
self.cluster_resources
9497
.delete_orphaned_resources(self.client)
9598
.await

rust/operator-binary/src/controller/build/role_group_builder.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use stackable_operator::{
77
meta::ObjectMetaBuilder,
88
pod::volume::{SecretFormat, SecretOperatorVolumeSourceBuilder, VolumeBuilder},
99
},
10+
constants::RESTART_CONTROLLER_ENABLED_LABEL,
1011
crd::listener::{self},
1112
k8s_openapi::{
1213
DeepMerge,
@@ -189,6 +190,7 @@ impl<'a> RoleGroupBuilder<'a> {
189190
pub fn build_stateful_set(&self) -> StatefulSet {
190191
let metadata = self
191192
.common_metadata(self.resource_names.stateful_set_name())
193+
.with_label(RESTART_CONTROLLER_ENABLED_LABEL.to_owned())
192194
.build();
193195

194196
let template = self.build_pod_template();
@@ -1090,7 +1092,8 @@ mod tests {
10901092
"app.kubernetes.io/name": "opensearch",
10911093
"app.kubernetes.io/role-group": "default",
10921094
"app.kubernetes.io/version": "3.1.0",
1093-
"stackable.tech/vendor": "Stackable"
1095+
"stackable.tech/vendor": "Stackable",
1096+
"restarter.stackable.tech/enabled": "true"
10941097
},
10951098
"name": "my-opensearch-cluster-nodes-default",
10961099
"namespace": "default",
@@ -1745,6 +1748,7 @@ mod tests {
17451748
"spec": {
17461749
"className": "cluster-internal",
17471750
"extraPodSelectorLabels": {},
1751+
"objectOverrides": [],
17481752
"ports": [
17491753
{
17501754
"name": "http",
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
---
2+
apiVersion: v1
3+
kind: Secret
4+
metadata:
5+
name: opensearch-security-config
6+
stringData:
7+
action_groups.yml: |
8+
---
9+
_meta:
10+
type: actiongroups
11+
config_version: 2
12+
allowlist.yml: |
13+
---
14+
_meta:
15+
type: allowlist
16+
config_version: 2
17+
18+
config:
19+
enabled: false
20+
audit.yml: |
21+
---
22+
_meta:
23+
type: audit
24+
config_version: 2
25+
26+
config:
27+
enabled: false
28+
config.yml: |
29+
---
30+
_meta:
31+
type: config
32+
config_version: 2
33+
34+
config:
35+
dynamic:
36+
authc:
37+
basic_internal_auth_domain:
38+
description: Authenticate via HTTP Basic against internal users database
39+
http_enabled: true
40+
transport_enabled: true
41+
order: 1
42+
http_authenticator:
43+
type: basic
44+
challenge: true
45+
authentication_backend:
46+
type: intern
47+
authz: {}
48+
internal_users.yml: |
49+
---
50+
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh
51+
52+
_meta:
53+
type: internalusers
54+
config_version: 2
55+
56+
admin:
57+
hash: $2y$10$xRtHZFJ9QhG9GcYhRpAGpufCZYsk//nxsuel5URh0GWEBgmiI4Q/e
58+
reserved: true
59+
backend_roles:
60+
- admin
61+
description: OpenSearch admin user
62+
63+
kibanaserver:
64+
hash: $2y$10$vPgQ/6ilKDM5utawBqxoR.7euhVQ0qeGl8mPTeKhmFT475WUDrfQS
65+
reserved: true
66+
description: OpenSearch Dashboards user
67+
nodes_dn.yml: |
68+
---
69+
_meta:
70+
type: nodesdn
71+
config_version: 2
72+
roles.yml: |
73+
---
74+
_meta:
75+
type: roles
76+
config_version: 2
77+
roles_mapping.yml: |
78+
---
79+
_meta:
80+
type: rolesmapping
81+
config_version: 2
82+
83+
all_access:
84+
reserved: false
85+
backend_roles:
86+
- admin
87+
88+
kibana_server:
89+
reserved: true
90+
users:
91+
- kibanaserver
92+
tenants.yml: |
93+
---
94+
_meta:
95+
type: tenants
96+
config_version: 2

tests/templates/kuttl/smoke/10-assert.yaml.j2 renamed to tests/templates/kuttl/smoke/11-assert.yaml.j2

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ timeout: 600
99
apiVersion: apps/v1
1010
kind: StatefulSet
1111
metadata:
12+
name: opensearch-nodes-cluster-manager
1213
labels:
1314
app.kubernetes.io/component: nodes
1415
app.kubernetes.io/instance: opensearch
@@ -17,7 +18,8 @@ metadata:
1718
app.kubernetes.io/role-group: cluster-manager
1819
app.kubernetes.io/version: {{ test_scenario['values']['opensearch'].split(',')[0] }}
1920
stackable.tech/vendor: Stackable
20-
name: opensearch-nodes-cluster-manager
21+
restarter.stackable.tech/enabled: "true"
22+
generation: 1 # There should be no unneeded Pod restarts
2123
ownerReferences:
2224
- apiVersion: opensearch.stackable.tech/v1alpha1
2325
controller: true
@@ -380,6 +382,7 @@ status:
380382
apiVersion: apps/v1
381383
kind: StatefulSet
382384
metadata:
385+
name: opensearch-nodes-data
383386
labels:
384387
app.kubernetes.io/component: nodes
385388
app.kubernetes.io/instance: opensearch
@@ -388,7 +391,8 @@ metadata:
388391
app.kubernetes.io/role-group: data
389392
app.kubernetes.io/version: {{ test_scenario['values']['opensearch'].split(',')[0] }}
390393
stackable.tech/vendor: Stackable
391-
name: opensearch-nodes-data
394+
restarter.stackable.tech/enabled: "true"
395+
generation: 1 # There should be no unneeded Pod restarts
392396
ownerReferences:
393397
- apiVersion: opensearch.stackable.tech/v1alpha1
394398
controller: true

0 commit comments

Comments
 (0)