Skip to content

Commit fe7b2fe

Browse files
tests: test/deployer golden files are more end-to-end (kgateway-dev#13037)
Signed-off-by: David L. Chandler <[email protected]>
1 parent f9a4891 commit fe7b2fe

17 files changed

+1270
-1279
lines changed

test/deployer/deployer_helm.go

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,13 @@ func (dt DeployerTester) RunHelmChartTest(
126126
ctx := t.Context()
127127
fakeClient.RunAndWait(ctx.Done())
128128

129-
vals, err := gwParams.GetValues(ctx, gtw)
130-
assert.NoError(t, err, "error getting values for GwParams")
129+
// Get objects (what actually gets deployed), which in the future is likely
130+
// to differ from helm's rendered output
131+
deployObjs, err := deployer.GetObjsToDeploy(ctx, gtw)
132+
assert.NoError(t, err, "error getting objects to deploy")
131133

132-
got, err := deployer.RenderManifest(gtw.Namespace, gtw.Name, vals)
133-
assert.NoError(t, err, "error rendering helm manifest")
134+
got, err := objectsToYAML(deployObjs)
135+
assert.NoError(t, err, "error converting objects to YAML")
134136

135137
if envutils.IsEnvTruthy("REFRESH_GOLDEN") {
136138
t.Log("REFRESH_GOLDEN is set, writing output file", outputFile)
@@ -252,3 +254,19 @@ func validateYAML(t *testing.T, filename string, data []byte) {
252254
}
253255
}
254256
}
257+
258+
// objectsToYAML converts a slice of client.Object to YAML bytes, separated by "---"
259+
func objectsToYAML(objs []client.Object) ([]byte, error) {
260+
var result []byte
261+
for i, obj := range objs {
262+
objYAML, err := yaml.Marshal(obj)
263+
if err != nil {
264+
return nil, err
265+
}
266+
if i > 0 {
267+
result = append(result, []byte("---\n")...)
268+
}
269+
result = append(result, objYAML...)
270+
}
271+
return result, nil
272+
}
Lines changed: 104 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
1-
---
2-
# Source: agentgateway/templates/serviceaccount.yaml
31
apiVersion: v1
2+
automountServiceAccountToken: false
43
kind: ServiceAccount
54
metadata:
6-
name: gw
7-
annotations:
8-
{}
95
labels:
106
app.kubernetes.io/instance: gw
117
app.kubernetes.io/managed-by: kgateway
@@ -14,15 +10,14 @@ metadata:
1410
gateway.networking.k8s.io/gateway-class-name: a-lot-like-agentgateway-but-not-named-agentgateway
1511
gateway.networking.k8s.io/gateway-name: gw
1612
kgateway: kube-gateway
17-
automountServiceAccountToken: false
13+
name: gw
1814
---
19-
# Source: agentgateway/templates/configmap.yaml
2015
apiVersion: v1
16+
data:
17+
config.yaml: |
18+
config: {}
2119
kind: ConfigMap
2220
metadata:
23-
name: gw
24-
annotations:
25-
{}
2621
labels:
2722
app.kubernetes.io/instance: gw
2823
app.kubernetes.io/managed-by: kgateway
@@ -31,17 +26,11 @@ metadata:
3126
gateway.networking.k8s.io/gateway-class-name: a-lot-like-agentgateway-but-not-named-agentgateway
3227
gateway.networking.k8s.io/gateway-name: gw
3328
kgateway: kube-gateway
34-
data:
35-
config.yaml: |
36-
config: {}
29+
name: gw
3730
---
38-
# Source: agentgateway/templates/service.yaml
3931
apiVersion: v1
4032
kind: Service
4133
metadata:
42-
name: gw
43-
annotations:
44-
{}
4534
labels:
4635
app.kubernetes.io/instance: gw
4736
app.kubernetes.io/managed-by: kgateway
@@ -50,23 +39,24 @@ metadata:
5039
gateway.networking.k8s.io/gateway-class-name: a-lot-like-agentgateway-but-not-named-agentgateway
5140
gateway.networking.k8s.io/gateway-name: gw
5241
kgateway: kube-gateway
42+
name: gw
5343
spec:
54-
type: LoadBalancer
5544
ports:
56-
- name: listener-8080
57-
protocol: TCP
58-
targetPort: 8080
59-
port: 8080
45+
- name: listener-8080
46+
port: 8080
47+
protocol: TCP
48+
targetPort: 8080
6049
selector:
61-
app.kubernetes.io/name: gw
6250
app.kubernetes.io/instance: gw
51+
app.kubernetes.io/name: gw
6352
gateway.networking.k8s.io/gateway-name: gw
53+
type: LoadBalancer
54+
status:
55+
loadBalancer: {}
6456
---
65-
# Source: agentgateway/templates/deployment.yaml
6657
apiVersion: apps/v1
6758
kind: Deployment
6859
metadata:
69-
name: gw
7060
labels:
7161
app.kubernetes.io/instance: gw
7262
app.kubernetes.io/managed-by: kgateway
@@ -75,12 +65,14 @@ metadata:
7565
gateway.networking.k8s.io/gateway-class-name: a-lot-like-agentgateway-but-not-named-agentgateway
7666
gateway.networking.k8s.io/gateway-name: gw
7767
kgateway: kube-gateway
68+
name: gw
7869
spec:
7970
selector:
8071
matchLabels:
81-
app.kubernetes.io/name: gw
8272
app.kubernetes.io/instance: gw
73+
app.kubernetes.io/name: gw
8374
gateway.networking.k8s.io/gateway-name: gw
75+
strategy: {}
8476
template:
8577
metadata:
8678
annotations:
@@ -93,93 +85,94 @@ spec:
9385
gateway.networking.k8s.io/gateway-class-name: a-lot-like-agentgateway-but-not-named-agentgateway
9486
gateway.networking.k8s.io/gateway-name: gw
9587
spec:
96-
serviceAccountName: gw
88+
containers:
89+
- args:
90+
- -f
91+
- /config/config.yaml
92+
env:
93+
- name: TERMINATION_GRACE_PERIOD_SECONDS
94+
value: "60"
95+
- name: CONNECTION_MIN_TERMINATION_DEADLINE
96+
value: 10s
97+
- name: NODE_NAME
98+
valueFrom:
99+
fieldRef:
100+
fieldPath: metadata.name
101+
- name: POD_NAMESPACE
102+
valueFrom:
103+
fieldRef:
104+
fieldPath: metadata.namespace
105+
- name: POD_NAME
106+
valueFrom:
107+
fieldRef:
108+
fieldPath: metadata.name
109+
- name: GW_NAME
110+
value: gw
111+
- name: RUST_BACKTRACE
112+
value: "1"
113+
- name: RUST_LOG
114+
value: info
115+
- name: XDS_ADDRESS
116+
value: http://xds.cluster.local:9978
117+
- name: NAMESPACE
118+
valueFrom:
119+
fieldRef:
120+
fieldPath: metadata.namespace
121+
- name: GATEWAY
122+
value: gw
123+
image: ghcr.io/agentgateway/agentgateway:0.11.0-alpha.f45f1a94cdfa53d96e14301d59ac62200214cb9c
124+
name: agent-gateway
125+
ports:
126+
- containerPort: 15020
127+
name: metrics
128+
protocol: TCP
129+
readinessProbe:
130+
httpGet:
131+
path: /healthz/ready
132+
port: 15021
133+
periodSeconds: 10
134+
resources: {}
135+
securityContext:
136+
allowPrivilegeEscalation: false
137+
capabilities:
138+
drop:
139+
- ALL
140+
readOnlyRootFilesystem: true
141+
runAsNonRoot: true
142+
runAsUser: 10101
143+
startupProbe:
144+
failureThreshold: 60
145+
httpGet:
146+
path: /healthz/ready
147+
port: 15021
148+
periodSeconds: 1
149+
successThreshold: 1
150+
timeoutSeconds: 2
151+
volumeMounts:
152+
- mountPath: /config
153+
name: config-volume
154+
- mountPath: /tmp
155+
name: tmp
156+
- mountPath: /var/run/secrets/xds-tokens
157+
name: xds-token
158+
readOnly: true
97159
securityContext:
98160
sysctls:
99161
- name: net.ipv4.ip_unprivileged_port_start
100162
value: "0"
101-
containers:
102-
- name: agent-gateway
103-
image: "ghcr.io/agentgateway/agentgateway:0.11.0-alpha.f45f1a94cdfa53d96e14301d59ac62200214cb9c"
104-
securityContext:
105-
allowPrivilegeEscalation: false
106-
capabilities:
107-
drop:
108-
- ALL
109-
readOnlyRootFilesystem: true
110-
runAsNonRoot: true
111-
runAsUser: 10101
112-
startupProbe:
113-
failureThreshold: 60
114-
httpGet:
115-
path: /healthz/ready
116-
port: 15021
117-
periodSeconds: 1
118-
successThreshold: 1
119-
timeoutSeconds: 2
120-
readinessProbe:
121-
httpGet:
122-
path: /healthz/ready
123-
port: 15021
124-
periodSeconds: 10
125-
ports:
126-
- containerPort: 15020
127-
name: metrics
128-
protocol: TCP
129-
args:
130-
- -f
131-
- /config/config.yaml
132-
env:
133-
- name: TERMINATION_GRACE_PERIOD_SECONDS
134-
value: "60"
135-
- name: CONNECTION_MIN_TERMINATION_DEADLINE
136-
value: "10s"
137-
- name: NODE_NAME
138-
valueFrom:
139-
fieldRef:
140-
fieldPath: metadata.name
141-
- name: POD_NAMESPACE
142-
valueFrom:
143-
fieldRef:
144-
fieldPath: metadata.namespace
145-
- name: POD_NAME
146-
valueFrom:
147-
fieldRef:
148-
fieldPath: metadata.name
149-
- name: GW_NAME
150-
value: gw
151-
- name: RUST_BACKTRACE
152-
value: "1"
153-
- name: RUST_LOG
154-
value: info
155-
- name: XDS_ADDRESS
156-
value: "http://xds.cluster.local:9978"
157-
- name: NAMESPACE
158-
valueFrom:
159-
fieldRef:
160-
fieldPath: metadata.namespace
161-
- name: GATEWAY
162-
value: gw
163-
volumeMounts:
164-
- name: config-volume
165-
mountPath: /config
166-
# Make /tmp writeable, needed for pprof
167-
- name: tmp
168-
mountPath: /tmp
169-
- name: xds-token
170-
mountPath: /var/run/secrets/xds-tokens
171-
readOnly: true
172-
volumes:
173-
- name: config-volume
174-
configMap:
175-
name: gw
176-
- name: xds-token
177-
projected:
178-
sources:
179-
- serviceAccountToken:
180-
audience: kgateway
181-
expirationSeconds: 43200
182-
path: xds-token
183-
- name: tmp
184-
emptyDir: {}
163+
serviceAccountName: gw
185164
terminationGracePeriodSeconds: 60
165+
volumes:
166+
- configMap:
167+
name: gw
168+
name: config-volume
169+
- name: xds-token
170+
projected:
171+
sources:
172+
- serviceAccountToken:
173+
audience: kgateway
174+
expirationSeconds: 43200
175+
path: xds-token
176+
- emptyDir: {}
177+
name: tmp
178+
status: {}

0 commit comments

Comments
 (0)