Cloud Providers

machine-controller supports multiple cloud providers through a unified configuration interface. Each cloud provider has specific configuration requirements and features.

Overview

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>"

Supported Cloud Providers

Production-Ready Providers

These providers are actively maintained and tested by the machine-controller team:

Advanced Providers

These providers support advanced use cases and specialized infrastructure:

Community Providers

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.

Provider-Specific Documentation

Click on any provider above to see detailed configuration options, examples, and specific requirements for that provider.

Common Configuration Elements

Credentials

Most cloud providers support multiple methods for providing credentials:

  1. Kubernetes Secrets (recommended for production)
  2. Environment Variables (convenient for development)
  3. Direct Values (not recommended for production)

Example using a Secret:

cloudProviderSpec:
  token:
    secretKeyRef:
      namespace: kube-system
      name: machine-controller-<provider>
      key: token

SSH Keys

All providers require SSH public keys for node access:

spec:
  providerSpec:
    value:
      sshPublicKeys:
        - "ssh-rsa AAAAB3NzaC1yc2EAAAA..."

Network Configuration

Network settings vary by provider but commonly include:

  • VPC/Network ID
  • Subnet ID
  • Security Groups/Firewall Rules
  • Public IP assignment

Next Steps

  1. Choose your cloud provider from the list above
  2. Follow the provider-specific documentation
  3. Configure your credentials
  4. Create your first MachineDeployment

Further Reading