Skip to content

Commit f01244a

Browse files
committed
add "smoke-kraft" test
1 parent 793c3cb commit f01244a

30 files changed

Lines changed: 956 additions & 1 deletion
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
apiVersion: v1
3+
kind: LimitRange
4+
metadata:
5+
name: limit-request-ratio
6+
spec:
7+
limits:
8+
- type: "Container"
9+
maxLimitRequestRatio:
10+
cpu: 5
11+
memory: 1
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{% if test_scenario['values']['openshift'] == 'true' %}
2+
# see https://github.com/stackabletech/issues/issues/566
3+
---
4+
apiVersion: kuttl.dev/v1beta1
5+
kind: TestStep
6+
commands:
7+
- script: kubectl patch namespace $NAMESPACE -p '{"metadata":{"labels":{"pod-security.kubernetes.io/enforce":"privileged"}}}'
8+
timeout: 120
9+
{% endif %}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
kind: Role
3+
apiVersion: rbac.authorization.k8s.io/v1
4+
metadata:
5+
name: test-role
6+
rules:
7+
{% if test_scenario['values']['openshift'] == "true" %}
8+
- apiGroups: ["security.openshift.io"]
9+
resources: ["securitycontextconstraints"]
10+
resourceNames: ["privileged"]
11+
verbs: ["use"]
12+
{% endif %}
13+
---
14+
apiVersion: v1
15+
kind: ServiceAccount
16+
metadata:
17+
name: test-sa
18+
---
19+
kind: RoleBinding
20+
apiVersion: rbac.authorization.k8s.io/v1
21+
metadata:
22+
name: test-rb
23+
subjects:
24+
- kind: ServiceAccount
25+
name: test-sa
26+
roleRef:
27+
kind: Role
28+
name: test-role
29+
apiGroup: rbac.authorization.k8s.io
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
apiVersion: kuttl.dev/v1beta1
3+
kind: TestAssert
4+
---
5+
apiVersion: v1
6+
kind: ConfigMap
7+
metadata:
8+
name: vector-aggregator-discovery
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
apiVersion: kuttl.dev/v1beta1
3+
kind: TestStep
4+
commands:
5+
- script: >-
6+
helm install kafka-vector-aggregator vector
7+
--namespace $NAMESPACE
8+
--version 0.43.0
9+
--repo https://helm.vector.dev
10+
--values kafka-vector-aggregator-values.yaml
11+
---
12+
apiVersion: v1
13+
kind: ConfigMap
14+
metadata:
15+
name: vector-aggregator-discovery
16+
data:
17+
ADDRESS: kafka-vector-aggregator:6123
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
apiVersion: kuttl.dev/v1beta1
3+
kind: TestStep
4+
commands:
5+
- script: >
6+
kubectl create configmap prepared-logs
7+
{% if test_scenario['values']['kafka-kraft'].startswith('3.') %}
8+
--from-file=prepared-logs.log4j.xml
9+
{% else %}
10+
--from-file=prepared-logs.log4j2.xml
11+
{% endif %}
12+
--namespace=$NAMESPACE
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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: 1
12+
replicas: 1
13+
---
14+
apiVersion: apps/v1
15+
kind: StatefulSet
16+
metadata:
17+
name: test-kafka-broker-automatic-log-config
18+
status:
19+
readyReplicas: 1
20+
replicas: 1
21+
---
22+
apiVersion: apps/v1
23+
kind: StatefulSet
24+
metadata:
25+
name: test-kafka-broker-custom-log-config
26+
status:
27+
readyReplicas: 1
28+
replicas: 1
29+
---
30+
apiVersion: apps/v1
31+
kind: StatefulSet
32+
metadata:
33+
name: test-kafka-controller-automatic-log-config
34+
status:
35+
readyReplicas: 1
36+
replicas: 1
37+
---
38+
apiVersion: apps/v1
39+
kind: StatefulSet
40+
metadata:
41+
name: test-kafka-controller-custom-log-config
42+
status:
43+
readyReplicas: 1
44+
replicas: 1
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
---
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: kafka-log-config
6+
data:
7+
{% if test_scenario['values']['kafka-kraft'].startswith('3.') %}
8+
log4j.properties: |
9+
log4j.rootLogger=INFO, CONSOLE, FILE
10+
11+
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
12+
log4j.appender.CONSOLE.Threshold=INFO
13+
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
14+
log4j.appender.CONSOLE.layout.ConversionPattern=[%d] %p %m (%c)%n
15+
16+
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
17+
log4j.appender.FILE.Threshold=INFO
18+
log4j.appender.FILE.File=/stackable/log/kafka/kafka.log4j.xml
19+
log4j.appender.FILE.MaxFileSize=5MB
20+
log4j.appender.FILE.MaxBackupIndex=1
21+
log4j.appender.FILE.layout=org.apache.log4j.xml.XMLLayout
22+
{% else %}
23+
log4j2.properties: |-
24+
appenders = FILE
25+
26+
appender.FILE.type = File
27+
appender.FILE.name = FILE
28+
appender.FILE.fileName = /stackable/log/kafka/kafka.log4j2.xml
29+
appender.FILE.layout.type = XMLLayout
30+
31+
rootLogger.level=INFO
32+
rootLogger.appenderRefs = FILE
33+
rootLogger.appenderRef.FILE.ref = FILE
34+
{% endif %}
35+
---
36+
apiVersion: authentication.stackable.tech/v1alpha1
37+
kind: AuthenticationClass
38+
metadata:
39+
name: test-kafka-client-auth-tls
40+
spec:
41+
provider:
42+
tls:
43+
clientCertSecretClass: test-kafka-client-auth-tls
44+
---
45+
apiVersion: secrets.stackable.tech/v1alpha1
46+
kind: SecretClass
47+
metadata:
48+
name: test-kafka-client-auth-tls
49+
spec:
50+
backend:
51+
autoTls:
52+
ca:
53+
secret:
54+
name: secret-provisioner-tls-kafka-client-auth-ca
55+
namespace: default
56+
autoGenerate: true
57+
---
58+
apiVersion: kafka.stackable.tech/v1alpha1
59+
kind: KafkaCluster
60+
metadata:
61+
name: test-kafka
62+
spec:
63+
image:
64+
{% if test_scenario['values']['kafka-kraft'].find(",") > 0 %}
65+
custom: "{{ test_scenario['values']['kafka-kraft'].split(',')[1] }}"
66+
productVersion: "{{ test_scenario['values']['kafka-kraft'].split(',')[0] }}"
67+
{% else %}
68+
productVersion: "{{ test_scenario['values']['kafka-kraft'] }}"
69+
{% endif %}
70+
pullPolicy: IfNotPresent
71+
clusterConfig:
72+
authentication:
73+
- authenticationClass: test-kafka-client-auth-tls
74+
tls:
75+
serverSecretClass: tls
76+
vectorAggregatorConfigMapName: vector-aggregator-discovery
77+
controllers:
78+
envOverrides:
79+
COMMON_VAR: role-value # overridden by role group below
80+
ROLE_VAR: role-value # only defined here at role level
81+
config:
82+
logging:
83+
enableVectorAgent: true
84+
requestedSecretLifetime: 7d
85+
roleGroups:
86+
automatic-log-config:
87+
replicas: 1
88+
config:
89+
logging:
90+
enableVectorAgent: true
91+
containers:
92+
kafka:
93+
console:
94+
level: INFO
95+
file:
96+
level: INFO
97+
loggers:
98+
ROOT:
99+
level: INFO
100+
vector:
101+
console:
102+
level: INFO
103+
file:
104+
level: INFO
105+
loggers:
106+
ROOT:
107+
level: INFO
108+
podOverrides:
109+
spec:
110+
containers:
111+
- name: vector
112+
volumeMounts:
113+
- name: prepared-logs
114+
mountPath: /stackable/log/prepared-logs
115+
volumes:
116+
- name: prepared-logs
117+
configMap:
118+
name: prepared-logs
119+
custom-log-config:
120+
replicas: 1
121+
config:
122+
logging:
123+
enableVectorAgent: true
124+
containers:
125+
kafka:
126+
custom:
127+
configMap: kafka-log-config
128+
brokers:
129+
configOverrides:
130+
broker.properties:
131+
compression.type: uncompressed # overridden by role group below
132+
controller.quorum.election.backoff.max.ms: "2000"
133+
envOverrides:
134+
COMMON_VAR: role-value # overridden by role group below
135+
ROLE_VAR: role-value # only defined here at role level
136+
config:
137+
logging:
138+
enableVectorAgent: true
139+
requestedSecretLifetime: 7d
140+
roleGroups:
141+
default:
142+
replicas: 1
143+
envOverrides:
144+
COMMON_VAR: group-value # overrides role value
145+
GROUP_VAR: group-value # only defined here at group level
146+
configOverrides:
147+
broker.properties:
148+
compression.type: snappy
149+
controller.quorum.fetch.timeout.ms: "3000"
150+
podOverrides:
151+
spec:
152+
containers:
153+
- name: kafka
154+
resources:
155+
requests:
156+
cpu: 300m
157+
limits:
158+
cpu: 1100m
159+
automatic-log-config:
160+
replicas: 1
161+
config:
162+
logging:
163+
enableVectorAgent: true
164+
containers:
165+
kafka:
166+
console:
167+
level: INFO
168+
file:
169+
level: INFO
170+
loggers:
171+
ROOT:
172+
level: INFO
173+
vector:
174+
console:
175+
level: INFO
176+
file:
177+
level: INFO
178+
loggers:
179+
ROOT:
180+
level: INFO
181+
podOverrides:
182+
spec:
183+
containers:
184+
- name: vector
185+
volumeMounts:
186+
- name: prepared-logs
187+
mountPath: /stackable/log/prepared-logs
188+
volumes:
189+
- name: prepared-logs
190+
configMap:
191+
name: prepared-logs
192+
custom-log-config:
193+
replicas: 1
194+
config:
195+
logging:
196+
enableVectorAgent: true
197+
containers:
198+
kafka:
199+
custom:
200+
configMap: kafka-log-config
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
apiVersion: kuttl.dev/v1beta1
3+
kind: TestAssert
4+
timeout: 600
5+
commands:
6+
#
7+
# Test envOverrides
8+
#
9+
- script: |
10+
kubectl -n $NAMESPACE get sts test-kafka-broker-default -o yaml | yq -e '.spec.template.spec.containers[] | select (.name == "kafka") | .env[] | select (.name == "COMMON_VAR" and .value == "group-value")'
11+
kubectl -n $NAMESPACE get sts test-kafka-broker-default -o yaml | yq -e '.spec.template.spec.containers[] | select (.name == "kafka") | .env[] | select (.name == "GROUP_VAR" and .value == "group-value")'
12+
kubectl -n $NAMESPACE get sts test-kafka-broker-default -o yaml | yq -e '.spec.template.spec.containers[] | select (.name == "kafka") | .env[] | select (.name == "ROLE_VAR" and .value == "role-value")'
13+
#
14+
# Test configOverrides
15+
#
16+
- script: |
17+
kubectl -n $NAMESPACE get cm test-kafka-broker-default -o yaml | yq -e '.data."broker.properties"' | grep "compression.type=snappy"
18+
kubectl -n $NAMESPACE get cm test-kafka-broker-default -o yaml | yq -e '.data."broker.properties"' | grep "controller.quorum.election.backoff.max.ms=2000"
19+
kubectl -n $NAMESPACE get cm test-kafka-broker-default -o yaml | yq -e '.data."broker.properties"' | grep "controller.quorum.fetch.timeout.ms=3000"
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
# This test checks if the containerdebug-state.json file is present and valid
3+
apiVersion: kuttl.dev/v1beta1
4+
kind: TestAssert
5+
timeout: 600
6+
commands:
7+
- script: kubectl exec -n $NAMESPACE --container kafka test-kafka-broker-default-0 -- cat /stackable/log/containerdebug-state.json | jq --exit-status '"valid JSON"'

0 commit comments

Comments
 (0)