Skip to content

Commit a34ad8c

Browse files
authored
Use cloud-provider template for PowerVS e2e by default (#1861)
1 parent ec15610 commit a34ad8c

File tree

3 files changed

+276
-24
lines changed

3 files changed

+276
-24
lines changed

scripts/ci-e2e.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ prerequisites_powervs(){
128128
export IBMPOWERVS_SERVICE_INSTANCE_ID=${BOSKOS_RESOURCE_ID:-"d53da3bf-1f4a-42fa-9735-acf16b1a05cd"}
129129
export IBMPOWERVS_NETWORK_NAME="capi-net-$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head --bytes 5)"
130130
export ZONE=${BOSKOS_ZONE:-"osa21"}
131+
export IBMPOWERVS_REGION=${BOSKOS_REGION:-"osa"}
132+
export IBMPOWERVS_ZONE=${BOSKOS_ZONE:-"osa21"}
133+
export PROVIDER_ID_FORMAT=v2
134+
export EXP_CLUSTER_RESOURCE_SET=true
135+
export IBMACCOUNT_ID=${IBMACCOUNT_ID:-"7cfbd5381a434af7a09289e795840d4e"}
136+
export BASE64_API_KEY=$(tr -d '\n' <<<"$IBMCLOUD_API_KEY" | base64)
131137
}
132138

133139
prerequisites_vpc(){

test/e2e/data/templates/cluster-template-powervs-md-remediation.yaml

Lines changed: 269 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,273 @@
1+
apiVersion: v1
2+
data:
3+
ibmpowervs-ccm-external.yaml: |-
4+
apiVersion: v1
5+
kind: ServiceAccount
6+
metadata:
7+
name: cloud-controller-manager
8+
namespace: kube-system
9+
---
10+
apiVersion: rbac.authorization.k8s.io/v1
11+
kind: RoleBinding
12+
metadata:
13+
name: cloud-controller-manager:apiserver-authentication-reader
14+
namespace: kube-system
15+
roleRef:
16+
apiGroup: rbac.authorization.k8s.io
17+
kind: Role
18+
name: extension-apiserver-authentication-reader
19+
subjects:
20+
- apiGroup: ""
21+
kind: ServiceAccount
22+
name: cloud-controller-manager
23+
namespace: kube-system
24+
---
25+
apiVersion: rbac.authorization.k8s.io/v1
26+
kind: ClusterRoleBinding
27+
metadata:
28+
name: system:cloud-controller-manager
29+
roleRef:
30+
apiGroup: rbac.authorization.k8s.io
31+
kind: ClusterRole
32+
name: system:cloud-controller-manager
33+
subjects:
34+
- kind: ServiceAccount
35+
name: cloud-controller-manager
36+
namespace: kube-system
37+
---
38+
apiVersion: rbac.authorization.k8s.io/v1
39+
kind: ClusterRole
40+
metadata:
41+
name: system:cloud-controller-manager
42+
rules:
43+
- apiGroups:
44+
- ""
45+
resources:
46+
- events
47+
verbs:
48+
- create
49+
- patch
50+
- update
51+
- apiGroups:
52+
- ""
53+
resources:
54+
- nodes
55+
verbs:
56+
- "*"
57+
- apiGroups:
58+
- ""
59+
resources:
60+
- nodes/status
61+
verbs:
62+
- patch
63+
- apiGroups:
64+
- ""
65+
resources:
66+
- services
67+
verbs:
68+
- list
69+
- patch
70+
- update
71+
- watch
72+
- apiGroups:
73+
- ""
74+
resources:
75+
- services/status
76+
verbs:
77+
- patch
78+
- apiGroups:
79+
- ""
80+
resources:
81+
- serviceaccounts
82+
verbs:
83+
- create
84+
- get
85+
- list
86+
- watch
87+
- update
88+
- apiGroups:
89+
- ""
90+
resources:
91+
- persistentvolumes
92+
verbs:
93+
- get
94+
- list
95+
- update
96+
- watch
97+
- apiGroups:
98+
- ""
99+
resources:
100+
- endpoints
101+
verbs:
102+
- create
103+
- get
104+
- list
105+
- watch
106+
- update
107+
- apiGroups:
108+
- ""
109+
resources:
110+
- secrets
111+
verbs:
112+
- get
113+
- list
114+
- watch
115+
- apiGroups:
116+
- "coordination.k8s.io"
117+
resources:
118+
- leases
119+
verbs:
120+
- create
121+
- get
122+
- list
123+
- watch
124+
- update
125+
- apiGroups:
126+
- ""
127+
resourceNames:
128+
- node-controller
129+
- service-controller
130+
resources:
131+
- serviceaccounts/token
132+
verbs:
133+
- create
134+
---
135+
apiVersion: apps/v1
136+
kind: DaemonSet
137+
metadata:
138+
name: ibmpowervs-cloud-controller-manager
139+
namespace: kube-system
140+
labels:
141+
k8s-app: ibmpowervs-cloud-controller-manager
142+
spec:
143+
selector:
144+
matchLabels:
145+
k8s-app: ibmpowervs-cloud-controller-manager
146+
updateStrategy:
147+
type: RollingUpdate
148+
template:
149+
metadata:
150+
labels:
151+
k8s-app: ibmpowervs-cloud-controller-manager
152+
spec:
153+
nodeSelector:
154+
node-role.kubernetes.io/control-plane: ""
155+
tolerations:
156+
- key: node.cloudprovider.kubernetes.io/uninitialized
157+
value: "true"
158+
effect: NoSchedule
159+
- key: node-role.kubernetes.io/master
160+
effect: NoSchedule
161+
operator: Exists
162+
- key: node-role.kubernetes.io/control-plane
163+
effect: NoSchedule
164+
operator: Exists
165+
- key: node.kubernetes.io/not-ready
166+
effect: NoSchedule
167+
operator: Exists
168+
serviceAccountName: cloud-controller-manager
169+
containers:
170+
- name: ibmpowervs-cloud-controller-manager
171+
image: gcr.io/k8s-staging-capi-ibmcloud/powervs-cloud-controller-manager:6c98ec5
172+
args:
173+
- --v=2
174+
- --cloud-provider=ibm
175+
- --cloud-config=/etc/cloud/ibmpowervs.conf
176+
- --use-service-account-credentials=true
177+
env:
178+
- name: ENABLE_VPC_PUBLIC_ENDPOINT
179+
value: "true"
180+
resources:
181+
requests:
182+
cpu: 200m
183+
terminationMessagePolicy: FallbackToLogsOnError
184+
volumeMounts:
185+
- mountPath: /etc/cloud
186+
name: ibmpowervs-config-volume
187+
readOnly: true
188+
- mountPath: /etc/ibm-secret
189+
name: ibm-secret
190+
hostNetwork: true
191+
volumes:
192+
- name: ibmpowervs-config-volume
193+
configMap:
194+
name: ibmpowervs-cloud-config
195+
- name: ibm-secret
196+
secret:
197+
secretName: ibmpowervs-cloud-credential
198+
kind: ConfigMap
199+
metadata:
200+
name: cloud-controller-manager-addon
201+
---
202+
apiVersion: v1
203+
data:
204+
ibmpowervs-cloud-conf.yaml: |-
205+
apiVersion: v1
206+
kind: ConfigMap
207+
metadata:
208+
name: ibmpowervs-cloud-config
209+
namespace: kube-system
210+
data:
211+
ibmpowervs.conf: |
212+
[global]
213+
version = 1.1.0
214+
[kubernetes]
215+
config-file = ""
216+
[provider]
217+
cluster-default-provider = g2
218+
accountID = ${IBMACCOUNT_ID}
219+
clusterID = ${CLUSTER_NAME}
220+
g2workerServiceAccountID = ${IBMACCOUNT_ID}
221+
g2Credentials = /etc/ibm-secret/ibmcloud_api_key
222+
g2ResourceGroupName = ${IBMVPC_RESOURCE_GROUP:=""}
223+
g2VpcSubnetNames = ${IBMVPC_SUBNET_NAMES:=""}
224+
g2VpcName = ${IBMVPC_NAME:=""}
225+
region = ${IBMVPC_REGION:=""}
226+
powerVSCloudInstanceID = ${IBMPOWERVS_SERVICE_INSTANCE_ID}
227+
powerVSRegion = ${IBMPOWERVS_REGION}
228+
powerVSZone = ${IBMPOWERVS_ZONE}
229+
kind: ConfigMap
230+
metadata:
231+
name: ibmpowervs-cfg
232+
---
233+
apiVersion: v1
234+
kind: Secret
235+
metadata:
236+
name: ibmpowervs-credential
237+
stringData:
238+
ibmpowervs-credential.yaml: |-
239+
apiVersion: v1
240+
kind: Secret
241+
metadata:
242+
name: ibmpowervs-cloud-credential
243+
namespace: kube-system
244+
data:
245+
ibmcloud_api_key: ${BASE64_API_KEY}
246+
type: addons.cluster.x-k8s.io/resource-set
247+
---
248+
apiVersion: addons.cluster.x-k8s.io/v1beta1
249+
kind: ClusterResourceSet
250+
metadata:
251+
name: crs-cloud-conf
252+
spec:
253+
clusterSelector:
254+
matchLabels:
255+
ccm: external
256+
resources:
257+
- kind: Secret
258+
name: ibmpowervs-credential
259+
- kind: ConfigMap
260+
name: ibmpowervs-cfg
261+
- kind: ConfigMap
262+
name: cloud-controller-manager-addon
263+
strategy: ApplyOnce
264+
---
1265
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
2266
kind: KubeadmConfigTemplate
3267
metadata:
4268
labels:
5269
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME}
270+
cluster.x-k8s.io/control-plane: ""
6271
name: ${CLUSTER_NAME}-md-0
7272
spec:
8273
template:
@@ -19,7 +284,6 @@ spec:
19284
kubeletExtraArgs:
20285
cloud-provider: external
21286
eviction-hard: nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%
22-
provider-id: ibmpowervs://${CLUSTER_NAME}/'{{ v1.local_hostname }}'
23287
name: '{{ v1.local_hostname }}'
24288
preKubeadmCommands:
25289
- hostname "{{ v1.local_hostname }}"
@@ -32,6 +296,7 @@ apiVersion: cluster.x-k8s.io/v1beta1
32296
kind: Cluster
33297
metadata:
34298
labels:
299+
ccm: external
35300
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME}
36301
name: ${CLUSTER_NAME}
37302
spec:
@@ -77,25 +342,6 @@ spec:
77342
name: ${CLUSTER_NAME}-md-0
78343
version: ${KUBERNETES_VERSION}
79344
---
80-
apiVersion: cluster.x-k8s.io/v1beta1
81-
kind: MachineHealthCheck
82-
metadata:
83-
name: ${CLUSTER_NAME}-mhc-md
84-
spec:
85-
clusterName: ${CLUSTER_NAME}
86-
maxUnhealthy: 100%
87-
nodeStartupTimeout: 20m
88-
selector:
89-
matchLabels:
90-
e2e.remediation.label: ""
91-
unhealthyConditions:
92-
- status: "False"
93-
timeout: 60s
94-
type: Ready
95-
- status: Unknown
96-
timeout: 60s
97-
type: Ready
98-
---
99345
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
100346
kind: KubeadmControlPlane
101347
metadata:
@@ -107,9 +353,12 @@ spec:
107353
certSANs:
108354
- ${IBMPOWERVS_VIP}
109355
- ${IBMPOWERVS_VIP_EXTERNAL}
356+
extraArgs:
357+
cloud-provider: external
110358
controlPlaneEndpoint: ${IBMPOWERVS_VIP}:${API_SERVER_PORT:=6443}
111359
controllerManager:
112360
extraArgs:
361+
cloud-provider: external
113362
enable-hostpath-provisioner: "true"
114363
files:
115364
- content: |
@@ -234,7 +483,6 @@ spec:
234483
kubeletExtraArgs:
235484
cloud-provider: external
236485
eviction-hard: nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%
237-
provider-id: ibmpowervs://${CLUSTER_NAME}/'{{ v1.local_hostname }}'
238486
name: '{{ v1.local_hostname }}'
239487
joinConfiguration:
240488
discovery:
@@ -248,7 +496,6 @@ spec:
248496
kubeletExtraArgs:
249497
cloud-provider: external
250498
eviction-hard: nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%
251-
provider-id: ibmpowervs://${CLUSTER_NAME}/'{{ v1.local_hostname }}'
252499
name: '{{ v1.local_hostname }}'
253500
preKubeadmCommands:
254501
- hostname "{{ v1.local_hostname }}"
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
apiVersion: kustomize.config.k8s.io/v1beta1
22
kind: Kustomization
33
resources:
4-
- ../../../../../templates/cluster-template-powervs.yaml
5-
- mhc-md-powervs.yaml
4+
- ../../../../../templates/cluster-template-powervs-cloud-provider.yaml
65
patchesStrategicMerge:
76
- patches/mhc-label.yaml

0 commit comments

Comments
 (0)