This repository hosts an implementation of a provider for AWS for the cluster-api project.
Note: The additionals PRs are applied on top of vendored https://sigs.k8s.io/cluster-api
:
Learn how to engage with the Kubernetes community on the community page.
You can reach the maintainers of this project at:
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.
The Dockerfiles use as builder
in the FROM
instruction which is not currently supported
by the RH's docker fork (see kubernetes-sigs/kubebuilder#268).
One needs to run the imagebuilder
command instead of the docker build
.
Note: this info is RH only, it needs to be backported every time the README.md
is synced with the upstream one.
-
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):
$ sudo yum install libvirt-daemon-kvm qemu-kvm libvirt-daemon-config-network $ systemctl start libvirtd $ sudo usermod -a -G libvirt $(whoami) $ newgrp libvirt
To install to kvm2 driver:
curl -Lo docker-machine-driver-kvm2 https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 \ && chmod +x docker-machine-driver-kvm2 \ && sudo cp docker-machine-driver-kvm2 /usr/local/bin/ \ && rm docker-machine-driver-kvm2
-
Deploying the cluster
Because of cluster-api#475 the minikube version can't be higher than
0.28.0
. To install minikubev0.28.0
, you can run:$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.28.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
To deploy the cluster:
minikube start --vm-driver kvm2 eval $(minikube docker-env)
-
Building the machine controller
$ make -C cmd/machine-controller
-
Deploying the cluster-api stack manifests
Add your AWS credentials to the
addons.yaml
file (in base64 format). You can either do this manually or use theexamples/render-aws-secrets.sh
.The easy deployment is:
./examples/render-aws-secrets.sh examples/addons.yaml | kubectl apply -f -
The manual deployment is:
$ echo -n 'your_id' | base64 $ echo -n 'your_key' | base64 $ kubectl apply -f examples/addons.yaml
Deploy CRDs:
$ kubectl apply -f config/crd/machine.crd.yaml $ kubectl apply -f config/crd/machineset.crd.yaml $ kubectl apply -f config/crd/machinedeployment.crd.yaml $ kubectl apply -f config/crd/cluster.crd.yaml
Deploy machine API controllers:
$ kubectl apply -f config/rbac/rbac_role.yaml $ kubectl apply -f config/rbac/rbac_role_binding.yaml $ kubectl apply -f config/controllers/deployment.yaml
Deploy the cluster manifest:
$ kubectl apply -f examples/cluster.yaml
Deploy the machines:
$ kubectl apply -f examples/machine.yaml --validate=false
or alternatively:
$ kubectl apply -f examples/machine-set.yaml --validate=false