Skip to content

Instantly share code, notes, and snippets.

@qjoly
Created April 23, 2025 20:12
Show Gist options
  • Save qjoly/749efd2897e7d78bf829aafbe1d5b643 to your computer and use it in GitHub Desktop.
Save qjoly/749efd2897e7d78bf829aafbe1d5b643 to your computer and use it in GitHub Desktop.
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: ProxmoxCluster
metadata:
name: proxmox-cluster
namespace: default
spec:
schedulerHints:
memoryAdjustment: 0
allowedNodes:
- homelab-proxmox-02
controlPlaneEndpoint:
host: 192.168.1.220
port: 6443
dnsServers:
- 8.8.8.8
- 8.8.4.4
ipv4Config:
addresses:
- 192.168.1.210-192.168.1.219
gateway: 192.168.1.254
prefix: 24
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: coffee-cluster
namespace: default
spec:
controlPlaneRef:
apiVersion: controlplane.cluster.x-k8s.io/v1alpha3
kind: TalosControlPlane
name: talos-cp
infrastructureRef:
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: ProxmoxCluster
name: proxmox-cluster
---
apiVersion: controlplane.cluster.x-k8s.io/v1alpha3
kind: TalosControlPlane
metadata:
name: talos-cp
spec:
version: v1.32.0
replicas: 1
infrastructureTemplate:
kind: ProxmoxMachineTemplate
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
name: control-plane-template
namespace: default
controlPlaneConfig:
controlplane:
generateType: controlplane
strategicPatches:
- |
- op: replace
path: /machine/install
value:
disk: /dev/sda
- op: add
path: /machine/kubelet/extraArgs
value:
cloud-provider: external
- op: add
path: /machine/features/kubernetesTalosAPIAccess
value:
enabled: true
allowedRoles:
- os:reader
allowedKubernetesNamespaces:
- kube-system
- op: add
path: /cluster/externalCloudProvider
value:
enabled: true
manifests:
- https://raw.githubusercontent.com/siderolabs/talos-cloud-controller-manager/main/docs/deploy/cloud-controller-manager.yml
- https://raw.githubusercontent.com/alex1989hu/kubelet-serving-cert-approver/main/deploy/standalone-install.yaml
- op: add
path: /machine/kubelet/extraArgs/rotate-server-certificates
value: "true"
- op: add
path: /machine/install/extraKernelArgs
value:
- net.ifnames=0
- op: add
path: /machine/network/interfaces
value:
- interface: eth0
dhcp: false
vip:
ip: 192.168.1.220
---
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: ProxmoxMachineTemplate
metadata:
name: control-plane-template
namespace: default
spec:
template:
spec:
disks:
bootVolume:
disk: scsi0
sizeGb: 40
format: qcow2
full: true
memoryMiB: 2048
network:
default:
bridge: vmbr0
model: virtio
numCores: 2
numSockets: 1
sourceNode: homelab-proxmox-02
templateID: 104
checks:
skipCloudInitStatus: true
skipQemuGuestAgent: true
metadataSettings:
providerIDInjection: true
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineDeployment
metadata:
name: machinedeploy-workers
namespace: default
annotations:
cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "2"
cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "4"
spec:
clusterName: coffee-cluster
replicas: 2
selector:
matchLabels: null
template:
spec:
bootstrap:
configRef:
apiVersion: bootstrap.cluster.x-k8s.io/v1alpha3
kind: TalosConfigTemplate
name: talosconfig-workers
clusterName: coffee-cluster
infrastructureRef:
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: ProxmoxMachineTemplate
name: worker-template
version: v1.32.0
---
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: ProxmoxMachineTemplate
metadata:
name: worker-template
namespace: default
spec:
template:
spec:
disks:
bootVolume:
disk: scsi0
sizeGb: 40
format: qcow2
full: true
memoryMiB: 2048
network:
default:
bridge: vmbr0
model: virtio
numCores: 2
numSockets: 1
sourceNode: homelab-proxmox-02
templateID: 104
checks:
skipCloudInitStatus: true
skipQemuGuestAgent: true
metadataSettings:
providerIDInjection: true
---
apiVersion: bootstrap.cluster.x-k8s.io/v1alpha3
kind: TalosConfigTemplate
metadata:
name: talosconfig-workers
spec:
template:
spec:
generateType: worker
talosVersion: v1.9
configPatches:
- op: replace
path: /machine/install
value:
disk: /dev/sda
- op: add
path: /machine/kubelet/extraArgs
value:
cloud-provider: external
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment