From 70a81b31f919ea331919652edd8090db1eda5633 Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Mon, 21 Oct 2024 16:42:56 +0200 Subject: [PATCH 1/5] adapt to op-rs 0.79.0 --- CHANGELOG.md | 4 ++ Cargo.lock | 20 ++++++-- Cargo.toml | 6 +-- deploy/helm/opa-operator/values.yaml | 5 ++ rust/bundle-builder/src/main.rs | 2 +- rust/crd/src/lib.rs | 17 +++++-- rust/operator-binary/src/controller.rs | 66 +++++++++++++++++++------- rust/operator-binary/src/discovery.rs | 7 ++- rust/operator-binary/src/main.rs | 2 +- 9 files changed, 97 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd5cb83c..ffddabd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ All notable changes to this project will be documented in this file. - Added regorule library for accessing user-info-fetcher ([#580]). - Added support for OPA 0.67.1 ([#616]). +- The operator can now run on Kubernetes clusters using a non-default cluster domain. It should automatically detect the + correct domain to use, but you can also use the env var `KUBERNETES_CLUSTER_DOMAIN` to set the domain explicitly + or use the helm-chart property `kubernetesClusterDomain` ([#xxx]). ### Changed @@ -28,6 +31,7 @@ All notable changes to this project will be documented in this file. [#580]: https://github.com/stackabletech/opa-operator/pull/580 [#616]: https://github.com/stackabletech/opa-operator/pull/616 [#621]: https://github.com/stackabletech/opa-operator/pull/621 +[#xxx]: https://github.com/stackabletech/opa-operator/pull/xxx ## [24.7.0] - 2024-07-24 diff --git a/Cargo.lock b/Cargo.lock index 0a6147bf..c4317908 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2553,8 +2553,8 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.76.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.76.0#a7e70f174fb043a1766e0a80de95834cb4f7513d" +version = "0.79.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.79.0#a2ac5f525edfd9a2fab884ba753e79a325fbb752" dependencies = [ "chrono", "clap", @@ -2564,6 +2564,7 @@ dependencies = [ "dockerfile-parser", "either", "futures", + "indexmap", "json-patch", "k8s-openapi", "kube", @@ -2578,6 +2579,7 @@ dependencies = [ "serde_yaml", "snafu 0.8.5", "stackable-operator-derive", + "stackable-shared", "strum", "tokio", "tracing", @@ -2590,7 +2592,7 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.76.0#a7e70f174fb043a1766e0a80de95834cb4f7513d" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.79.0#a2ac5f525edfd9a2fab884ba753e79a325fbb752" dependencies = [ "darling", "proc-macro2", @@ -2598,6 +2600,18 @@ dependencies = [ "syn 2.0.79", ] +[[package]] +name = "stackable-shared" +version = "0.0.1" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.79.0#a2ac5f525edfd9a2fab884ba753e79a325fbb752" +dependencies = [ + "kube", + "semver", + "serde", + "serde_yaml", + "snafu 0.8.5", +] + [[package]] name = "strsim" version = "0.11.1" diff --git a/Cargo.toml b/Cargo.toml index d2533bf9..fdebac39 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ repository = "https://github.com/stackabletech/opa-operator" [workspace.dependencies] anyhow = "1.0" axum = "0.7" -built = { version ="0.7", features = ["chrono", "git2"] } +built = { version = "0.7", features = ["chrono", "git2"] } clap = "4.5" derivative = "2.2" flate2 = "1.0" @@ -23,12 +23,12 @@ indoc = "2.0" moka = { version = "0.12", features = ["future"] } pin-project = "1.1" product-config = { git = "https://github.com/stackabletech/product-config.git", tag = "0.7.0" } -reqwest = { version ="0.12", features = ["json"] } +reqwest = { version = "0.12", features = ["json"] } semver = "1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" snafu = "0.8" -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.76.0" } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.79.0" } strum = { version = "0.26", features = ["derive"] } tar = "0.4" tokio = { version = "1.40", features = ["full"] } diff --git a/deploy/helm/opa-operator/values.yaml b/deploy/helm/opa-operator/values.yaml index 45ae7f46..6b0890a8 100644 --- a/deploy/helm/opa-operator/values.yaml +++ b/deploy/helm/opa-operator/values.yaml @@ -47,3 +47,8 @@ nodeSelector: {} tolerations: [] affinity: {} + +# When running on a non-default Kubernetes cluster domain and the auto detection is not working correctly, +# you can set your custom cluster domain here. +# See the https://docs.stackable.tech/home/stable/guides/kubernetes-cluster-domain guide for details +# kubernetesClusterDomain: my-cluster.local diff --git a/rust/bundle-builder/src/main.rs b/rust/bundle-builder/src/main.rs index 70ab3353..ae75a92a 100644 --- a/rust/bundle-builder/src/main.rs +++ b/rust/bundle-builder/src/main.rs @@ -71,7 +71,7 @@ async fn main() -> Result<(), StartupError> { args.common.tracing_target, ); - let client = stackable_operator::client::create_client(None) + let client = stackable_operator::client::initialize_operator(None) .await .context(InitKubeSnafu)?; diff --git a/rust/crd/src/lib.rs b/rust/crd/src/lib.rs index 7dc34097..d0b5b47c 100644 --- a/rust/crd/src/lib.rs +++ b/rust/crd/src/lib.rs @@ -12,16 +12,19 @@ use stackable_operator::{ Resources, ResourcesFragment, }, }, - config::{fragment, fragment::Fragment, fragment::ValidationError, merge::Merge}, + config::{ + fragment::{self, Fragment, ValidationError}, + merge::Merge, + }, k8s_openapi::apimachinery::pkg::api::resource::Quantity, kube::CustomResource, product_config_utils::Configuration, product_logging::{self, spec::Logging}, - role_utils::Role, - role_utils::{EmptyRoleConfig, RoleGroup, RoleGroupRef}, + role_utils::{EmptyRoleConfig, Role, RoleGroup, RoleGroupRef}, schemars::{self, JsonSchema}, status::condition::{ClusterCondition, HasStatusCondition}, time::Duration, + utils::cluster_domain::KUBERNETES_CLUSTER_DOMAIN, }; use strum::{Display, EnumIter, EnumString}; @@ -304,10 +307,14 @@ impl OpaCluster { /// The fully-qualified domain name of the role-level load-balanced Kubernetes `Service` pub fn server_role_service_fqdn(&self) -> Option { + let cluster_domain = KUBERNETES_CLUSTER_DOMAIN + .get() + .expect("KUBERNETES_CLUSTER_DOMAIN must first be set by calling initialize_operator"); Some(format!( - "{}.{}.svc.cluster.local", + "{}.{}.svc.{}", self.server_role_service_name()?, - self.metadata.namespace.as_ref()? + self.metadata.namespace.as_ref()?, + cluster_domain )) } diff --git a/rust/operator-binary/src/controller.rs b/rust/operator-binary/src/controller.rs index 7a931427..f563052e 100644 --- a/rust/operator-binary/src/controller.rs +++ b/rust/operator-binary/src/controller.rs @@ -15,6 +15,7 @@ use stackable_opa_crd::{ }; use stackable_operator::{ builder::{ + self, configmap::ConfigMapBuilder, meta::ObjectMetaBuilder, pod::{ @@ -51,7 +52,9 @@ use stackable_operator::{ product_config_utils::{transform_all_roles_to_config, validate_all_roles_and_groups_config}, product_logging::{ self, - framework::{create_vector_shutdown_file_command, remove_vector_shutdown_file_command}, + framework::{ + create_vector_shutdown_file_command, remove_vector_shutdown_file_command, LoggingError, + }, spec::{ AppenderConfig, AutomaticContainerLogConfig, ContainerLogConfig, ContainerLogConfigChoice, LogLevel, @@ -279,6 +282,17 @@ pub enum Error { "failed to build volume or volume mount spec for the Keycloak backend TLS config" ))] VolumeAndMounts { source: TlsClientDetailsError }, + + #[snafu(display("failed to configure logging"))] + ConfigureLogging { source: LoggingError }, + + #[snafu(display("failed to add needed volume"))] + AddVolume { source: builder::pod::Error }, + + #[snafu(display("failed to add needed volumeMount"))] + AddVolumeMount { + source: builder::pod::container::Error, + }, } type Result = std::result::Result; @@ -746,7 +760,9 @@ fn build_server_rolegroup_daemonset( ) .join(" && ")]) .add_volume_mount(BUNDLES_VOLUME_NAME, BUNDLES_DIR) + .context(AddVolumeMountSnafu)? .add_volume_mount(LOG_VOLUME_NAME, STACKABLE_LOG_DIR) + .context(AddVolumeMountSnafu)? .resources(merged_config.resources.to_owned().into()); cb_bundle_builder @@ -773,7 +789,9 @@ fn build_server_rolegroup_daemonset( format!("{STACKABLE_LOG_DIR}/{bundle_builder_container_name}"), ) .add_volume_mount(BUNDLES_VOLUME_NAME, BUNDLES_DIR) + .context(AddVolumeMountSnafu)? .add_volume_mount(LOG_VOLUME_NAME, STACKABLE_LOG_DIR) + .context(AddVolumeMountSnafu)? .resources( ResourceRequirementsBuilder::new() .with_cpu_request("100m") @@ -820,7 +838,9 @@ fn build_server_rolegroup_daemonset( .add_env_vars(env) .add_container_port(APP_PORT_NAME, APP_PORT.into()) .add_volume_mount(CONFIG_VOLUME_NAME, CONFIG_DIR) + .context(AddVolumeMountSnafu)? .add_volume_mount(LOG_VOLUME_NAME, STACKABLE_LOG_DIR) + .context(AddVolumeMountSnafu)? .resources(merged_config.resources.to_owned().into()) .readiness_probe(Probe { initial_delay_seconds: Some(5), @@ -863,11 +883,13 @@ fn build_server_rolegroup_daemonset( .with_config_map(rolegroup_ref.object_name()) .build(), ) + .context(AddVolumeSnafu)? .add_volume( VolumeBuilder::new(BUNDLES_VOLUME_NAME) .with_empty_dir(None::, None) .build(), ) + .context(AddVolumeSnafu)? .add_volume( VolumeBuilder::new(LOG_VOLUME_NAME) .empty_dir(EmptyDirVolumeSource { @@ -882,6 +904,7 @@ fn build_server_rolegroup_daemonset( }) .build(), ) + .context(AddVolumeSnafu)? .service_account_name(sa_name) .security_context( PodSecurityContextBuilder::new() @@ -902,6 +925,7 @@ fn build_server_rolegroup_daemonset( .add_env_var("CONFIG", format!("{CONFIG_DIR}/user-info-fetcher.json")) .add_env_var("CREDENTIALS_DIR", USER_INFO_FETCHER_CREDENTIALS_DIR) .add_volume_mount(CONFIG_VOLUME_NAME, CONFIG_DIR) + .context(AddVolumeMountSnafu)? .resources( ResourceRequirementsBuilder::new() .with_cpu_request("100m") @@ -922,11 +946,14 @@ fn build_server_rolegroup_daemonset( ..Default::default() }) .build(), - ); - cb_user_info_fetcher.add_volume_mount( - USER_INFO_FETCHER_CREDENTIALS_VOLUME_NAME, - USER_INFO_FETCHER_CREDENTIALS_DIR, - ); + ) + .context(AddVolumeSnafu)?; + cb_user_info_fetcher + .add_volume_mount( + USER_INFO_FETCHER_CREDENTIALS_VOLUME_NAME, + USER_INFO_FETCHER_CREDENTIALS_DIR, + ) + .context(AddVolumeMountSnafu)?; keycloak .tls .add_volumes_and_mounts(&mut pb, vec![&mut cb_user_info_fetcher]) @@ -938,18 +965,21 @@ fn build_server_rolegroup_daemonset( } if merged_config.logging.enable_vector_agent { - pb.add_container(product_logging::framework::vector_container( - resolved_product_image, - CONFIG_VOLUME_NAME, - LOG_VOLUME_NAME, - merged_config.logging.containers.get(&Container::Vector), - ResourceRequirementsBuilder::new() - .with_cpu_request("250m") - .with_cpu_limit("500m") - .with_memory_request("128Mi") - .with_memory_limit("128Mi") - .build(), - )); + pb.add_container( + product_logging::framework::vector_container( + resolved_product_image, + CONFIG_VOLUME_NAME, + LOG_VOLUME_NAME, + merged_config.logging.containers.get(&Container::Vector), + ResourceRequirementsBuilder::new() + .with_cpu_request("250m") + .with_cpu_limit("500m") + .with_memory_request("128Mi") + .with_memory_limit("128Mi") + .build(), + ) + .context(ConfigureLoggingSnafu)?, + ); } add_graceful_shutdown_config(merged_config, &mut pb).context(GracefulShutdownSnafu)?; diff --git a/rust/operator-binary/src/discovery.rs b/rust/operator-binary/src/discovery.rs index 2274e6aa..0e96072b 100644 --- a/rust/operator-binary/src/discovery.rs +++ b/rust/operator-binary/src/discovery.rs @@ -7,6 +7,7 @@ use stackable_operator::{ commons::product_image_selection::ResolvedProductImage, k8s_openapi::api::core::v1::{ConfigMap, Service}, kube::{runtime::reflector::ObjectRef, Resource, ResourceExt}, + utils::cluster_domain::KUBERNETES_CLUSTER_DOMAIN, }; #[derive(Snafu, Debug)] @@ -59,13 +60,17 @@ fn build_discovery_configmap( resolved_product_image: &ResolvedProductImage, svc: &Service, ) -> Result { + let cluster_domain = KUBERNETES_CLUSTER_DOMAIN + .get() + .expect("KUBERNETES_CLUSTER_DOMAIN must first be set by calling initialize_operator"); let url = format!( - "http://{}.{}.svc.cluster.local:{}/", + "http://{}.{}.svc.{}:{}/", svc.metadata.name.as_deref().context(NoNameSnafu)?, svc.metadata .namespace .as_deref() .context(NoNamespaceSnafu)?, + cluster_domain, APP_PORT ); diff --git a/rust/operator-binary/src/main.rs b/rust/operator-binary/src/main.rs index b24ed795..8382fd29 100644 --- a/rust/operator-binary/src/main.rs +++ b/rust/operator-binary/src/main.rs @@ -83,7 +83,7 @@ async fn main() -> anyhow::Result<()> { "/etc/stackable/opa-operator/config-spec/properties.yaml", ])?; - let client = client::create_client(Some(OPERATOR_NAME.to_string())).await?; + let client = client::initialize_operator(Some(OPERATOR_NAME.to_string())).await?; create_controller( client, product_config, From e418a2cb9f060e92aa333de0b51c7d4f4e947071 Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Mon, 21 Oct 2024 16:44:01 +0200 Subject: [PATCH 2/5] adapt changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffddabd7..265d8361 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ All notable changes to this project will be documented in this file. - Added support for OPA 0.67.1 ([#616]). - The operator can now run on Kubernetes clusters using a non-default cluster domain. It should automatically detect the correct domain to use, but you can also use the env var `KUBERNETES_CLUSTER_DOMAIN` to set the domain explicitly - or use the helm-chart property `kubernetesClusterDomain` ([#xxx]). + or use the helm-chart property `kubernetesClusterDomain` ([#637]). ### Changed @@ -31,7 +31,7 @@ All notable changes to this project will be documented in this file. [#580]: https://github.com/stackabletech/opa-operator/pull/580 [#616]: https://github.com/stackabletech/opa-operator/pull/616 [#621]: https://github.com/stackabletech/opa-operator/pull/621 -[#xxx]: https://github.com/stackabletech/opa-operator/pull/xxx +[#637]: https://github.com/stackabletech/opa-operator/pull/637 ## [24.7.0] - 2024-07-24 From 2266c4ae730209d8ce843ce5516ca7605582e40e Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Wed, 23 Oct 2024 15:46:45 +0200 Subject: [PATCH 3/5] adapt to op-rs 0.80.0 --- CHANGELOG.md | 5 +- Cargo.lock | 246 +++++++++++++------------ Cargo.toml | 2 +- deploy/helm/opa-operator/values.yaml | 5 +- rust/bundle-builder/src/main.rs | 7 +- rust/crd/src/lib.rs | 15 +- rust/operator-binary/src/controller.rs | 11 +- rust/operator-binary/src/discovery.rs | 19 +- rust/operator-binary/src/main.rs | 5 +- 9 files changed, 169 insertions(+), 146 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2633f96d..23ff4cfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,8 @@ All notable changes to this project will be documented in this file. - Added regorule library for accessing user-info-fetcher ([#580]). - Added support for OPA 0.67.1 ([#616]). -- The operator can now run on Kubernetes clusters using a non-default cluster domain. It should automatically detect the - correct domain to use, but you can also use the env var `KUBERNETES_CLUSTER_DOMAIN` to set the domain explicitly - or use the helm-chart property `kubernetesClusterDomain` ([#637]). +- The operator can now run on Kubernetes clusters using a non-default cluster domain. + Use the env var `KUBERNETES_CLUSTER_DOMAIN` or the operator Helm chart property `kubernetesClusterDomain` to set a non-default cluster domain ([#637]). ### Changed diff --git a/Cargo.lock b/Cargo.lock index c4317908..87413068 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -111,9 +111,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" [[package]] name = "async-broadcast" @@ -157,7 +157,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -168,7 +168,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -211,7 +211,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 1.0.1", "tokio", - "tower 0.5.1", + "tower", "tower-layer", "tower-service", "tracing", @@ -314,9 +314,9 @@ dependencies = [ [[package]] name = "built" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" +checksum = "c360505aed52b7ec96a3636c3f039d99103c37d1d9b4f7a8c743d3ea9ffcd03b" dependencies = [ "chrono", "git2", @@ -336,15 +336,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "cc" -version = "1.1.28" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "jobserver", "libc", @@ -401,7 +401,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -534,7 +534,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -545,7 +545,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -556,7 +556,7 @@ checksum = "bc2323e10c92e1cf4d86e11538512e6dc03ceb586842970b6332af3d4046a046" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -615,6 +615,18 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.82", +] + [[package]] name = "either" version = "1.13.0" @@ -639,6 +651,26 @@ dependencies = [ "thiserror", ] +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.82", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -810,7 +842,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1017,9 +1049,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", @@ -1294,9 +1326,9 @@ dependencies = [ [[package]] name = "kube" -version = "0.95.0" +version = "0.96.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa21063c854820a77c5d7f8deeb7ffa55246d8304e4bcd8cce2956752c6604f8" +checksum = "efffeb3df0bd4ef3e5d65044573499c0e4889b988070b08c50b25b1329289a1f" dependencies = [ "k8s-openapi", "kube-client", @@ -1307,9 +1339,9 @@ dependencies = [ [[package]] name = "kube-client" -version = "0.95.0" +version = "0.96.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c2355f5c9d8a11900e71a6fe1e47abd5ec45bf971eb4b162ffe97b46db9bb7" +checksum = "8bf471ece8ff8d24735ce78dac4d091e9fcb8d74811aeb6b75de4d1c3f5de0f1" dependencies = [ "base64 0.22.1", "bytes", @@ -1338,16 +1370,16 @@ dependencies = [ "thiserror", "tokio", "tokio-util", - "tower 0.4.13", + "tower", "tower-http", "tracing", ] [[package]] name = "kube-core" -version = "0.95.0" +version = "0.96.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3030bd91c9db544a50247e7d48d7db9cf633c172732dce13351854526b1e666" +checksum = "f42346d30bb34d1d7adc5c549b691bce7aa3a1e60254e68fab7e2d7b26fe3d77" dependencies = [ "chrono", "form_urlencoded", @@ -1363,29 +1395,29 @@ dependencies = [ [[package]] name = "kube-derive" -version = "0.95.0" +version = "0.96.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa98be978eddd70a773aa8e86346075365bfb7eb48783410852dbf7cb57f0c27" +checksum = "f9364e04cc5e0482136c6ee8b7fb7551812da25802249f35b3def7aaa31e82ad" dependencies = [ "darling", "proc-macro2", "quote", "serde_json", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] name = "kube-runtime" -version = "0.95.0" +version = "0.96.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5895cb8aa641ac922408f128b935652b34c2995f16ad7db0984f6caa50217914" +checksum = "d3fbf1f6ffa98e65f1d2a9a69338bb60605d46be7edf00237784b89e62c9bd44" dependencies = [ "ahash", "async-broadcast", "async-stream", "async-trait", "backoff", - "derivative", + "educe", "futures", "hashbrown 0.14.5", "json-patch", @@ -1410,9 +1442,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libgit2-sys" @@ -1612,9 +1644,9 @@ checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -1633,7 +1665,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1644,9 +1676,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -1704,7 +1736,7 @@ dependencies = [ "lazy_static", "once_cell", "opentelemetry", - "ordered-float 4.3.0", + "ordered-float 4.4.0", "percent-encoding", "rand", "thiserror", @@ -1723,9 +1755,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d501f1a72f71d3c063a6bbc8f7271fa73aa09fe5d6283b6571e2ed176a2537" +checksum = "83e7ccb95e240b7c9506a3d544f10d935e142cc90b0a1d56954fb44d89ad6b97" dependencies = [ "num-traits", ] @@ -1783,9 +1815,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", "thiserror", @@ -1794,9 +1826,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ "pest", "pest_generator", @@ -1804,22 +1836,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] name = "pest_meta" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ "once_cell", "pest", @@ -1843,7 +1875,7 @@ checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1881,9 +1913,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.87" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -2108,9 +2140,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.14" +version = "0.23.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" +checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" dependencies = [ "log", "once_cell", @@ -2158,9 +2190,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-webpki" @@ -2175,9 +2207,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -2216,7 +2248,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -2227,11 +2259,10 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "secrecy" -version = "0.8.0" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" dependencies = [ - "serde", "zeroize", ] @@ -2266,9 +2297,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" dependencies = [ "serde_derive", ] @@ -2285,13 +2316,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -2302,14 +2333,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -2452,7 +2483,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -2553,8 +2584,8 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.79.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.79.0#a2ac5f525edfd9a2fab884ba753e79a325fbb752" +version = "0.80.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.80.0#6fbe32300b60f95e0baa2ab0ff2daf961b06531c" dependencies = [ "chrono", "clap", @@ -2592,18 +2623,18 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.79.0#a2ac5f525edfd9a2fab884ba753e79a325fbb752" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.80.0#6fbe32300b60f95e0baa2ab0ff2daf961b06531c" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] name = "stackable-shared" version = "0.0.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.79.0#a2ac5f525edfd9a2fab884ba753e79a325fbb752" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.80.0#6fbe32300b60f95e0baa2ab0ff2daf961b06531c" dependencies = [ "kube", "semver", @@ -2637,7 +2668,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -2659,9 +2690,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" dependencies = [ "proc-macro2", "quote", @@ -2736,22 +2767,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -2834,9 +2865,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -2858,7 +2889,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -2907,23 +2938,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - [[package]] name = "tower" version = "0.5.1" @@ -2935,6 +2949,7 @@ dependencies = [ "pin-project-lite", "sync_wrapper 0.1.2", "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -2942,16 +2957,15 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "bitflags 2.6.0", "bytes", "http", "http-body", - "http-body-util", "mime", "pin-project-lite", "tower-layer", @@ -3003,7 +3017,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3159,9 +3173,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", ] @@ -3221,7 +3235,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", "wasm-bindgen-shared", ] @@ -3255,7 +3269,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3464,7 +3478,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index fdebac39..82a88b0c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ semver = "1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" snafu = "0.8" -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.79.0" } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.80.0" } strum = { version = "0.26", features = ["derive"] } tar = "0.4" tokio = { version = "1.40", features = ["full"] } diff --git a/deploy/helm/opa-operator/values.yaml b/deploy/helm/opa-operator/values.yaml index 6b0890a8..b90b2af4 100644 --- a/deploy/helm/opa-operator/values.yaml +++ b/deploy/helm/opa-operator/values.yaml @@ -48,7 +48,6 @@ tolerations: [] affinity: {} -# When running on a non-default Kubernetes cluster domain and the auto detection is not working correctly, -# you can set your custom cluster domain here. -# See the https://docs.stackable.tech/home/stable/guides/kubernetes-cluster-domain guide for details +# When running on a non-default Kubernetes cluster domain, the cluster domain can be configured here. +# See the https://docs.stackable.tech/home/stable/guides/kubernetes-cluster-domain guide for details. # kubernetesClusterDomain: my-cluster.local diff --git a/rust/bundle-builder/src/main.rs b/rust/bundle-builder/src/main.rs index ae75a92a..c358236e 100644 --- a/rust/bundle-builder/src/main.rs +++ b/rust/bundle-builder/src/main.rs @@ -21,6 +21,7 @@ use stackable_operator::{ watcher, }, }, + utils::cluster_info::KubernetesClusterInfoOpts, }; use tokio::net::TcpListener; @@ -71,7 +72,11 @@ async fn main() -> Result<(), StartupError> { args.common.tracing_target, ); - let client = stackable_operator::client::initialize_operator(None) + // This is just a dummy for [`stackable_operator::client::initialize_operator`] and should not be used! + let _cluster_info_opts = KubernetesClusterInfoOpts { + kubernetes_cluster_domain: None, + }; + let client = stackable_operator::client::initialize_operator(None, &_cluster_info_opts) .await .context(InitKubeSnafu)?; diff --git a/rust/crd/src/lib.rs b/rust/crd/src/lib.rs index d0b5b47c..483ce137 100644 --- a/rust/crd/src/lib.rs +++ b/rust/crd/src/lib.rs @@ -24,7 +24,7 @@ use stackable_operator::{ schemars::{self, JsonSchema}, status::condition::{ClusterCondition, HasStatusCondition}, time::Duration, - utils::cluster_domain::KUBERNETES_CLUSTER_DOMAIN, + utils::cluster_info::KubernetesClusterInfo, }; use strum::{Display, EnumIter, EnumString}; @@ -306,15 +306,12 @@ impl OpaCluster { } /// The fully-qualified domain name of the role-level load-balanced Kubernetes `Service` - pub fn server_role_service_fqdn(&self) -> Option { - let cluster_domain = KUBERNETES_CLUSTER_DOMAIN - .get() - .expect("KUBERNETES_CLUSTER_DOMAIN must first be set by calling initialize_operator"); + pub fn server_role_service_fqdn(&self, cluster_info: &KubernetesClusterInfo) -> Option { Some(format!( - "{}.{}.svc.{}", - self.server_role_service_name()?, - self.metadata.namespace.as_ref()?, - cluster_domain + "{role_service_name}.{namespace}.svc.{cluster_domain}", + role_service_name = self.server_role_service_name()?, + namespace = self.metadata.namespace.as_ref()?, + cluster_domain = cluster_info.cluster_domain )) } diff --git a/rust/operator-binary/src/controller.rs b/rust/operator-binary/src/controller.rs index 5823c99f..38e09871 100644 --- a/rust/operator-binary/src/controller.rs +++ b/rust/operator-binary/src/controller.rs @@ -527,9 +527,14 @@ pub async fn reconcile_opa( .context(ApplyPatchRoleGroupDaemonSetSnafu { rolegroup })?; } - for discovery_cm in - build_discovery_configmaps(opa, opa, &resolved_product_image, &server_role_service) - .context(BuildDiscoveryConfigSnafu)? + for discovery_cm in build_discovery_configmaps( + opa, + opa, + &resolved_product_image, + &server_role_service, + &client.kubernetes_cluster_info, + ) + .context(BuildDiscoveryConfigSnafu)? { cluster_resources .add(client, discovery_cm) diff --git a/rust/operator-binary/src/discovery.rs b/rust/operator-binary/src/discovery.rs index 0e96072b..c87d6552 100644 --- a/rust/operator-binary/src/discovery.rs +++ b/rust/operator-binary/src/discovery.rs @@ -7,7 +7,7 @@ use stackable_operator::{ commons::product_image_selection::ResolvedProductImage, k8s_openapi::api::core::v1::{ConfigMap, Service}, kube::{runtime::reflector::ObjectRef, Resource, ResourceExt}, - utils::cluster_domain::KUBERNETES_CLUSTER_DOMAIN, + utils::cluster_info::KubernetesClusterInfo, }; #[derive(Snafu, Debug)] @@ -41,6 +41,7 @@ pub fn build_discovery_configmaps( opa: &OpaCluster, resolved_product_image: &ResolvedProductImage, svc: &Service, + cluster_info: &KubernetesClusterInfo, ) -> Result, Error> { let name = owner.name_any(); Ok(vec![build_discovery_configmap( @@ -49,6 +50,7 @@ pub fn build_discovery_configmaps( opa, resolved_product_image, svc, + cluster_info, )?]) } @@ -59,19 +61,18 @@ fn build_discovery_configmap( opa: &OpaCluster, resolved_product_image: &ResolvedProductImage, svc: &Service, + cluster_info: &KubernetesClusterInfo, ) -> Result { - let cluster_domain = KUBERNETES_CLUSTER_DOMAIN - .get() - .expect("KUBERNETES_CLUSTER_DOMAIN must first be set by calling initialize_operator"); let url = format!( - "http://{}.{}.svc.{}:{}/", - svc.metadata.name.as_deref().context(NoNameSnafu)?, - svc.metadata + "http://{name}.{namespace}.svc.{cluster_domain}:{port}/", + name = svc.metadata.name.as_deref().context(NoNameSnafu)?, + namespace = svc + .metadata .namespace .as_deref() .context(NoNamespaceSnafu)?, - cluster_domain, - APP_PORT + cluster_domain = cluster_info.cluster_domain, + port = APP_PORT ); let metadata = ObjectMetaBuilder::new() diff --git a/rust/operator-binary/src/main.rs b/rust/operator-binary/src/main.rs index 003e2508..1826fd18 100644 --- a/rust/operator-binary/src/main.rs +++ b/rust/operator-binary/src/main.rs @@ -63,6 +63,7 @@ async fn main() -> anyhow::Result<()> { product_config, watch_namespace, tracing_target, + cluster_info_opts, }, }) => { stackable_operator::logging::initialize_logging( @@ -84,7 +85,9 @@ async fn main() -> anyhow::Result<()> { "/etc/stackable/opa-operator/config-spec/properties.yaml", ])?; - let client = client::initialize_operator(Some(OPERATOR_NAME.to_string())).await?; + let client = + client::initialize_operator(Some(OPERATOR_NAME.to_string()), &cluster_info_opts) + .await?; create_controller( client, product_config, From b36bd690263a5098a00ab2074af1bb948ed9806a Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Wed, 23 Oct 2024 15:58:45 +0200 Subject: [PATCH 4/5] Update rust/bundle-builder/src/main.rs Co-authored-by: Sebastian Bernauer --- rust/bundle-builder/src/main.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rust/bundle-builder/src/main.rs b/rust/bundle-builder/src/main.rs index c358236e..528f0e80 100644 --- a/rust/bundle-builder/src/main.rs +++ b/rust/bundle-builder/src/main.rs @@ -72,11 +72,10 @@ async fn main() -> Result<(), StartupError> { args.common.tracing_target, ); - // This is just a dummy for [`stackable_operator::client::initialize_operator`] and should not be used! - let _cluster_info_opts = KubernetesClusterInfoOpts { - kubernetes_cluster_domain: None, - }; - let client = stackable_operator::client::initialize_operator(None, &_cluster_info_opts) + let client = + stackable_operator::client::initialize_operator(None, &args.common.cluster_info_opts) + .await + .context(InitKubeSnafu)?; .await .context(InitKubeSnafu)?; From 86c422e4bcb8d7545d962fbe6d473f09bdcc1f30 Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Wed, 23 Oct 2024 16:01:48 +0200 Subject: [PATCH 5/5] linter --- rust/bundle-builder/src/main.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/rust/bundle-builder/src/main.rs b/rust/bundle-builder/src/main.rs index 528f0e80..237e408b 100644 --- a/rust/bundle-builder/src/main.rs +++ b/rust/bundle-builder/src/main.rs @@ -21,7 +21,6 @@ use stackable_operator::{ watcher, }, }, - utils::cluster_info::KubernetesClusterInfoOpts, }; use tokio::net::TcpListener; @@ -76,8 +75,6 @@ async fn main() -> Result<(), StartupError> { stackable_operator::client::initialize_operator(None, &args.common.cluster_info_opts) .await .context(InitKubeSnafu)?; - .await - .context(InitKubeSnafu)?; let (store, store_w) = reflector::store(); let rebuild_bundle = || {