The Proxmox CCM is configured using a YAML file that defines global features and a list of clusters. The configuration allows you to manage multiple Proxmox clusters, specify authentication via API tokens, and control how network addresses and provider IDs are handled.
Configuration Structure
features section
Controls global behavior for the CCM:
provider: Determines the providerID format. Use default for proxmox://<region>/<vm-id> or capmox for Cluster API for Proxmox (CAPMox) which uses proxmox://<SystemUUID>.network: Defines how node IPs are retrieved. Options are default (uses kubelet --node-ips), qemu (uses QEMU agent API), or auto (detects best mode).ipv6_support_disabled: If true, the CCM ignores IPv6 addresses.external_ip_cidrs: A comma-separated list of CIDRs to identify external IPs. Use ! to exclude a specific CIDR.ip_sort_order: A comma-separated list of CIDRs to define the priority order for IP sorting. IPs not matching these CIDRs are sorted by detection order.ha_group: If true, Proxmox HA groups are used as Kubernetes zone labels.
clusters section
A list of Proxmox clusters to manage. Each cluster entry requires:
url: The Proxmox cluster API URL.insecure: Set to true to skip TLS certificate verification.token_id: The Proxmox API token ID.token_secret: The name of the Kubernetes Secret containing the Proxmox API token.region: The region name (used for topology.kubernetes.io/region labels).
Note: You can also use token_id_file and token_secret_file to load tokens from specific file paths instead of Kubernetes Secrets.
features:
provider: default|capmox
network: default|qemu|auto
ipv6_support_disabled: true|false
external_ip_cidrs: '192.168.0.0/16,2001:db8:85a3::8a2e:370:7334/112,!fd00:1234:5678::/64'
ip_sort_order: '192.168.0.0/16,2001:db8:85a3::8a2e:370:7334/112'
ha_group: true|false
clusters:
- url: https://cluster-api-1.exmple.com:8006/api2/json
insecure: false
token_id: "kubernetes-csi@pve!csi"
token_secret: "secret"
region: Region-1
- url: https://cluster-api-2.exmple.com:8006/api2/json
insecure: false
token_id: "kubernetes-csi@pve!csi"
token_secret: "secret"
region: Region-2