Skip to content

Commit d8bdaeb

Browse files
authored
Merge pull request #43 from sp-yduck/clusterctl
Improve cluster-template so to use some options
2 parents 76dd4fa + f2849f7 commit d8bdaeb

File tree

2 files changed

+83
-18
lines changed

2 files changed

+83
-18
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ export NODE_URL=node.ssh.url:22
3434
export NODE_USER=node-ssh-user
3535
export NODE_PASSWORD=node-ssh-password
3636

37-
# generate manifests
38-
clusterctl generate cluster cappx-test --infrastructure=proxmox:v0.2.2 --config https://raw.githubusercontent.com/sp-yduck/cluster-api-provider-proxmox/main/clusterctl.yaml > cappx-test.yaml
37+
# generate manifests (available flags: --target-namespace, --kubernetes-version, --worker-machine-count)
38+
clusterctl generate cluster cappx-test --worker-machine-count=3 --infrastructure=proxmox:v0.2.2 --config https://raw.githubusercontent.com/sp-yduck/cluster-api-provider-proxmox/main/clusterctl.yaml > cappx-test.yaml
3939

4040
# inspect and edit
4141
vi cappx-test.yaml
@@ -86,8 +86,8 @@ CAPPX is tested with `pve-manager/7.4-3/9002ab8a (running kernel: 5.15.102-1-pve
8686

8787
### Cluster API
8888

89-
| | Cluster API v1alpha4 | Cluster API v1beta1 |
90-
| --------------------- | :------------------: | :-----------------: |
89+
| | Cluster API v1alpha4 | Cluster API v1beta1 |
90+
| ---------------------- | :------------------: | :-----------------: |
9191
| CAPPX v1beta1 `(v0.x)` | ? ||
9292

9393
### ControlPlane & Bootstrap provider

templates/cluster-template.yaml

Lines changed: 79 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ kind: Cluster
33
metadata:
44
name: "${CLUSTER_NAME}"
55
namespace: "${NAMESPACE}"
6+
labels:
7+
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
68
spec:
79
infrastructureRef:
810
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
@@ -23,6 +25,8 @@ kind: ProxmoxCluster
2325
metadata:
2426
name: "${CLUSTER_NAME}"
2527
namespace: "${NAMESPACE}"
28+
labels:
29+
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
2630
spec:
2731
controlPlaneEndpoint:
2832
host: "${CONTROLPLANE_HOST}"
@@ -46,6 +50,8 @@ kind: KubeadmControlPlane
4650
metadata:
4751
name: "${CLUSTER_NAME}"
4852
namespace: "${NAMESPACE}"
53+
labels:
54+
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
4955
spec:
5056
kubeadmConfigSpec:
5157
clusterConfiguration:
@@ -61,7 +67,7 @@ spec:
6167
networking:
6268
dnsDomain: cluster.local
6369
serviceSubnet: 10.96.0.0/12
64-
podSubnet: 10.98.0.0/16
70+
podSubnet: 10.244.0.0/16
6571
initConfiguration:
6672
localAPIEndpoint:
6773
advertiseAddress: "${CONTROLPLANE_HOST}"
@@ -81,7 +87,7 @@ spec:
8187
kind: ProxmoxMachineTemplate
8288
name: ${CLUSTER_NAME}-controlplane
8389
replicas: 1
84-
version: v1.26.5
90+
version: ${KUBERNETES_VERSION:=v1.27.3}
8591

8692
---
8793

@@ -90,6 +96,8 @@ kind: ProxmoxMachineTemplate
9096
metadata:
9197
name: ${CLUSTER_NAME}-controlplane
9298
namespace: "${NAMESPACE}"
99+
labels:
100+
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
93101
spec:
94102
template:
95103
spec:
@@ -140,9 +148,9 @@ spec:
140148
- "mkdir -p /opt/cni/bin"
141149
- curl -L "https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz" | tar -C "/opt/cni/bin" -xz
142150
- curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.27.0/crictl-v1.27.0-linux-amd64.tar.gz" | tar -C "/usr/local/bin" -xz
143-
- curl -L --remote-name-all https://dl.k8s.io/release/v1.26.5/bin/linux/amd64/kubeadm -o /usr/local/bin/kubeadm
151+
- curl -L --remote-name-all https://dl.k8s.io/release/${KUBERNETES_VERSION:=v1.27.3}/bin/linux/amd64/kubeadm -o /usr/local/bin/kubeadm
144152
- chmod +x /usr/local/bin/kubeadm
145-
- curl -L --remote-name-all https://dl.k8s.io/release/v1.26.5/bin/linux/amd64/kubelet -o /usr/local/bin/kubelet
153+
- curl -L --remote-name-all https://dl.k8s.io/release/${KUBERNETES_VERSION:=v1.27.3}/bin/linux/amd64/kubelet -o /usr/local/bin/kubelet
146154
- chmod +x /usr/local/bin/kubelet
147155
- curl -sSL "https://raw.githubusercontent.com/kubernetes/release/v0.15.1/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:/usr/local/bin:g" | tee /etc/systemd/system/kubelet.service
148156
- mkdir -p /etc/systemd/system/kubelet.service.d
@@ -155,34 +163,44 @@ apiVersion: cluster.x-k8s.io/v1beta1
155163
kind: MachineDeployment
156164
metadata:
157165
name: ${CLUSTER_NAME}-md-0
166+
namespace: ${NAMESPACE}
167+
labels:
168+
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
158169
spec:
159170
clusterName: "${CLUSTER_NAME}"
160-
replicas: 1
171+
replicas: ${WORKER_MACHINE_COUNT}
161172
selector:
162-
matchLabels: null
173+
matchLabels: {}
163174
template:
164175
spec:
176+
clusterName: ${CLUSTER_NAME}
165177
bootstrap:
166178
configRef:
167179
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
168180
kind: KubeadmConfigTemplate
169-
name: worker
170-
clusterName: "${CLUSTER_NAME}-md-0"
181+
name: ${CLUSTER_NAME}-md-0
171182
infrastructureRef:
172183
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
173184
kind: ProxmoxMachineTemplate
174185
name: ${CLUSTER_NAME}-md-0
175-
version: v1.26.5
186+
version: ${KUBERNETES_VERSION:=v1.27.3}
176187

177188
---
178189

179190
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
180191
kind: KubeadmConfigTemplate
181192
metadata:
182193
name: ${CLUSTER_NAME}-md-0
194+
namespace: ${NAMESPACE}
195+
labels:
196+
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
183197
spec:
184198
template:
185199
spec:
200+
joinConfiguration:
201+
nodeRegistration:
202+
kubeletExtraArgs:
203+
cloud-provider: external
186204
postKubeadmCommands:
187205
- "curl -L https://dl.k8s.io/release/v1.27.3/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl"
188206
- "chmod +x /usr/local/bin/kubectl"
@@ -194,14 +212,59 @@ apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
194212
kind: ProxmoxMachineTemplate
195213
metadata:
196214
name: ${CLUSTER_NAME}-md-0
215+
namespace: ${NAMESPACE}
216+
labels:
217+
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
197218
spec:
198219
template:
199220
spec:
200221
image:
201222
url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-disk-kvm.img
202-
hardware:
203-
cpu: 4
204-
memory: 4096
223+
checksum: 86e996f35732d26cd8b0888c46c4309d4d3b04eb6980378cf82b4d3eb2796549
224+
checksumType: sha256
225+
cloudInit:
226+
user:
227+
packages:
228+
- socat
229+
- conntrack
230+
writeFiles:
231+
- path: /etc/modules-load.d/k8s.conf
232+
owner: root:root
233+
permissions: "0640"
234+
content: overlay\nbr_netfilter
235+
- path: /etc/sysctl.d/k8s.conf
236+
owner: root:root
237+
permissions: "0640"
238+
content: |
239+
net.bridge.bridge-nf-call-iptables = 1
240+
net.bridge.bridge-nf-call-ip6tables = 1
241+
net.ipv4.ip_forward = 1
242+
runCmd:
243+
- "modprobe overlay"
244+
- "modprobe br_netfilter"
245+
- "sysctl --system"
246+
- "mkdir -p /usr/local/bin"
247+
- curl -L "https://github.com/containerd/containerd/releases/download/v1.7.2/containerd-1.7.2-linux-amd64.tar.gz" | tar Cxvz "/usr/local"
248+
- curl -L "https://raw.githubusercontent.com/containerd/containerd/main/containerd.service" -o /etc/systemd/system/containerd.service
249+
- "mkdir -p /etc/containerd"
250+
- "containerd config default > /etc/containerd/config.toml"
251+
- "sed 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml -i"
252+
- "systemctl daemon-reload"
253+
- "systemctl enable --now containerd"
254+
- "mkdir -p /usr/local/sbin"
255+
- curl -L "https://github.com/opencontainers/runc/releases/download/v1.1.7/runc.amd64" -o /usr/local/sbin/runc
256+
- "chmod 755 /usr/local/sbin/runc"
257+
- "mkdir -p /opt/cni/bin"
258+
- curl -L "https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz" | tar -C "/opt/cni/bin" -xz
259+
- curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.27.0/crictl-v1.27.0-linux-amd64.tar.gz" | tar -C "/usr/local/bin" -xz
260+
- curl -L --remote-name-all https://dl.k8s.io/release/${KUBERNETES_VERSION:=v1.27.3}/bin/linux/amd64/kubeadm -o /usr/local/bin/kubeadm
261+
- chmod +x /usr/local/bin/kubeadm
262+
- curl -L --remote-name-all https://dl.k8s.io/release/${KUBERNETES_VERSION:=v1.27.3}/bin/linux/amd64/kubelet -o /usr/local/bin/kubelet
263+
- chmod +x /usr/local/bin/kubelet
264+
- curl -sSL "https://raw.githubusercontent.com/kubernetes/release/v0.15.1/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:/usr/local/bin:g" | tee /etc/systemd/system/kubelet.service
265+
- mkdir -p /etc/systemd/system/kubelet.service.d
266+
- curl -sSL "https://raw.githubusercontent.com/kubernetes/release/v0.15.1/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:/usr/local/bin:g" | tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
267+
- "systemctl enable kubelet.service"
205268

206269
---
207270

@@ -216,17 +279,19 @@ kind: Secret
216279
metadata:
217280
name: "${CLUSTER_NAME}"
218281
namespace: "${NAMESPACE}"
282+
labels:
283+
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
219284
type: Opaque
220285

221286
---
222287

223288
apiVersion: addons.cluster.x-k8s.io/v1beta1
224289
kind: ClusterResourceSet
225290
metadata:
291+
name: ${CLUSTER_NAME}-crs-0
292+
namespace: "${NAMESPACE}"
226293
labels:
227294
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
228-
name: ${CLUSTER_NAME}-crs-1
229-
namespace: "${NAMESPACE}"
230295
spec:
231296
clusterSelector:
232297
matchLabels:

0 commit comments

Comments
 (0)