Skip to content

Commit e3c9386

Browse files
committed
revert
1 parent b78a370 commit e3c9386

File tree

2 files changed

+348
-0
lines changed

2 files changed

+348
-0
lines changed
Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
apiVersion: cluster.x-k8s.io/v1beta1
2+
kind: Cluster
3+
metadata:
4+
name: ${CLUSTER_NAME}
5+
labels:
6+
ccm: external
7+
spec:
8+
clusterNetwork:
9+
pods:
10+
cidrBlocks:
11+
- 10.1.0.0/16
12+
services:
13+
cidrBlocks:
14+
- 10.152.183.0/24
15+
controlPlaneRef:
16+
apiVersion: controlplane.cluster.x-k8s.io/v1beta2
17+
kind: CK8sControlPlane
18+
name: ${CLUSTER_NAME}-control-plane
19+
infrastructureRef:
20+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
21+
kind: AWSCluster
22+
name: ${CLUSTER_NAME}
23+
---
24+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
25+
kind: AWSCluster
26+
metadata:
27+
name: ${CLUSTER_NAME}
28+
spec:
29+
region: ${AWS_REGION}
30+
sshKeyName: ${AWS_SSH_KEY_NAME}
31+
bastion:
32+
enabled: ${AWS_CREATE_BASTION}
33+
controlPlaneLoadBalancer:
34+
healthCheckProtocol: TCP
35+
network:
36+
cni:
37+
cniIngressRules:
38+
- description: microcluster
39+
protocol: tcp
40+
toPort: 2380
41+
---
42+
apiVersion: controlplane.cluster.x-k8s.io/v1beta2
43+
kind: CK8sControlPlane
44+
metadata:
45+
name: ${CLUSTER_NAME}-control-plane
46+
spec:
47+
machineTemplate:
48+
infrastructureTemplate:
49+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
50+
kind: AWSMachineTemplate
51+
name: ${CLUSTER_NAME}-control-plane
52+
spec:
53+
nodeName: "{{ ds.meta_data.local_hostname }}"
54+
files:
55+
# note(ben): This is only required as long as k8s does not have a stable release.
56+
- path: /capi/scripts/install.sh
57+
permissions: "0500"
58+
owner: "root:root"
59+
content: |
60+
#!/bin/bash -xe
61+
snap install k8s --classic --edge
62+
controlPlane:
63+
cloudProvider: external
64+
replicas: ${CONTROL_PLANE_MACHINE_COUNT}
65+
version: ${KUBERNETES_VERSION}
66+
---
67+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
68+
kind: AWSMachineTemplate
69+
metadata:
70+
name: ${CLUSTER_NAME}-control-plane
71+
spec:
72+
template:
73+
spec:
74+
ami:
75+
id: ${AWS_AMI_ID}
76+
iamInstanceProfile: control-plane.cluster-api-provider-aws.sigs.k8s.io
77+
instanceType: ${AWS_CONTROL_PLANE_INSTANCE_TYPE}
78+
publicIP: ${AWS_PUBLIC_IP}
79+
sshKeyName: ${AWS_SSH_KEY_NAME}
80+
rootVolume:
81+
size: ${AWS_CONTROL_PLANE_ROOT_VOLUME_SIZE}
82+
---
83+
apiVersion: cluster.x-k8s.io/v1beta1
84+
kind: MachineDeployment
85+
metadata:
86+
name: ${CLUSTER_NAME}-worker-md-0
87+
spec:
88+
clusterName: ${CLUSTER_NAME}
89+
replicas: ${WORKER_MACHINE_COUNT}
90+
selector:
91+
matchLabels:
92+
cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME}
93+
template:
94+
spec:
95+
version: ${KUBERNETES_VERSION}
96+
clusterName: ${CLUSTER_NAME}
97+
bootstrap:
98+
configRef:
99+
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
100+
kind: CK8sConfigTemplate
101+
name: ${CLUSTER_NAME}-md-0
102+
infrastructureRef:
103+
name: "${CLUSTER_NAME}-md-0"
104+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
105+
kind: AWSMachineTemplate
106+
---
107+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
108+
kind: AWSMachineTemplate
109+
metadata:
110+
name: ${CLUSTER_NAME}-md-0
111+
spec:
112+
template:
113+
spec:
114+
ami:
115+
id: ${AWS_AMI_ID}
116+
iamInstanceProfile: nodes.cluster-api-provider-aws.sigs.k8s.io
117+
instanceType: ${AWS_NODE_INSTANCE_TYPE}
118+
publicIP: ${AWS_PUBLIC_IP}
119+
sshKeyName: ${AWS_SSH_KEY_NAME}
120+
rootVolume:
121+
size: ${AWS_NODE_ROOT_VOLUME_SIZE}
122+
---
123+
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
124+
kind: CK8sConfigTemplate
125+
metadata:
126+
name: ${CLUSTER_NAME}-md-0
127+
spec:
128+
template:
129+
spec:
130+
nodeName: "{{ ds.meta_data.local_hostname }}"
131+
files:
132+
# note(ben): This is only required as long as k8s does not have a stable release.
133+
- path: /capi/scripts/install.sh
134+
permissions: "0500"
135+
owner: "root:root"
136+
content: |
137+
#!/bin/bash -xe
138+
snap install k8s --classic --edge
139+
---
140+
apiVersion: addons.cluster.x-k8s.io/v1beta1
141+
kind: ClusterResourceSet
142+
metadata:
143+
name: crs-ccm
144+
spec:
145+
clusterSelector:
146+
matchLabels:
147+
ccm: external
148+
resources:
149+
- kind: ConfigMap
150+
name: cloud-controller-manager-addon
151+
strategy: ApplyOnce
152+
---
153+
apiVersion: v1
154+
data:
155+
aws-ccm-external.yaml: |
156+
---
157+
apiVersion: apps/v1
158+
kind: DaemonSet
159+
metadata:
160+
name: aws-cloud-controller-manager
161+
namespace: kube-system
162+
labels:
163+
k8s-app: aws-cloud-controller-manager
164+
spec:
165+
selector:
166+
matchLabels:
167+
k8s-app: aws-cloud-controller-manager
168+
updateStrategy:
169+
type: RollingUpdate
170+
template:
171+
metadata:
172+
labels:
173+
k8s-app: aws-cloud-controller-manager
174+
spec:
175+
nodeSelector:
176+
node-role.kubernetes.io/control-plane: ""
177+
tolerations:
178+
- key: node.cloudprovider.kubernetes.io/uninitialized
179+
value: "true"
180+
effect: NoSchedule
181+
- effect: NoSchedule
182+
key: node-role.kubernetes.io/control-plane
183+
affinity:
184+
nodeAffinity:
185+
requiredDuringSchedulingIgnoredDuringExecution:
186+
nodeSelectorTerms:
187+
- matchExpressions:
188+
- key: node-role.kubernetes.io/control-plane
189+
operator: Exists
190+
serviceAccountName: cloud-controller-manager
191+
containers:
192+
- name: aws-cloud-controller-manager
193+
image: ${AWS_CCM_IMAGE}
194+
args:
195+
- --v=2
196+
- --cloud-provider=aws
197+
- --use-service-account-credentials=true
198+
- --configure-cloud-routes=false
199+
resources:
200+
requests:
201+
cpu: 200m
202+
hostNetwork: true
203+
---
204+
apiVersion: v1
205+
kind: ServiceAccount
206+
metadata:
207+
name: cloud-controller-manager
208+
namespace: kube-system
209+
---
210+
apiVersion: rbac.authorization.k8s.io/v1
211+
kind: RoleBinding
212+
metadata:
213+
name: cloud-controller-manager:apiserver-authentication-reader
214+
namespace: kube-system
215+
roleRef:
216+
apiGroup: rbac.authorization.k8s.io
217+
kind: Role
218+
name: extension-apiserver-authentication-reader
219+
subjects:
220+
- apiGroup: ""
221+
kind: ServiceAccount
222+
name: cloud-controller-manager
223+
namespace: kube-system
224+
---
225+
apiVersion: rbac.authorization.k8s.io/v1
226+
kind: ClusterRole
227+
metadata:
228+
name: system:cloud-controller-manager
229+
rules:
230+
- apiGroups:
231+
- ""
232+
resources:
233+
- events
234+
verbs:
235+
- create
236+
- patch
237+
- update
238+
- apiGroups:
239+
- ""
240+
resources:
241+
- nodes
242+
verbs:
243+
- '*'
244+
- apiGroups:
245+
- ""
246+
resources:
247+
- nodes/status
248+
verbs:
249+
- patch
250+
- apiGroups:
251+
- ""
252+
resources:
253+
- services
254+
verbs:
255+
- list
256+
- patch
257+
- update
258+
- watch
259+
- apiGroups:
260+
- ""
261+
resources:
262+
- services/status
263+
verbs:
264+
- list
265+
- patch
266+
- update
267+
- watch
268+
- apiGroups:
269+
- ""
270+
resources:
271+
- serviceaccounts
272+
verbs:
273+
- create
274+
- get
275+
- list
276+
- watch
277+
- apiGroups:
278+
- ""
279+
resources:
280+
- persistentvolumes
281+
verbs:
282+
- get
283+
- list
284+
- update
285+
- watch
286+
- apiGroups:
287+
- ""
288+
resources:
289+
- endpoints
290+
verbs:
291+
- create
292+
- get
293+
- list
294+
- watch
295+
- update
296+
- apiGroups:
297+
- coordination.k8s.io
298+
resources:
299+
- leases
300+
verbs:
301+
- create
302+
- get
303+
- list
304+
- watch
305+
- update
306+
- apiGroups:
307+
- ""
308+
resources:
309+
- serviceaccounts/token
310+
verbs:
311+
- create
312+
---
313+
kind: ClusterRoleBinding
314+
apiVersion: rbac.authorization.k8s.io/v1
315+
metadata:
316+
name: system:cloud-controller-manager
317+
roleRef:
318+
apiGroup: rbac.authorization.k8s.io
319+
kind: ClusterRole
320+
name: system:cloud-controller-manager
321+
subjects:
322+
- apiGroup: ""
323+
kind: ServiceAccount
324+
name: cloud-controller-manager
325+
namespace: kube-system
326+
kind: ConfigMap
327+
metadata:
328+
name: cloud-controller-manager-addon
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Kubernetes cluster configuration
2+
export KUBERNETES_VERSION=v1.31.0
3+
export CONTROL_PLANE_MACHINE_COUNT=3
4+
export WORKER_MACHINE_COUNT=3
5+
6+
# AWS region
7+
export AWS_REGION="eu-central-1"
8+
9+
# AWS machine configuration
10+
export AWS_CREATE_BASTION="true"
11+
export AWS_PUBLIC_IP="true"
12+
export AWS_CONTROL_PLANE_INSTANCE_TYPE="t3.large"
13+
export AWS_NODE_INSTANCE_TYPE="t3.large"
14+
export AWS_CONTROL_PLANE_ROOT_VOLUME_SIZE=16
15+
export AWS_NODE_ROOT_VOLUME_SIZE=16
16+
export AWS_SSH_KEY_NAME="default"
17+
# List upstream AMIs with clusterawsadm ami list --owner-id 819546954734
18+
export AWS_AMI_ID="ami-027b534ab5d0b4886"
19+
20+
export AWS_CCM_IMAGE=registry.k8s.io/provider-aws/cloud-controller-manager:v1.28.3

0 commit comments

Comments
 (0)