Skip to content

Commit a46ba5f

Browse files
committed
Add e2e test for machinepool with ip alias
1 parent 053b8d7 commit a46ba5f

8 files changed

Lines changed: 7096 additions & 6 deletions

File tree

exp/api/v1beta1/gcpmachinepool_types.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222

2323
capg "sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1"
2424
"sigs.k8s.io/cluster-api/util/conditions"
25-
infrav1 "sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1"
2625
)
2726

2827
// Constants block.
@@ -48,7 +47,7 @@ type GCPMachinePoolSpec struct {
4847

4948
// AliasIPRanges let you assign ranges of internal IP addresses as aliases to a VM's network interfaces.
5049
// +optional
51-
AliasIPRanges []infrav1.AliasIPRange `json:"aliasIPRanges,omitempty"`
50+
AliasIPRanges []capg.AliasIPRange `json:"aliasIPRanges,omitempty"`
5251

5352
// ImageFamily is the full reference to a valid image family to be used for this machine.
5453
// +optional

scripts/ci-e2e.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ init_networks() {
125125
gcloud compute routers nats create "${TEST_NAME}-mynat" --project="${GCP_PROJECT}" \
126126
--router-region="${GCP_REGION}" --router="${TEST_NAME}-myrouter" \
127127
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
128+
129+
gcloud compute networks subnets update "${GCP_NETWORK_NAME}" --region="${GCP_REGION}" --project="${GCP_PROJECT}" \
130+
--add-secondary-ranges control-plane=10.4.0.0/14,worker-nodes=10.8.0.0/14
128131
}
129132

130133

@@ -166,6 +169,9 @@ cleanup() {
166169
--quiet "${GCP_NETWORK_NAME}" || true
167170
fi
168171

172+
gcloud compute networks subnets update "${GCP_NETWORK_NAME}" --region="${GCP_REGION}" --project="${GCP_PROJECT}" \
173+
--remove-secondary-ranges control-plane,worker-nodes
174+
169175
if [[ -n "${SKIP_INIT_IMAGE:-}" ]]; then
170176
echo "Skipping GCP image deletion..."
171177
else

test/e2e/config/gcp-ci.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ providers:
7474
- sourcePath: "${PWD}/test/e2e/data/infrastructure-gcp/cluster-template-ci-gke.yaml"
7575
- sourcePath: "${PWD}/test/e2e/data/infrastructure-gcp/cluster-template-ci-gke-autopilot.yaml"
7676
- sourcePath: "${PWD}/test/e2e/data/infrastructure-gcp/cluster-template-ci-gke-custom-subnet.yaml"
77+
- sourcePath: "${PWD}/test/e2e/data/infrastructure-gcp/cluster-template-ci-with-machinepool-ip-alias.yaml"
7778
- sourcePath: "${PWD}/test/e2e/data/infrastructure-gcp/cluster-template-ci-with-external-and-internal-lb.yaml"
7879
- sourcePath: "${PWD}/test/e2e/data/infrastructure-gcp/cluster-template-ci-with-internal-lb.yaml"
7980
- sourcePath: "${PWD}/test/e2e/data/infrastructure-gcp/withclusterclass/cluster-template-ci-gke-autopilot-topology.yaml"
@@ -94,6 +95,8 @@ variables:
9495
# Cluster Addons
9596
CNI: "${PWD}/test/e2e/data/cni/calico/calico.yaml"
9697
CCM: "${PWD}/test/e2e/data/ccm/gce-cloud-controller-manager.yaml"
98+
CNI_VPC_NATIVE: "${PWD}/test/e2e/data/cni/calico/calico-vpc-native.yaml"
99+
CCM_VPC_NATIVE: "${PWD}/test/e2e/data/ccm/gce-cloud-controller-manager-vpc-native.yaml"
97100

98101
GCP_CONTROL_PLANE_MACHINE_TYPE: n1-standard-2
99102
GCP_NODE_MACHINE_TYPE: n1-standard-2
@@ -121,6 +124,7 @@ intervals:
121124
default/wait-gpu-nodes: ["30m", "10s"]
122125
default/wait-delete-cluster: ["30m", "10s"]
123126
default/wait-machine-upgrade: ["60m", "10s"]
127+
default/wait-machine-pool-nodes: ["40m", "10s"]
124128
default/wait-machine-pool-upgrade: ["60m", "10s"]
125129
default/wait-machine-remediation: ["30m", "10s"]
126130
default/wait-deployment: ["15m", "10s"]
Lines changed: 330 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,330 @@
1+
apiVersion: apps/v1
2+
kind: DaemonSet
3+
metadata:
4+
name: cloud-controller-manager
5+
namespace: kube-system
6+
labels:
7+
component: cloud-controller-manager
8+
addon.kops.k8s.io/name: gcp-cloud-controller.addons.k8s.io
9+
spec:
10+
selector:
11+
matchLabels:
12+
component: cloud-controller-manager
13+
updateStrategy:
14+
type: RollingUpdate
15+
template:
16+
metadata:
17+
labels:
18+
tier: control-plane
19+
component: cloud-controller-manager
20+
spec:
21+
affinity:
22+
nodeAffinity:
23+
requiredDuringSchedulingIgnoredDuringExecution:
24+
nodeSelectorTerms:
25+
- matchExpressions:
26+
- key: node-role.kubernetes.io/control-plane
27+
operator: Exists
28+
- matchExpressions:
29+
- key: node-role.kubernetes.io/master
30+
operator: Exists
31+
tolerations:
32+
- key: node.cloudprovider.kubernetes.io/uninitialized
33+
value: "true"
34+
effect: NoSchedule
35+
- key: node.kubernetes.io/not-ready
36+
effect: NoSchedule
37+
- key: node-role.kubernetes.io/master
38+
effect: NoSchedule
39+
- key: node-role.kubernetes.io/control-plane
40+
effect: NoSchedule
41+
serviceAccountName: cloud-controller-manager
42+
containers:
43+
- name: cloud-controller-manager
44+
image: gcr.io/k8s-staging-cloud-provider-gcp/cloud-controller-manager:master
45+
imagePullPolicy: IfNotPresent
46+
command:
47+
- /cloud-controller-manager
48+
- --cluster-cidr=10.4.0.0/13
49+
- --cloud-provider=gce
50+
- --leader-elect=true
51+
- --use-service-account-credentials
52+
- --allocate-node-cidrs=true
53+
- --configure-cloud-routes=false
54+
- --cidr-allocator-type=CloudAllocator
55+
- --cloud-config=/etc/kubernetes/cloud.config
56+
livenessProbe:
57+
failureThreshold: 3
58+
httpGet:
59+
host: 127.0.0.1
60+
path: /healthz
61+
port: 10258
62+
scheme: HTTPS
63+
initialDelaySeconds: 15
64+
periodSeconds: 10
65+
successThreshold: 1
66+
timeoutSeconds: 15
67+
resources:
68+
requests:
69+
cpu: "200m"
70+
volumeMounts:
71+
- mountPath: /etc/kubernetes/cloud.config
72+
name: cloudconfig
73+
readOnly: true
74+
hostNetwork: true
75+
priorityClassName: system-cluster-critical
76+
volumes:
77+
- hostPath:
78+
path: /etc/kubernetes/cloud.config
79+
type: FileOrCreate
80+
name: cloudconfig
81+
---
82+
apiVersion: v1
83+
kind: ServiceAccount
84+
metadata:
85+
name: cloud-controller-manager
86+
namespace: kube-system
87+
labels:
88+
addon.kops.k8s.io/name: gcp-cloud-controller.addons.k8s.io
89+
---
90+
apiVersion: rbac.authorization.k8s.io/v1
91+
kind: RoleBinding
92+
metadata:
93+
name: cloud-controller-manager:apiserver-authentication-reader
94+
namespace: kube-system
95+
labels:
96+
addon.kops.k8s.io/name: gcp-cloud-controller.addons.k8s.io
97+
roleRef:
98+
apiGroup: rbac.authorization.k8s.io
99+
kind: Role
100+
name: extension-apiserver-authentication-reader
101+
subjects:
102+
- apiGroup: ""
103+
kind: ServiceAccount
104+
name: cloud-controller-manager
105+
namespace: kube-system
106+
---
107+
# https://github.com/kubernetes/cloud-provider-gcp/blob/master/deploy/cloud-node-controller-role.yaml
108+
apiVersion: rbac.authorization.k8s.io/v1
109+
kind: ClusterRole
110+
metadata:
111+
name: system:cloud-controller-manager
112+
labels:
113+
addonmanager.kubernetes.io/mode: Reconcile
114+
addon.kops.k8s.io/name: gcp-cloud-controller.addons.k8s.io
115+
rules:
116+
- apiGroups:
117+
- ""
118+
- events.k8s.io
119+
resources:
120+
- events
121+
verbs:
122+
- create
123+
- patch
124+
- update
125+
- apiGroups:
126+
- coordination.k8s.io
127+
resources:
128+
- leases
129+
verbs:
130+
- create
131+
- get
132+
- list
133+
- watch
134+
- update
135+
- apiGroups:
136+
- coordination.k8s.io
137+
resourceNames:
138+
- cloud-controller-manager
139+
resources:
140+
- leases
141+
verbs:
142+
- get
143+
- update
144+
- apiGroups:
145+
- ""
146+
resources:
147+
- endpoints
148+
- serviceaccounts
149+
verbs:
150+
- create
151+
- get
152+
- update
153+
- apiGroups:
154+
- ""
155+
resources:
156+
- nodes
157+
verbs:
158+
- get
159+
- update
160+
- patch # until #393 lands
161+
- apiGroups:
162+
- ""
163+
resources:
164+
- namespaces
165+
verbs:
166+
- get
167+
- apiGroups:
168+
- ""
169+
resources:
170+
- nodes/status
171+
verbs:
172+
- patch
173+
- update
174+
- apiGroups:
175+
- ""
176+
resources:
177+
- secrets
178+
verbs:
179+
- create
180+
- delete
181+
- get
182+
- update
183+
- apiGroups:
184+
- "authentication.k8s.io"
185+
resources:
186+
- tokenreviews
187+
verbs:
188+
- create
189+
- apiGroups:
190+
- "*"
191+
resources:
192+
- "*"
193+
verbs:
194+
- list
195+
- watch
196+
- apiGroups:
197+
- ""
198+
resources:
199+
- serviceaccounts/token
200+
verbs:
201+
- create
202+
---
203+
apiVersion: rbac.authorization.k8s.io/v1
204+
kind: Role
205+
metadata:
206+
name: system::leader-locking-cloud-controller-manager
207+
namespace: kube-system
208+
labels:
209+
addonmanager.kubernetes.io/mode: Reconcile
210+
addon.kops.k8s.io/name: gcp-cloud-controller.addons.k8s.io
211+
rules:
212+
- apiGroups:
213+
- ""
214+
resources:
215+
- configmaps
216+
verbs:
217+
- watch
218+
- apiGroups:
219+
- ""
220+
resources:
221+
- configmaps
222+
resourceNames:
223+
- cloud-controller-manager
224+
verbs:
225+
- get
226+
- update
227+
---
228+
apiVersion: rbac.authorization.k8s.io/v1
229+
kind: ClusterRole
230+
metadata:
231+
name: system:controller:cloud-node-controller
232+
labels:
233+
addonmanager.kubernetes.io/mode: Reconcile
234+
addon.kops.k8s.io/name: gcp-cloud-controller.addons.k8s.io
235+
rules:
236+
- apiGroups:
237+
- ""
238+
resources:
239+
- events
240+
verbs:
241+
- create
242+
- patch
243+
- update
244+
- apiGroups:
245+
- ""
246+
resources:
247+
- nodes
248+
verbs:
249+
- get
250+
- list
251+
- update
252+
- delete
253+
- patch
254+
- apiGroups:
255+
- ""
256+
resources:
257+
- nodes/status
258+
verbs:
259+
- get
260+
- list
261+
- update
262+
- delete
263+
- patch
264+
265+
- apiGroups:
266+
- ""
267+
resources:
268+
- pods
269+
verbs:
270+
- list
271+
- delete
272+
- apiGroups:
273+
- ""
274+
resources:
275+
- pods/status
276+
verbs:
277+
- list
278+
- delete
279+
---
280+
281+
# https://github.com/kubernetes/cloud-provider-gcp/blob/master/deploy/cloud-node-controller-binding.yaml
282+
apiVersion: rbac.authorization.k8s.io/v1
283+
kind: RoleBinding
284+
metadata:
285+
name: system::leader-locking-cloud-controller-manager
286+
namespace: kube-system
287+
labels:
288+
addonmanager.kubernetes.io/mode: Reconcile
289+
addon.kops.k8s.io/name: gcp-cloud-controller.addons.k8s.io
290+
roleRef:
291+
apiGroup: rbac.authorization.k8s.io
292+
kind: Role
293+
name: system::leader-locking-cloud-controller-manager
294+
subjects:
295+
- kind: ServiceAccount
296+
name: cloud-controller-manager
297+
namespace: kube-system
298+
---
299+
apiVersion: rbac.authorization.k8s.io/v1
300+
kind: ClusterRoleBinding
301+
metadata:
302+
name: system:cloud-controller-manager
303+
labels:
304+
addonmanager.kubernetes.io/mode: Reconcile
305+
addon.kops.k8s.io/name: gcp-cloud-controller.addons.k8s.io
306+
roleRef:
307+
apiGroup: rbac.authorization.k8s.io
308+
kind: ClusterRole
309+
name: system:cloud-controller-manager
310+
subjects:
311+
- kind: ServiceAccount
312+
apiGroup: ""
313+
name: cloud-controller-manager
314+
namespace: kube-system
315+
---
316+
apiVersion: rbac.authorization.k8s.io/v1
317+
kind: ClusterRoleBinding
318+
metadata:
319+
name: system:controller:cloud-node-controller
320+
labels:
321+
addonmanager.kubernetes.io/mode: Reconcile
322+
addon.kops.k8s.io/name: gcp-cloud-controller.addons.k8s.io
323+
roleRef:
324+
apiGroup: rbac.authorization.k8s.io
325+
kind: ClusterRole
326+
name: system:controller:cloud-node-controller
327+
subjects:
328+
- kind: ServiceAccount
329+
name: cloud-node-controller
330+
namespace: kube-system

0 commit comments

Comments
 (0)