machine-controller supports multiple cloud providers through a unified configuration interface. Each cloud provider has specific configuration requirements and features.
When creating a MachineDeployment, you specify the cloud provider configuration in the cloudProviderSpec section. This allows machine-controller to provision worker nodes on your chosen infrastructure.
All cloud provider configurations follow a similar pattern:
apiVersion: cluster.k8s.io/v1alpha1
kind: MachineDeployment
metadata:
name: example-machinedeployment
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
name: example-workers
template:
metadata:
labels:
name: example-workers
spec:
providerSpec:
value:
cloudProvider: "<provider-name>"
cloudProviderSpec:
# Provider-specific configuration here
operatingSystem: "<os-name>"
operatingSystemSpec:
# OS-specific configuration here
versions:
kubelet: "<YOUR-KUBERNETES-VERSION>"
These providers are actively maintained and tested by the machine-controller team:
These providers support advanced use cases and specialized infrastructure:
These providers are maintained by community contributors:
Community providers are not part of the automated end-to-end tests and may have different levels of support.
Click on any provider above to see detailed configuration options, examples, and specific requirements for that provider.
Most cloud providers support multiple methods for providing credentials:
Example using a Secret:
cloudProviderSpec:
token:
secretKeyRef:
namespace: kube-system
name: machine-controller-<provider>
key: token
All providers require SSH public keys for node access:
spec:
providerSpec:
value:
sshPublicKeys:
- "ssh-rsa AAAAB3NzaC1yc2EAAAA..."
Network settings vary by provider but commonly include: