|
| 1 | +# Cluster API Provider Azure Design<!-- omit in toc --> |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | +## Folder Structure |
| 6 | + |
| 7 | +- /pkg/cloud/azure/apis - contains the crds |
| 8 | +- /pkg/cloud/azure |
| 9 | + - /pkg/cloud/azure/actuators/cluster - cluster actuator for cluster api provider |
| 10 | + - /pkg/cloud/azure/actuators/machine - machine actuator for cluster api provider |
| 11 | + - /pkg/cloud/azure/services - each folder represents an azure service, implements Get/CreateOrUpdate/Delete |
| 12 | + - /pkg/cloud/azure/services/config - contains startup scripts for controlplane and worker nodes |
| 13 | + |
| 14 | +## Components |
| 15 | + |
| 16 | +### Cluster Actuator |
| 17 | + |
| 18 | +The cluster actuator creates the following resources, in order: |
| 19 | +- Certificates (generating using the kubeadm packages): |
| 20 | + - Kubernetes Certificate Authority (CA) |
| 21 | + - API server (includes public IP FQDN as a certificate SAN (subject alternative name)) |
| 22 | + - front proxy |
| 23 | + - SA (Service account) |
| 24 | + - Admin kubeconfig |
| 25 | + - kubeadm discovery hashes (required for bootstrapping) |
| 26 | +- Azure networking components (zone-redundant, by default) |
| 27 | + - (1) virtual network |
| 28 | + - (2) subnets |
| 29 | + - control plane |
| 30 | + - node |
| 31 | + - (2) NSG (network security groups) |
| 32 | + - control plane |
| 33 | + - node |
| 34 | + - (1) route table (node) |
| 35 | + - (1) public IP (Standard SKU) |
| 36 | + - (1) public load balancer (Standard SKU, attached to public IP) |
| 37 | + - (1) internal load balancer (Standard SKU, for communication from worker nodes) |
| 38 | + |
| 39 | +### Machine Actuator |
| 40 | + |
| 41 | +The machine actuator creates Kubernetes nodes, according to the supplied `machines.yaml`, within the above Azure network infrastructure, in the following order: |
| 42 | +- NIC (network interface card) |
| 43 | +- virtual machine (created in an Azure Availability Zone, in regions where AZs are supported) |
| 44 | +- kubeadm bootstrap token (if required) |
| 45 | +- generated startup script (to be used by Azure Custom Script Extension) |
0 commit comments