Configure RBAC rules so the actuator can CRUD resources
$ az role definition update --role-definition azure-role.json
Deploy machine API plane with minikube
Install kvm
Depending on your virtualization manager you can choose a different driver.
In order to install kvm, you can run (as described in the drivers documentation):
For development purposes the azure machine controller itself will run out of the machine API stack.
Otherwise, docker images needs to be built, pushed into a docker registry and deployed withing the stack.
Deployed machine API plane (machine-api-controllers deployment) is (among other
controllers) running machine-controller. In order to run locally built one,
simply edit machine-api-controllers deployment and remove machine-controller container from it.
Build and run azure actuator outside of the cluster
$ go build -o bin/machine-controller-manager sigs.k8s.io/cluster-api-provider-azure/cmd/manager
Once done, you can access the cluster via kubectl. E.g.
$ kubectl --kubeconfig=kubeconfig get nodes
Deploy k8s cluster in Azure with machine API plane deployed
Generate bootstrap user data
To generate bootstrap script for machine api plane, simply run:
$ ./examples/generate-bootstrap.sh
The script requires AZURE_SUBSCRIPTION_ID, AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET environment variables to be set.
It generates config/bootstrap.yaml secret for master machine
under config/master-machine.yaml.
The generated bootstrap secret contains user data responsible for:
deployment of kube-apiserver
deployment of machine API plane with azure machine controllers
generating worker machine user data script secret deploying a node
deployment of worker machineset
Deploy machine API plane through machine manifest: