Skip to content

Commit 0a197e1

Browse files
committed
chore: Merge branch 'main' into feat/versioned-kube-override
2 parents d1f389a + fbebe74 commit 0a197e1

44 files changed

Lines changed: 1179 additions & 143 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

Lines changed: 10 additions & 3 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 & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ either = "1.13.0"
2929
futures = "0.3.30"
3030
futures-util = "0.3.30"
3131
http = "1.3.1"
32+
humantime = "2.1.0"
3233
indexmap = "2.5.0"
3334
indoc = "2.0.6"
3435
jiff = "0.2.18"

crates/k8s-version/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
//!
2424
//! ### Constructing
2525
//!
26-
//! Alternatively, they can be constructed programatically using the
26+
//! Alternatively, they can be constructed programmatically using the
2727
//! [`ApiVersion::new()`] and [`ApiVersion::try_new()`] functions.
2828
//!
2929
//! ```

crates/stackable-certs/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ All notable changes to this project will be documented in this file.
1414

1515
- BREAKING: The functions `generate_leaf_certificate`, `generate_rsa_leaf_certificate` and
1616
`generate_ecdsa_leaf_certificate` of `CertificateAuthority` accept an additional parameter
17-
`subject_alterative_dns_names` ([#1057]).
17+
`subject_alternative_dns_names` ([#1057]).
1818
- The passed SANs are added to the generated certificate, this is needed when the HTTPS server is
1919
accessible on multiple DNS names and/or IPs.
2020
- Pass an empty list (`[]`) to keep the existing behavior.

crates/stackable-certs/src/ca/mod.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ where
163163
}
164164

165165
/// A certificate authority (CA) which is used to generate and sign
166-
/// intermidiate or leaf certificates.
166+
/// intermediate or leaf certificates.
167167
#[derive(Debug)]
168168
pub struct CertificateAuthority<S>
169169
where
@@ -298,7 +298,7 @@ where
298298
key_pair: T,
299299
name: &str,
300300
scope: &str,
301-
subject_alterative_dns_names: impl IntoIterator<Item = &'a str> + Debug,
301+
subject_alternative_dns_names: impl IntoIterator<Item = &'a str> + Debug,
302302
validity: Duration,
303303
) -> Result<CertificatePair<T>>
304304
where
@@ -353,7 +353,7 @@ where
353353
]))
354354
.context(AddCertificateExtensionSnafu)?;
355355

356-
let sans = subject_alterative_dns_names
356+
let sans = subject_alternative_dns_names
357357
.into_iter()
358358
.map(|dns_name| {
359359
let ia5_dns_name =
@@ -385,11 +385,11 @@ where
385385
&mut self,
386386
name: &str,
387387
scope: &str,
388-
subject_alterative_dns_names: impl IntoIterator<Item = &'a str> + Debug,
388+
subject_alternative_dns_names: impl IntoIterator<Item = &'a str> + Debug,
389389
validity: Duration,
390390
) -> Result<CertificatePair<rsa::SigningKey>> {
391391
let key = rsa::SigningKey::new().context(GenerateRsaSigningKeySnafu)?;
392-
self.generate_leaf_certificate(key, name, scope, subject_alterative_dns_names, validity)
392+
self.generate_leaf_certificate(key, name, scope, subject_alternative_dns_names, validity)
393393
}
394394

395395
/// Generates an ECDSAasync -based leaf certificate which is signed by this CA.
@@ -401,11 +401,11 @@ where
401401
&mut self,
402402
name: &str,
403403
scope: &str,
404-
subject_alterative_dns_names: impl IntoIterator<Item = &'a str> + Debug,
404+
subject_alternative_dns_names: impl IntoIterator<Item = &'a str> + Debug,
405405
validity: Duration,
406406
) -> Result<CertificatePair<ecdsa::SigningKey>> {
407407
let key = ecdsa::SigningKey::new().context(GenerateEcdsaSigningKeySnafu)?;
408-
self.generate_leaf_certificate(key, name, scope, subject_alterative_dns_names, validity)
408+
self.generate_leaf_certificate(key, name, scope, subject_alternative_dns_names, validity)
409409
}
410410

411411
/// Create a [`CertificateAuthority`] from a Kubernetes [`Secret`].

