An opinionated way to deploy a Kubernetes cluster on top of an OpenStack cloud.
It is based on the following tools:
kubeadm
ansible
weave-net
The following mandatory environment variables need to be set before calling ansible-playbook
:
OS_*
: standard OpenStack environment variables such asOS_AUTH_URL
,OS_USERNAME
, ...KEY
: name of an existing SSH keypair
The following optional environment variables can also be set:
STATE
: set topresent
by default and must be set toabsent
to destroy the clusterNAME
: name of the Kubernetes cluster, used to derive instance names,kubectl
configuration and security group nameIMAGE
: name of an existing Ubuntu 16.04 imageNETWORK
: name of the network to which instances should be connectedSUBNET_UUID
: UUID of the subnet to which instances should be connected (required for LBaaSv2)FLOATING_IP_POOL
: name of the floating IP poolFLOATING_IP_NETWORK_UUID
: uuid of the floating IP network (required for LBaaSv2)NODE_MEMORY
: how many MB of memory should nodes have, defaults to 4GBNODE_COUNT
: how many nodes should we provision, defaults to 3MASTER_BOOT_FROM_VOLUME
: boot the master instance on a volume for data persistence, defaults to TrueMASTER_TERMINATE_VOLUME
: delete the volume when master instance is destroy, defaults to TrueMASTER_VOLUME_SIZE
: size of the master volumeMASTER_MEMORY
: how many MB of memory should master have, defaults to 4 GB
Spin up a new cluster:
$ ansible-playbook site.yaml
Destroy the cluster:
$ STATE=absent ansible-playbook site.yaml
The following environment variables needs to be defined:
OS_AUTH_URL
OS_PASSWORD
OS_USERNAME
- François Deppierraz francois.deppierraz@infraly.ch