diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fc080b1..52fcc1e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ - The `runAsUser` and `runAsGroup` fields will not be set anymore by the operator - The defaults from the docker images itself will now apply, which will be different from 1000/0 going forward - This is marked as breaking because tools and policies might exist, which require these fields to be set +- Changed listener class to be role-only ([#643]). ### Fixed @@ -43,6 +44,7 @@ [#631]: https://github.com/stackabletech/superset-operator/pull/631 [#635]: https://github.com/stackabletech/superset-operator/pull/635 [#637]: https://github.com/stackabletech/superset-operator/pull/637 +[#643]: https://github.com/stackabletech/superset-operator/pull/643 ## [25.3.0] - 2025-03-21 diff --git a/deploy/helm/superset-operator/crds/crds.yaml b/deploy/helm/superset-operator/crds/crds.yaml index 0d942b33..905227d1 100644 --- a/deploy/helm/superset-operator/crds/crds.yaml +++ b/deploy/helm/superset-operator/crds/crds.yaml @@ -234,10 +234,6 @@ spec: description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details. nullable: true type: string - listenerClass: - description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the webserver. - nullable: true - type: string logging: default: containers: {} @@ -393,11 +389,16 @@ spec: x-kubernetes-preserve-unknown-fields: true roleConfig: default: + listenerClass: cluster-internal podDisruptionBudget: enabled: true maxUnavailable: null description: This is a product-agnostic RoleConfig, which is sufficient for most of the products. properties: + listenerClass: + default: cluster-internal + description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the webserver. + type: string podDisruptionBudget: default: enabled: true @@ -466,10 +467,6 @@ spec: description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details. nullable: true type: string - listenerClass: - description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the webserver. - nullable: true - type: string logging: default: containers: {} diff --git a/docs/modules/superset/examples/getting_started/getting_started.sh b/docs/modules/superset/examples/getting_started/getting_started.sh index a76b9603..62700a68 100755 --- a/docs/modules/superset/examples/getting_started/getting_started.sh +++ b/docs/modules/superset/examples/getting_started/getting_started.sh @@ -90,7 +90,7 @@ sleep 10 echo "Starting port-forwarding of port 8088" # tag::port-forwarding[] -kubectl port-forward service/simple-superset-external 8088 > /dev/null 2>&1 & +kubectl port-forward service/simple-superset-node 8088 > /dev/null 2>&1 & # end::port-forwarding[] PORT_FORWARD_PID=$! # shellcheck disable=2064 # we want the PID evaluated now, not at the time the trap is diff --git a/docs/modules/superset/examples/getting_started/getting_started.sh.j2 b/docs/modules/superset/examples/getting_started/getting_started.sh.j2 index 119661e3..c8d07c49 100755 --- a/docs/modules/superset/examples/getting_started/getting_started.sh.j2 +++ b/docs/modules/superset/examples/getting_started/getting_started.sh.j2 @@ -90,7 +90,7 @@ sleep 10 echo "Starting port-forwarding of port 8088" # tag::port-forwarding[] -kubectl port-forward service/simple-superset-external 8088 > /dev/null 2>&1 & +kubectl port-forward service/simple-superset-node 8088 > /dev/null 2>&1 & # end::port-forwarding[] PORT_FORWARD_PID=$! # shellcheck disable=2064 # we want the PID evaluated now, not at the time the trap is diff --git a/docs/modules/superset/examples/getting_started/superset.yaml b/docs/modules/superset/examples/getting_started/superset.yaml index 0f8efb35..346121b6 100644 --- a/docs/modules/superset/examples/getting_started/superset.yaml +++ b/docs/modules/superset/examples/getting_started/superset.yaml @@ -8,8 +8,9 @@ spec: productVersion: 4.1.2 clusterConfig: credentialsSecret: simple-superset-credentials - listenerClass: external-unstable nodes: + roleConfig: + listenerClass: external-unstable roleGroups: default: config: diff --git a/docs/modules/superset/pages/usage-guide/listenerclass.adoc b/docs/modules/superset/pages/usage-guide/listenerclass.adoc index ebae1266..97eabd43 100644 --- a/docs/modules/superset/pages/usage-guide/listenerclass.adoc +++ b/docs/modules/superset/pages/usage-guide/listenerclass.adoc @@ -3,13 +3,13 @@ Apache Superset offers a web UI and an API. The operator deploys a xref:listener-operator:listener.adoc[Listener] for the Nodes pod. -The listener defaults to only being accessible from within the Kubernetes cluster, but this can be changed by setting `.spec.nodes.config.listenerClass`: +The listener defaults to only being accessible from within the Kubernetes cluster, but this can be changed by setting `.spec.nodes.roleConfig.listenerClass`: [source,yaml] ---- spec: nodes: - config: + roleConfig: listenerClass: external-stable # <1> ---- -<1> Specify one of `external-stable`, `external-unstable`, `cluster-internal` (the default setting is `cluster-internal`). +<1> Specify one of `external-stable`, `external-unstable`, `cluster-internal` at role-level (the default setting is `cluster-internal`). diff --git a/examples/superset-with-ldap.yaml b/examples/superset-with-ldap.yaml index f578c334..db48bd63 100644 --- a/examples/superset-with-ldap.yaml +++ b/examples/superset-with-ldap.yaml @@ -155,8 +155,9 @@ spec: - authenticationClass: superset-with-ldap-server-veri-tls-ldap userRegistrationRole: Admin credentialsSecret: superset-with-ldap-server-veri-tls-credentials - listenerClass: external-unstable nodes: + roleConfig: + listenerClass: external-unstable roleGroups: default: replicas: 1 diff --git a/rust/operator-binary/src/crd/mod.rs b/rust/operator-binary/src/crd/mod.rs index a0a83821..eceb1d7a 100644 --- a/rust/operator-binary/src/crd/mod.rs +++ b/rust/operator-binary/src/crd/mod.rs @@ -32,6 +32,8 @@ use stackable_operator::{ }; use strum::{Display, EnumIter, EnumString, IntoEnumIterator}; +use crate::crd::v1alpha1::{SupersetConfigFragment, SupersetRoleConfig}; + pub mod affinity; pub mod authentication; pub mod druidconnection; @@ -139,7 +141,19 @@ pub mod versioned { // no doc - docs in the struct. #[serde(default, skip_serializing_if = "Option::is_none")] - pub nodes: Option>, + pub nodes: Option>, + } + + // TODO: move generic version to op-rs? + #[derive(Clone, Debug, Deserialize, JsonSchema, PartialEq, Serialize)] + #[serde(rename_all = "camelCase")] + pub struct SupersetRoleConfig { + #[serde(flatten)] + pub common: GenericRoleConfig, + + /// This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the webserver. + #[serde(default = "default_listener_class")] + pub listener_class: String, } #[derive(Clone, Debug, Deserialize, JsonSchema, PartialEq, Serialize)] @@ -223,10 +237,6 @@ pub mod versioned { /// Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details. #[fragment_attrs(serde(default))] pub graceful_shutdown_timeout: Option, - - /// This field controls which [ListenerClass](DOCS_BASE_URL_PLACEHOLDER/listener-operator/listenerclass.html) is used to expose the webserver. - #[serde(default)] - pub listener_class: String, } #[derive(Clone, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)] @@ -292,6 +302,19 @@ pub mod versioned { } } +impl Default for v1alpha1::SupersetRoleConfig { + fn default() -> Self { + v1alpha1::SupersetRoleConfig { + listener_class: default_listener_class(), + common: Default::default(), + } + } +} + +fn default_listener_class() -> String { + "cluster-internal".to_string() +} + #[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] #[serde(rename_all = "camelCase")] pub struct SupersetCredentials { @@ -324,6 +347,18 @@ pub enum SupersetRole { Node, } +impl SupersetRole { + pub fn listener_class_name(&self, superset: &v1alpha1::SupersetCluster) -> Option { + match self { + Self::Node => superset + .spec + .nodes + .to_owned() + .map(|node| node.role_config.listener_class), + } + } +} + /// A reference to a [`v1alpha1::SupersetCluster`] #[derive(Clone, Debug, Default, Deserialize, Eq, JsonSchema, PartialEq, Serialize)] #[serde(rename_all = "camelCase")] @@ -416,7 +451,6 @@ impl v1alpha1::SupersetConfig { graceful_shutdown_timeout: Some(DEFAULT_NODE_GRACEFUL_SHUTDOWN_TIMEOUT), row_limit: None, webserver_timeout: None, - listener_class: Some("cluster-internal".to_owned()), } } } @@ -482,14 +516,32 @@ impl HasStatusCondition for v1alpha1::SupersetCluster { } impl v1alpha1::SupersetCluster { - /// The name of the group-listener provided for a specific role-group. - /// The UI will use this group listener so that only one load balancer - /// is needed (per role group). - pub fn group_listener_name(&self, rolegroup: &RoleGroupRef) -> String { - rolegroup.object_name() + /// The name of the group-listener provided for a specific role. + /// Nodes will use this group listener so that only one load balancer + /// is needed for that role. + pub fn group_listener_name(&self, role: &SupersetRole) -> Option { + match role { + SupersetRole::Node => Some(format!( + "{cluster_name}-{role}", + cluster_name = self.name_any() + )), + } + } + + pub fn generic_role_config(&self, role: &SupersetRole) -> Option { + self.get_role_config(role).map(|r| r.common.to_owned()) + } + + pub fn get_role_config(&self, role: &SupersetRole) -> Option<&SupersetRoleConfig> { + match role { + SupersetRole::Node => self.spec.nodes.as_ref().map(|c| &c.role_config), + } } - pub fn get_role(&self, role: &SupersetRole) -> Option<&Role> { + pub fn get_role( + &self, + role: &SupersetRole, + ) -> Option<&Role> { match role { SupersetRole::Node => self.spec.nodes.as_ref(), } @@ -507,12 +559,6 @@ impl v1alpha1::SupersetCluster { } } - pub fn role_config(&self, role: &SupersetRole) -> Option<&GenericRoleConfig> { - match role { - SupersetRole::Node => self.spec.nodes.as_ref().map(|n| &n.role_config), - } - } - pub fn get_opa_config(&self) -> Option<&v1alpha1::SupersetOpaRoleMappingConfig> { self.spec .cluster_config diff --git a/rust/operator-binary/src/superset_controller.rs b/rust/operator-binary/src/superset_controller.rs index c4265423..2b835f5f 100644 --- a/rust/operator-binary/src/superset_controller.rs +++ b/rust/operator-binary/src/superset_controller.rs @@ -48,7 +48,7 @@ use stackable_operator::{ core::{DeserializeGuard, error_boundary}, runtime::controller::Action, }, - kvp::{Label, Labels}, + kvp::{Label, Labels, ObjectLabels}, logging::controller::ReconcilerError, product_config_utils::{ CONFIG_OVERRIDE_FILE_FOOTER_KEY, CONFIG_OVERRIDE_FILE_HEADER_KEY, @@ -88,7 +88,7 @@ use crate::{ }, operations::{graceful_shutdown::add_graceful_shutdown_config, pdb::add_pdbs}, product_logging::{LOG_CONFIG_FILE, extend_config_map_with_log_config}, - util::build_recommended_labels, + util::{build_recommended_labels, rolegroup_metrics_service_name}, }; pub const SUPERSET_CONTROLLER_NAME: &str = "supersetcluster"; @@ -111,8 +111,8 @@ pub enum Error { #[snafu(display("object defines no node role"))] NoNodeRole, - #[snafu(display("failed to calculate global service name"))] - GlobalServiceNameNotFound, + #[snafu(display("object defines no node role-group"))] + NoNodeRoleGroup, #[snafu(display("invalid container name"))] InvalidContainerName { @@ -294,10 +294,9 @@ pub enum Error { source: ListenerOperatorVolumeSourceBuilderError, }, - #[snafu(display("failed to apply group listener for {rolegroup}"))] + #[snafu(display("failed to apply group listener"))] ApplyGroupListener { source: stackable_operator::cluster_resources::Error, - rolegroup: RoleGroupRef, }, } @@ -433,19 +432,6 @@ pub async fn reconcile_superset( &config, )?; - let rg_group_listener = build_group_listener( - superset, - &resolved_product_image, - &rolegroup, - config.listener_class, - )?; - cluster_resources - .add(client, rg_group_listener) - .await - .with_context(|_| ApplyGroupListenerSnafu { - rolegroup: rolegroup.clone(), - })?; - cluster_resources .add(client, rg_service) .await @@ -468,13 +454,34 @@ pub async fn reconcile_superset( ); } - let role_config = superset.role_config(&superset_role); + if let Some(listener_class) = &superset_role.listener_class_name(superset) { + if let Some(listener_group_name) = superset.group_listener_name(&superset_role) { + let group_listener = build_group_listener( + superset, + build_recommended_labels( + superset, + SUPERSET_CONTROLLER_NAME, + &resolved_product_image.product_version, + &superset_role.to_string(), + "none", + ), + listener_class.to_string(), + listener_group_name, + )?; + cluster_resources + .add(client, group_listener) + .await + .context(ApplyGroupListenerSnafu)?; + } + } + + let generic_role_config = superset.generic_role_config(&superset_role); if let Some(GenericRoleConfig { pod_disruption_budget: pdb, - }) = role_config + }) = generic_role_config { add_pdbs( - pdb, + &pdb, superset, &superset_role, client, @@ -619,7 +626,7 @@ fn build_node_rolegroup_service( ) -> Result { let metadata = ObjectMetaBuilder::new() .name_and_namespace(superset) - .name(format!("{name}-metrics", name = rolegroup.object_name())) + .name(rolegroup_metrics_service_name(&rolegroup.object_name())) .ownerreference_from_resource(superset, None, Some(true)) .context(ObjectMissingMetadataForOwnerRefSnafu)? .with_recommended_labels(build_recommended_labels( @@ -663,22 +670,16 @@ fn build_node_rolegroup_service( pub fn build_group_listener( superset: &v1alpha1::SupersetCluster, - resolved_product_image: &ResolvedProductImage, - rolegroup: &RoleGroupRef, + object_labels: ObjectLabels, listener_class: String, + listener_group_name: String, ) -> Result { let metadata = ObjectMetaBuilder::new() .name_and_namespace(superset) - .name(superset.group_listener_name(rolegroup)) + .name(listener_group_name) .ownerreference_from_resource(superset, None, Some(true)) .context(ObjectMissingMetadataForOwnerRefSnafu)? - .with_recommended_labels(build_recommended_labels( - superset, - SUPERSET_CONTROLLER_NAME, - &resolved_product_image.app_version_label, - &rolegroup.role, - &rolegroup.role_group, - )) + .with_recommended_labels(object_labels) .context(MetadataBuildSnafu)? .build(); @@ -723,7 +724,7 @@ fn build_server_rolegroup_statefulset( let role_group = role .role_groups .get(&rolegroup_ref.role_group) - .context(NoNodeRoleSnafu)?; + .context(NoNodeRoleGroupSnafu)?; let recommended_object_labels = build_recommended_labels( superset, @@ -871,13 +872,18 @@ fn build_server_rolegroup_statefulset( // listener endpoints will use persistent volumes // so that load balancers can hard-code the target addresses and // that it is possible to connect to a consistent address - let pvc = ListenerOperatorVolumeSourceBuilder::new( - &ListenerReference::ListenerName(superset.group_listener_name(rolegroup_ref)), - &unversioned_recommended_labels, - ) - .context(BuildListenerVolumeSnafu)? - .build_pvc(LISTENER_VOLUME_NAME.to_owned()) - .context(BuildListenerVolumeSnafu)?; + let pvcs = if let Some(group_listener_name) = superset.group_listener_name(superset_role) { + let pvc = ListenerOperatorVolumeSourceBuilder::new( + &ListenerReference::ListenerName(group_listener_name), + &unversioned_recommended_labels, + ) + .context(BuildListenerVolumeSnafu)? + .build_pvc(LISTENER_VOLUME_NAME.to_owned()) + .context(BuildListenerVolumeSnafu)?; + Some(vec![pvc]) + } else { + None + }; superset_cb .add_volume_mount(LISTENER_VOLUME_NAME, LISTENER_VOLUME_DIR) @@ -985,9 +991,9 @@ fn build_server_rolegroup_statefulset( ), ..LabelSelector::default() }, - service_name: Some(rolegroup_ref.object_name()), + service_name: Some(rolegroup_metrics_service_name(&rolegroup_ref.object_name())), template: pod_template, - volume_claim_templates: Some(vec![pvc]), + volume_claim_templates: pvcs, ..StatefulSetSpec::default() }), status: None, diff --git a/rust/operator-binary/src/util.rs b/rust/operator-binary/src/util.rs index 0ddf70e7..b199f21b 100644 --- a/rust/operator-binary/src/util.rs +++ b/rust/operator-binary/src/util.rs @@ -48,3 +48,7 @@ pub fn build_recommended_labels<'a, T>( role_group, } } + +pub fn rolegroup_metrics_service_name(role_group_ref_object_name: &str) -> String { + format!("{role_group_ref_object_name}-metrics") +} diff --git a/tests/templates/kuttl/druid-connection/20-install-superset.yaml.j2 b/tests/templates/kuttl/druid-connection/20-install-superset.yaml.j2 index 30255a0a..9d8b4c66 100644 --- a/tests/templates/kuttl/druid-connection/20-install-superset.yaml.j2 +++ b/tests/templates/kuttl/druid-connection/20-install-superset.yaml.j2 @@ -34,11 +34,12 @@ spec: pullPolicy: IfNotPresent clusterConfig: credentialsSecret: superset-credentials - listenerClass: external-unstable {% if lookup('env', 'VECTOR_AGGREGATOR') %} vectorAggregatorConfigMapName: vector-aggregator-discovery {% endif %} nodes: + roleConfig: + listenerClass: external-unstable config: logging: enableVectorAgent: {{ lookup('env', 'VECTOR_AGGREGATOR') | length > 0 }} diff --git a/tests/templates/kuttl/external-access/30-assert.yaml b/tests/templates/kuttl/external-access/30-assert.yaml index 7c33f457..ec9af79b 100644 --- a/tests/templates/kuttl/external-access/30-assert.yaml +++ b/tests/templates/kuttl/external-access/30-assert.yaml @@ -15,48 +15,25 @@ status: readyReplicas: 2 replicas: 2 --- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: superset-node-external-unstable -status: - readyReplicas: 1 - replicas: 1 ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: superset-node-cluster-internal -status: - readyReplicas: 1 - replicas: 1 ---- apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: superset-node status: - expectedPods: 4 - currentHealthy: 4 + expectedPods: 2 + currentHealthy: 2 disruptionsAllowed: 1 --- apiVersion: v1 kind: Service metadata: - name: superset-node-cluster-internal -spec: - type: ClusterIP # cluster-internal ---- -apiVersion: v1 -kind: Service -metadata: - name: superset-node-default + name: superset-node spec: - type: NodePort # external-stable + type: NodePort # external-unstable --- apiVersion: v1 kind: Service metadata: - name: superset-node-external-unstable + name: superset-node-default-metrics spec: - type: NodePort # external-unstable + type: ClusterIP diff --git a/tests/templates/kuttl/external-access/install-superset.yaml.j2 b/tests/templates/kuttl/external-access/install-superset.yaml.j2 index 439547f5..4bd53e65 100644 --- a/tests/templates/kuttl/external-access/install-superset.yaml.j2 +++ b/tests/templates/kuttl/external-access/install-superset.yaml.j2 @@ -29,16 +29,8 @@ spec: clusterConfig: credentialsSecret: superset-credentials nodes: - config: - listenerClass: test-external-stable-$NAMESPACE + roleConfig: + listenerClass: test-external-unstable-$NAMESPACE roleGroups: default: replicas: 2 - external-unstable: - replicas: 1 - config: - listenerClass: test-external-unstable-$NAMESPACE - cluster-internal: - replicas: 1 - config: - listenerClass: test-cluster-internal-$NAMESPACE diff --git a/tests/templates/kuttl/ldap/login.py b/tests/templates/kuttl/ldap/login.py index 1099c41e..e1b6470b 100644 --- a/tests/templates/kuttl/ldap/login.py +++ b/tests/templates/kuttl/ldap/login.py @@ -13,7 +13,7 @@ ) http_code = requests.post( - "http://superset-with-ldap-node-default:8088/api/v1/security/login", + "http://superset-with-ldap-node:8088/api/v1/security/login", json={ "username": "integrationtest", "password": "integrationtest", diff --git a/tests/templates/kuttl/oidc/60-login.yaml b/tests/templates/kuttl/oidc/60-login.yaml index e5ca3052..0e6aaac7 100644 --- a/tests/templates/kuttl/oidc/60-login.yaml +++ b/tests/templates/kuttl/oidc/60-login.yaml @@ -5,5 +5,5 @@ metadata: name: login commands: - script: > - envsubst '$NAMESPACE' < login.py | + envsubst '$NAMESPACE' < 60_login.py | kubectl exec -n $NAMESPACE -i python-0 -- tee /stackable/60_login.py > /dev/null diff --git a/tests/templates/kuttl/oidc/60_login.py b/tests/templates/kuttl/oidc/60_login.py index 9b7cef67..75fa3b2e 100644 --- a/tests/templates/kuttl/oidc/60_login.py +++ b/tests/templates/kuttl/oidc/60_login.py @@ -13,7 +13,7 @@ session = requests.Session() # Click on "Sign In with keycloak" in Superset -login_page = session.get("http://superset-external:8088/login/keycloak?next=") +login_page = session.get("http://superset-node:8088/login/keycloak?next=") assert login_page.ok, "Redirection from Superset to Keycloak failed" assert login_page.url.startswith( @@ -28,15 +28,15 @@ ) assert welcome_page.ok, "Login failed" -assert welcome_page.url == "http://superset-external:8088/superset/welcome/", ( +assert welcome_page.url == "http://superset-node:8088/superset/welcome/", ( "Redirection to the Superset welcome page expected" ) # Open the user information page in Superset -userinfo_page = session.get("http://superset-external:8088/users/userinfo/") +userinfo_page = session.get("http://superset-node:8088/users/userinfo/") assert userinfo_page.ok, "Retrieving user information failed" -assert userinfo_page.url == "http://superset-external:8088/superset/welcome/", ( +assert userinfo_page.url == "http://superset-node:8088/superset/welcome/", ( "Redirection to the Superset welcome page expected" ) diff --git a/tests/templates/kuttl/opa/50_get_user_roles.py b/tests/templates/kuttl/opa/50_get_user_roles.py index eabb0ab9..9744e223 100644 --- a/tests/templates/kuttl/opa/50_get_user_roles.py +++ b/tests/templates/kuttl/opa/50_get_user_roles.py @@ -111,10 +111,8 @@ def main(): global bearer_token global csrf_token - base_ui_url = f"http://superset-node-default.{namespace}.svc.cluster.local:8088" - base_api_url = ( - f"http://superset-node-default.{namespace}.svc.cluster.local:8088/api/v1" - ) + base_ui_url = f"http://superset-node.{namespace}.svc.cluster.local:8088" + base_api_url = f"http://superset-node.{namespace}.svc.cluster.local:8088/api/v1" bearer_token = get_bearer_token() csrf_token = get_csrf_token() diff --git a/tests/templates/kuttl/opa/51-install-test-container.yaml.j2 b/tests/templates/kuttl/opa/51-install-test-container.yaml.j2 index 41d52067..1aff92de 100644 --- a/tests/templates/kuttl/opa/51-install-test-container.yaml.j2 +++ b/tests/templates/kuttl/opa/51-install-test-container.yaml.j2 @@ -74,7 +74,7 @@ spec: - name: REQUESTS_CA_BUNDLE value: /stackable/tls/ca.crt - name: SUPERSET_BASE_URL - value: superset-external.$NAMESPACE.svc.cluster.local:8088 + value: superset-node.$NAMESPACE.svc.cluster.local:8088 volumes: - name: tls csi: diff --git a/tests/templates/kuttl/smoke/login.py b/tests/templates/kuttl/smoke/login.py index eca166b3..2fc51735 100644 --- a/tests/templates/kuttl/smoke/login.py +++ b/tests/templates/kuttl/smoke/login.py @@ -7,7 +7,7 @@ ) http_code = requests.post( - "http://superset-node-default:8088/api/v1/security/login", + "http://superset-node:8088/api/v1/security/login", json={ "password": "admin", "provider": "db", diff --git a/tests/templates/kuttl/smoke/metrics.py b/tests/templates/kuttl/smoke/metrics.py index 3f86b54c..2de16522 100644 --- a/tests/templates/kuttl/smoke/metrics.py +++ b/tests/templates/kuttl/smoke/metrics.py @@ -2,7 +2,7 @@ import time # Create and increase the superset_welcome counter -web_ui_response = requests.get("http://superset-node-default:8088/") +web_ui_response = requests.get("http://superset-node:8088/") assert web_ui_response.status_code == 200, "Web UI could not be reached successfully." # Wait for the counter to be consumed by the statsd-exporter