We'll mostly be following the CoreOS on Rackspace guide. You'll need to have a sane python environment with pip already installed (sudo easy_install pip
).
$ sudo pip install keyring
$ sudo pip install rackspace-novaclient
$ sudo pip install supernova
Edit ~/.supernova
to match the following:
[production]
OS_AUTH_URL = https://identity.api.rackspacecloud.com/v2.0/
OS_USERNAME = {rackspace_username}
OS_PASSWORD = {rackspace_api_key}
OS_TENANT_NAME = {rackspace_account_id}
OS_REGION_NAME = DFW (or ORD or another region)
OS_AUTH_SYSTEM = rackspace
Your account ID is displayed in the upper right-hand corner of the cloud control panel UI, and your API key can be found on the Account Settings page.
Choose an existing keypair or generate a new one, if desired. Tell supernova about the key pair and give it an identifiable name:
$ supernova production keypair-add --pub-key ~/.ssh/deis.pub deis-key
Edit user-data and add a discovery URL. This URL will be used by all nodes in this Deis cluster. You can get a new discovery URL by sending a request to http://discovery.etcd.io/new.
By default, the provision script will provision 3 servers. You can override this by setting DEIS_NUM_INSTANCES
:
$ DEIS_NUM_INSTANCES=5 ./provision-rackspace-cluster.sh deis-key
Note that for scheduling to work properly, clusters must consist of at least 3 nodes and always have an odd number of members. For more information, see optimal etcd cluster size.
Deis clusters of less than 3 nodes are unsupported.
Run the Rackspace provision script to spawn a new CoreOS cluster. You'll need to provide the name of the key pair you just added. Optionally, you can also specify a flavor name.
$ cd contrib/rackspace
$ ./provision-rackspace-cluster.sh
Usage: provision-rackspace-cluster.sh <key pair name> [flavor]
$ ./provision-rackspace-cluster.sh deis-key
Due to image publishing limitations on Rackspace, CoreOS images on Rackspace are frequently out of date. Each machine needs to be updated. On each one, run:
$ sudo systemctl unmask update-engine && sudo systemctl start update-engine && sudo update_engine_client -update && sudo reboot
Once the machine is rebooted, it should have a recent CoreOS version.
Once the cluster is up, get the hostname of any of the machines from Rackspace, set DEISCTL_TUNNEL and install the platform:
$ export DEISCTL_TUNNEL=23.253.219.94
$ deisctl install platform && deisctl start platform
The installer will deploy Deis and make sure the services start properly.
By default, deisctl
will provision 1 router. You can override this by scaling up:
$ deisctl scale router=2
You'll need to configure DNS records so you can access applications hosted on Deis. See Configuring DNS for details.
You'll need to create two load balancers on Rackspace to handle your cluster.
Load Balancer 1
Port 80
Protocol HTTP
Health Monitoring -
Monitor Type HTTP
HTTP Path /health-check
Load Balancer 2
Virtual IP Shared VIP on Another Load Balancer (select Load Balancer 1)
Port 2222
Protocol TCP
After that, register with Deis!
$ deis register http://deis.example.org
username: deis
password:
password (confirm):
email: [email protected]
See Hacking on Deis.