Skip to content

Commit a835975

Browse files
committed
feat: add cluster snapshot tests
1 parent a1585ac commit a835975

2 files changed

Lines changed: 513 additions & 0 deletions

File tree

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
---
2+
# Snapshot of every NifiCluster-owned resource. Mirrors the trino
3+
# smoke/13-assert.yaml pattern: kuttl only checks fields explicitly listed
4+
# here, so unspecified fields (UIDs, image digests, listener-UID selectors,
5+
# transient status) are ignored. Any change to operator-controlled fields
6+
# (labels, ownerRefs, container shape, service ports, listener class, etc.)
7+
# fails this step.
8+
#
9+
# Replicas are asserted at 2 because this step runs before the scale-up in
10+
# 40-scale-up-nifi.yaml.j2.
11+
apiVersion: kuttl.dev/v1beta1
12+
kind: TestAssert
13+
timeout: 60
14+
---
15+
apiVersion: apps/v1
16+
kind: StatefulSet
17+
metadata:
18+
name: nifi-node-default
19+
labels:
20+
app.kubernetes.io/component: node
21+
app.kubernetes.io/instance: nifi
22+
app.kubernetes.io/managed-by: nifi.stackable.tech_nificluster
23+
app.kubernetes.io/name: nifi
24+
app.kubernetes.io/role-group: default
25+
restarter.stackable.tech/enabled: "true"
26+
stackable.tech/vendor: Stackable
27+
ownerReferences:
28+
- apiVersion: nifi.stackable.tech/v1alpha1
29+
controller: true
30+
kind: NifiCluster
31+
name: nifi
32+
spec:
33+
podManagementPolicy: Parallel
34+
replicas: 2
35+
selector:
36+
matchLabels:
37+
app.kubernetes.io/component: node
38+
app.kubernetes.io/instance: nifi
39+
app.kubernetes.io/name: nifi
40+
app.kubernetes.io/role-group: default
41+
serviceName: nifi-node-default-headless
42+
template:
43+
metadata:
44+
labels:
45+
app.kubernetes.io/component: node
46+
app.kubernetes.io/instance: nifi
47+
app.kubernetes.io/managed-by: nifi.stackable.tech_nificluster
48+
app.kubernetes.io/name: nifi
49+
app.kubernetes.io/role-group: default
50+
stackable.tech/vendor: Stackable
51+
spec:
52+
serviceAccount: nifi-serviceaccount
53+
serviceAccountName: nifi-serviceaccount
54+
terminationGracePeriodSeconds: 300
55+
status:
56+
readyReplicas: 2
57+
replicas: 2
58+
---
59+
apiVersion: v1
60+
kind: ConfigMap
61+
metadata:
62+
name: nifi-node-default
63+
labels:
64+
app.kubernetes.io/component: node
65+
app.kubernetes.io/instance: nifi
66+
app.kubernetes.io/managed-by: nifi.stackable.tech_nificluster
67+
app.kubernetes.io/name: nifi
68+
app.kubernetes.io/role-group: default
69+
stackable.tech/vendor: Stackable
70+
ownerReferences:
71+
- apiVersion: nifi.stackable.tech/v1alpha1
72+
controller: true
73+
kind: NifiCluster
74+
name: nifi
75+
---
76+
apiVersion: v1
77+
kind: Service
78+
metadata:
79+
name: nifi-node-default-headless
80+
labels:
81+
app.kubernetes.io/component: node
82+
app.kubernetes.io/instance: nifi
83+
app.kubernetes.io/managed-by: nifi.stackable.tech_nificluster
84+
app.kubernetes.io/name: nifi
85+
app.kubernetes.io/role-group: default
86+
stackable.tech/vendor: Stackable
87+
ownerReferences:
88+
- apiVersion: nifi.stackable.tech/v1alpha1
89+
controller: true
90+
kind: NifiCluster
91+
name: nifi
92+
spec:
93+
clusterIP: None
94+
ports:
95+
- name: https
96+
port: 8443
97+
protocol: TCP
98+
targetPort: 8443
99+
publishNotReadyAddresses: true
100+
selector:
101+
app.kubernetes.io/component: node
102+
app.kubernetes.io/instance: nifi
103+
app.kubernetes.io/name: nifi
104+
app.kubernetes.io/role-group: default
105+
type: ClusterIP
106+
---
107+
apiVersion: v1
108+
kind: Service
109+
metadata:
110+
name: nifi-node-default-metrics
111+
annotations:
112+
prometheus.io/path: /nifi-api/flow/metrics/prometheus
113+
prometheus.io/port: "8443"
114+
prometheus.io/scheme: https
115+
prometheus.io/scrape: "true"
116+
labels:
117+
app.kubernetes.io/component: node
118+
app.kubernetes.io/instance: nifi
119+
app.kubernetes.io/managed-by: nifi.stackable.tech_nificluster
120+
app.kubernetes.io/name: nifi
121+
app.kubernetes.io/role-group: default
122+
prometheus.io/scrape: "true"
123+
stackable.tech/vendor: Stackable
124+
ownerReferences:
125+
- apiVersion: nifi.stackable.tech/v1alpha1
126+
controller: true
127+
kind: NifiCluster
128+
name: nifi
129+
spec:
130+
clusterIP: None
131+
ports:
132+
- name: https
133+
port: 8443
134+
protocol: TCP
135+
targetPort: 8443
136+
publishNotReadyAddresses: true
137+
selector:
138+
app.kubernetes.io/component: node
139+
app.kubernetes.io/instance: nifi
140+
app.kubernetes.io/name: nifi
141+
app.kubernetes.io/role-group: default
142+
type: ClusterIP
143+
---
144+
# Service is owned by the Listener (which is in turn owned by NifiCluster).
145+
# Service type depends on the listener class.
146+
apiVersion: v1
147+
kind: Service
148+
metadata:
149+
name: nifi-node
150+
labels:
151+
app.kubernetes.io/component: node
152+
app.kubernetes.io/instance: nifi-node
153+
app.kubernetes.io/managed-by: listeners.stackable.tech_listener
154+
app.kubernetes.io/name: listener
155+
app.kubernetes.io/role-group: none
156+
stackable.tech/vendor: Stackable
157+
ownerReferences:
158+
- apiVersion: listeners.stackable.tech/v1alpha1
159+
controller: true
160+
kind: Listener
161+
name: nifi-node
162+
spec:
163+
ports:
164+
- name: https
165+
port: 8443
166+
protocol: TCP
167+
targetPort: 8443
168+
{% if test_scenario['values']['listener-class'] == 'external-unstable' %}
169+
type: NodePort
170+
{% else %}
171+
type: ClusterIP
172+
{% endif %}
173+
---
174+
apiVersion: v1
175+
kind: ServiceAccount
176+
metadata:
177+
name: nifi-serviceaccount
178+
labels:
179+
app.kubernetes.io/instance: nifi
180+
app.kubernetes.io/managed-by: nifi.stackable.tech_nificluster
181+
app.kubernetes.io/name: nifi
182+
ownerReferences:
183+
- apiVersion: nifi.stackable.tech/v1alpha1
184+
controller: true
185+
kind: NifiCluster
186+
name: nifi
187+
---
188+
apiVersion: rbac.authorization.k8s.io/v1
189+
kind: RoleBinding
190+
metadata:
191+
name: nifi-rolebinding
192+
labels:
193+
app.kubernetes.io/instance: nifi
194+
app.kubernetes.io/managed-by: nifi.stackable.tech_nificluster
195+
app.kubernetes.io/name: nifi
196+
ownerReferences:
197+
- apiVersion: nifi.stackable.tech/v1alpha1
198+
controller: true
199+
kind: NifiCluster
200+
name: nifi
201+
roleRef:
202+
apiGroup: rbac.authorization.k8s.io
203+
kind: ClusterRole
204+
name: nifi-clusterrole
205+
subjects:
206+
- kind: ServiceAccount
207+
name: nifi-serviceaccount
208+
---
209+
apiVersion: policy/v1
210+
kind: PodDisruptionBudget
211+
metadata:
212+
name: nifi-node
213+
labels:
214+
app.kubernetes.io/component: node
215+
app.kubernetes.io/instance: nifi
216+
app.kubernetes.io/managed-by: nifi.stackable.tech_nificluster
217+
app.kubernetes.io/name: nifi
218+
ownerReferences:
219+
- apiVersion: nifi.stackable.tech/v1alpha1
220+
controller: true
221+
kind: NifiCluster
222+
name: nifi
223+
spec:
224+
maxUnavailable: 1
225+
selector:
226+
matchLabels:
227+
app.kubernetes.io/component: node
228+
app.kubernetes.io/instance: nifi
229+
app.kubernetes.io/name: nifi
230+
status:
231+
currentHealthy: 2
232+
disruptionsAllowed: 1
233+
expectedPods: 2
234+
---
235+
apiVersion: listeners.stackable.tech/v1alpha1
236+
kind: Listener
237+
metadata:
238+
name: nifi-node
239+
labels:
240+
app.kubernetes.io/component: node
241+
app.kubernetes.io/instance: nifi
242+
app.kubernetes.io/managed-by: nifi.stackable.tech_nificluster
243+
app.kubernetes.io/name: nifi
244+
app.kubernetes.io/role-group: none
245+
stackable.tech/vendor: Stackable
246+
ownerReferences:
247+
- apiVersion: nifi.stackable.tech/v1alpha1
248+
controller: true
249+
kind: NifiCluster
250+
name: nifi
251+
spec:
252+
className: {{ test_scenario['values']['listener-class'] }}
253+
ports:
254+
- name: https
255+
port: 8443
256+
protocol: TCP

0 commit comments

Comments
 (0)