An opinionated way to deploy a Kubernetes cluster on top of an OpenStack cloud.
It is based on the following tools:
kubeadmansible
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:
NAME: name of the Kubernetes cluster, used to derive instance names,kubectlconfiguration and security group nameIMAGE: name of an existing Ubuntu 16.04 imageEXTERNAL_NETWORK: name of the neutron external network, defaults to 'public'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.yamlDestroy the cluster:
$ ansible-playbook destroy.yaml- Ansible (tested with version 2.4 but probably also works with older ones)
- Shade library required by Ansible OpenStack modules (
python-shadefor Debian)
The following environment variables needs to be defined:
OS_AUTH_URLOS_PASSWORDOS_USERNAMEOS_DOMAIN_NAME
- François Deppierraz francois.deppierraz@infraly.ch
- Oli Schacher oli.schacher@switch.ch
- Saverio Proto saverio.proto@switch.ch