crates/stackable-certs/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ pub enum CertificatePairError<E>
4343
where
4444
E: std::error::Error + 'static,
4545
{
46-
#[snafu(display("failed to seralize certificate as {key_encoding}"))]
46+
#[snafu(display("failed to serialize certificate as {key_encoding}"))]
4747
SerializeCertificate {
4848
source: x509_cert::der::Error,
4949
key_encoding: KeyEncoding,

crates/stackable-operator/CHANGELOG.md

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,22 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
### Added
8+
9+
- Git sync: add support for CAs ([#1154]).
10+
- Add support for specifying a `clientAuthenticationMethod` for OIDC ([#1178]).
11+
This was originally done in [#1158] and had been reverted in [#1170].
12+
- Implement `Deref` for `kvp::Key` to be more ergonomic to use ([#1182]).
13+
14+
### Removed
15+
16+
- BREAKING: Remove unused `add_prefix`, `try_add_prefix`, `set_name`, and `try_set_name` associated
17+
functions from `kvp::Key` to disallow mutable access to inner values ([#1182]).
18+
19+
[#1154]: https://github.com/stackabletech/operator-rs/pull/1154
20+
[#1178]: https://github.com/stackabletech/operator-rs/pull/1178
21+
[#1182]: https://github.com/stackabletech/operator-rs/pull/1182
22+
723
## [0.108.0] - 2026-03-10
824

925
### Removed
@@ -1494,7 +1510,7 @@ Only rust documentation was changed.
14941510
- status::condition module to compute the cluster resource status ([#571]).
14951511
- Helper function to build RBAC resources ([#572]).
14961512
- Add `ClusterResourceApplyStrategy` to `ClusterResource` ([#573]).
1497-
- Add `ClusterOperation` common struct with `reconcilation_paused` and `stopped` flags ([#573]).
1513+
- Add `ClusterOperation` common struct with `reconciliation_paused` and `stopped` flags ([#573]).
14981514

14991515
[#571]: https://github.com/stackabletech/operator-rs/pull/571
15001516
[#572]: https://github.com/stackabletech/operator-rs/pull/572
@@ -1839,7 +1855,7 @@ This is a rerelease of 0.25.1 which some last-minute incompatible API changes to
18391855

18401856
### Changed
18411857

1842-
- BREAKING: Removed `commons::s3::S3ConnectionImplementation`. `commons::s3::InlinedBucketSpec::endpoint()` doesn't take arguments since the protocol decision is now based on the existance of TLS configuration ([#390]).
1858+
- BREAKING: Removed `commons::s3::S3ConnectionImplementation`. `commons::s3::InlinedBucketSpec::endpoint()` doesn't take arguments since the protocol decision is now based on the existence of TLS configuration ([#390]).
18431859
- BREAKING: Changes to resource requirements structs to enable deep merging ([#392])
18441860
- Changed fields in `Resources` to no longer be optional
18451861
- Changed atomic fields in `MemoryLimits`, `JvmHeapLimits`, `CpuLimits` and `PvcConfig` to be optional
@@ -1875,7 +1891,7 @@ This is a rerelease of 0.25.1 which some last-minute incompatible API changes to
18751891
### Added
18761892

18771893
- Export logs to Jaeger ([#360]).
1878-
- Added common datastructures shared between all operators like `Tls` oder `AuthenticationClass` ([#366]).
1894+
- Added common datastructures shared between all operators like `Tls` or `AuthenticationClass` ([#366]).
18791895
- Added helpers for env variables from Secrets or ConfigMaps ([#370]).
18801896

18811897
### Changed
@@ -2089,7 +2105,7 @@ This is a rerelease of 0.25.1 which some last-minute incompatible API changes to
20892105
### Changed
20902106

20912107
- BREAKING: In builder: `add_stackable_agent_tolerations` to `add_tolerations` ([#255]).
2092-
- Generic `VALUE` paramters to `impl Into<_>` arguments for consistency ([#253]).
2108+
- Generic `VALUE` parameters to `impl Into<_>` arguments for consistency ([#253]).
20932109

20942110
### Removed
20952111

crates/stackable-operator/crds/DummyCluster.yaml

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@ spec:
3030
description: This field contains OIDC-specific configuration. It is only required in case OIDC is used.
3131
nullable: true
3232
properties:
33+
clientAuthenticationMethod:
34+
default: client_secret_basic
35+
description: 'The client authentication method used when communicating with the token endpoint. Defaults to `client_secret_basic`. The required contents of `clientCredentialsSecret` depend on the chosen method: secret-based methods (`client_secret_basic`, `client_secret_post`, `client_secret_jwt`) expect a client secret, while `private_key_jwt` expects a private key.'
36+
enum:
37+
- client_secret_basic
38+
- client_secret_post
39+
- client_secret_jwt
40+
- private_key_jwt
41+
- none
42+
type: string
3343
clientCredentialsSecret:
3444
description: |-
3545
A reference to the OIDC client credentials secret. The secret contains
@@ -142,6 +152,56 @@ spec:
142152
description: 'The git repository URL that will be cloned, for example: `https://github.com/stackabletech/airflow-operator` or `ssh://git@github.com:stackable-airflow/dags.git`.'
143153
format: uri
144154
type: string
155+
tls:
156+
default:
157+
verification:
158+
server:
159+
caCert:
160+
webPki: {}
161+
description: Configure a TLS connection. If not specified it will default to webPki validation.
162+
nullable: true
163+
properties:
164+
verification:
165+
description: The verification method used to verify the certificates of the server and/or the client.
166+
oneOf:
167+
- required:
168+
- none
169+
- required:
170+
- server
171+
properties:
172+
none:
173+
description: Use TLS but don't verify certificates.
174+
type: object
175+
server:
176+
description: Use TLS and a CA certificate to verify the server.
177+
properties:
178+
caCert:
179+
description: CA cert to verify the server.
180+
oneOf:
181+
- required:
182+
- webPki
183+
- required:
184+
- secretClass
185+
properties:
186+
secretClass:
187+
description: |-
188+
Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate.
189+
Note that a SecretClass does not need to have a key but can also work with just a CA certificate,
190+
so if you got provided with a CA cert but don't have access to the key you can still use this method.
191+
type: string
192+
webPki:
193+
description: |-
194+
Use TLS and the CA certificates trusted by the common web browsers to verify the server.
195+
This can be useful when you e.g. use public AWS S3 or other public available services.
196+
type: object
197+
type: object
198+
required:
199+
- caCert
200+
type: object
201+
type: object
202+
required:
203+
- verification
204+
type: object
145205
wait:
146206
default: 20s
147207
description: |-
@@ -587,7 +647,7 @@ spec:
587647
type: object
588648
type: object
589649
enableVectorAgent:
590-
description: Wether or not to deploy a container with the Vector log agent.
650+
description: Whether or not to deploy a container with the Vector log agent.
591651
nullable: true
592652
type: boolean
593653
type: object
@@ -1199,7 +1259,7 @@ spec:
11991259
type: object
12001260
type: object
12011261
enableVectorAgent:
1202-
description: Wether or not to deploy a container with the Vector log agent.
1262+
description: Whether or not to deploy a container with the Vector log agent.
12031263
nullable: true
12041264
type: boolean
12051265
type: object

crates/stackable-operator/src/builder/pdb.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ pub enum Error {
4545
pub struct PodDisruptionBudgetBuilder<ObjectMeta, LabelSelector, PodDisruptionBudgetConstraint> {
4646
metadata: ObjectMeta,
4747
selector: LabelSelector,
48-
/// Tracks wether either `maxUnavailable` or `minAvailable` is set.
48+
/// Tracks whether either `maxUnavailable` or `minAvailable` is set.
4949
constraint: Option<PodDisruptionBudgetConstraint>,
5050
}
5151

crates/stackable-operator/src/builder/pod/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -667,7 +667,7 @@ mod tests {
667667
.build()
668668
}
669669

670-
/// A [`PodBuilder`] that already contains the minum setup to build a Pod (name and container).
670+
/// A [`PodBuilder`] that already contains the minimum setup to build a Pod (name and container).
671671
#[fixture]
672672
fn pod_builder_with_name_and_container(dummy_container: Container) -> PodBuilder {
673673
let mut builder = PodBuilder::new();

0 commit comments

Comments
 (0)