Skip to content

Commit d38d6ba

Browse files
committed
started kerberos tests
1 parent b660793 commit d38d6ba

9 files changed

Lines changed: 56 additions & 32 deletions

File tree

rust/operator-binary/src/config/node_id_hasher.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
1-
pub fn node_id_hash32_offset(rolegroup: &str) -> u32 {
2-
let hash = fnv_hash32(rolegroup);
1+
use stackable_operator::role_utils::RoleGroupRef;
2+
3+
use crate::crd::v1alpha1::KafkaCluster;
4+
5+
pub fn node_id_hash32_offset(rolegroup_ref: &RoleGroupRef<KafkaCluster>) -> u32 {
6+
let hash = fnv_hash32(&format!(
7+
"{role}-{rolegroup}",
8+
role = rolegroup_ref.role,
9+
rolegroup = rolegroup_ref.role_group
10+
));
311
let range = hash & 0x0000FFFF;
4-
let offset = range * 0x0000FFFF;
12+
// unsigned in kafka
13+
let offset = range * 0x00007FFF;
514
offset
615
}
716

rust/operator-binary/src/crd/mod.rs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -258,12 +258,12 @@ impl v1alpha1::KafkaCluster {
258258
role_group_service_name: rolegroup_ref.object_name(),
259259
replica: i,
260260
cluster_domain: cluster_info.cluster_domain.clone(),
261-
node_id: node_id_hash32_offset(rolegroup_name) + u32::from(i),
261+
// TODO: check for hash collisions?
262+
node_id: node_id_hash32_offset(&rolegroup_ref) + u32::from(i),
262263
})
263264
})
264265
.collect(),
265266

266-
// TODO: this does not work for multiple rolegroups (the index / replica)
267267
KafkaRole::Controller => self
268268
.controller_role()
269269
.iter()
@@ -279,7 +279,8 @@ impl v1alpha1::KafkaCluster {
279279
role_group_service_name: rolegroup_ref.object_name(),
280280
replica: i,
281281
cluster_domain: cluster_info.cluster_domain.clone(),
282-
node_id: node_id_hash32_offset(rolegroup_name) + u32::from(i),
282+
// TODO: check for hash collisions?
283+
node_id: node_id_hash32_offset(&rolegroup_ref) + u32::from(i),
283284
})
284285
})
285286
.collect(),
@@ -312,17 +313,6 @@ impl KafkaPodDescriptor {
312313
)
313314
}
314315

315-
/// Return the fully qualified domain name for "replica"
316-
/// Format: <service>-<replica>.<service>.<namespace>.svc.<cluster-domain>
317-
pub fn fqdn_for_replica(&self, replica: u16) -> String {
318-
format!(
319-
"{service_name}-{replica}.{service_name}.{namespace}.svc.{cluster_domain}",
320-
service_name = self.role_group_service_name,
321-
namespace = self.namespace,
322-
cluster_domain = self.cluster_domain
323-
)
324-
}
325-
326316
pub fn pod_name(&self) -> String {
327317
format!("{}-{}", self.role_group_service_name, self.replica)
328318
}

rust/operator-binary/src/resource/statefulset.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ pub fn build_broker_rolegroup_statefulset(
333333
)
334334
.add_env_var(
335335
KAFKA_NODE_ID_OFFSET,
336-
node_id_hash32_offset(&rolegroup_ref.role_group).to_string(),
336+
node_id_hash32_offset(&rolegroup_ref).to_string(),
337337
)
338338
.add_env_vars(env)
339339
.add_container_ports(container_ports(kafka_security))
@@ -675,7 +675,7 @@ pub fn build_controller_rolegroup_statefulset(
675675
)
676676
.add_env_var(
677677
KAFKA_NODE_ID_OFFSET,
678-
node_id_hash32_offset(&rolegroup_ref.role_group).to_string(),
678+
node_id_hash32_offset(&rolegroup_ref).to_string(),
679679
)
680680
.add_env_vars(env)
681681
.add_container_ports(container_ports(kafka_security))

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{% if test_scenario['values']['use-kraft-controller'] == 'false' %}
12
---
23
apiVersion: kuttl.dev/v1beta1
34
kind: TestAssert
@@ -10,3 +11,4 @@ metadata:
1011
status:
1112
readyReplicas: 1
1213
replicas: 1
14+
{% endif %}

tests/templates/kuttl/kerberos/10-install-zk.yaml.j2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{% if test_scenario['values']['use-kraft-controller'] == 'false' %}
12
---
23
apiVersion: zookeeper.stackable.tech/v1alpha1
34
kind: ZookeeperCluster
@@ -18,3 +19,4 @@ spec:
1819
roleGroups:
1920
default:
2021
replicas: 1
22+
{% endif %}

tests/templates/kuttl/kerberos/20-assert.yaml

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
apiVersion: kuttl.dev/v1beta1
3+
kind: TestAssert
4+
timeout: 600
5+
---
6+
apiVersion: apps/v1
7+
kind: StatefulSet
8+
metadata:
9+
name: test-kafka-broker-default
10+
status:
11+
readyReplicas: 3
12+
replicas: 3
13+
{% if test_scenario['values']['use-kraft-controller'] == 'true' %}
14+
---
15+
apiVersion: apps/v1
16+
kind: StatefulSet
17+
metadata:
18+
name: test-kafka-controller-default
19+
status:
20+
readyReplicas: 3
21+
replicas: 3
22+
{% endif %}

tests/templates/kuttl/kerberos/20-install-kafka.yaml.j2

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,24 @@ commands:
3636
{% endif %}
3737
pullPolicy: IfNotPresent
3838
clusterConfig:
39-
zookeeperConfigMapName: test-kafka-znode
4039
authentication:
4140
- authenticationClass: kerberos-auth-$NAMESPACE
4241
tls:
4342
# Kerberos requires the use of server and internal TLS!
4443
serverSecretClass: tls
4544
{% if lookup('env', 'VECTOR_AGGREGATOR') %}
4645
vectorAggregatorConfigMapName: vector-aggregator-discovery
46+
{% endif %}
47+
{% if test_scenario['values']['use-kraft-controller'] == 'false' %}
48+
zookeeperConfigMapName: test-kafka-znode
49+
{% else %}
50+
controllers:
51+
config:
52+
logging:
53+
enableVectorAgent: {{ lookup('env', 'VECTOR_AGGREGATOR') | length > 0 }}
54+
roleGroups:
55+
default:
56+
replicas: 3
4757
{% endif %}
4858
brokers:
4959
config:

tests/test-definition.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ tests:
120120
- openshift
121121
- broker-listener-class
122122
- bootstrap-listener-class
123+
- use-kraft-controller
123124

124125
suites:
125126
- name: nightly

0 commit comments

Comments
 (0)