Running Stackspin on AWS
k3s installation
You can run OAS on an AWS EC2 node but you need to consider the following limitations:
Provide ansible with external IP addr
An AWS EC2 node by itself doesn't know it's public assigned IP addr. Therefore you need to provide it in the installation/upgrade step like this:
python -m stackspin gl.varac.net install --ansible-param '-e ip_address=52.58.18.134'
metallb
Because metallb doesn't work on AWS nodes, remmove the --disable=metallb
from the k3s startup parameters:
vi /etc/systemd/system/k3s.service
systemctl daemon-reload
systemctl restart k3s.service
Stackspin installation
metallb
Stackspin uses metallb as load balancer, mostly because we want the ingress controller ingress-nginx to know about the external IP so it can get configured to block or allow certain IP ranges. This works fine in certain environments like a plain VPS but metallb won't work on AWS or other cloud providers.
The solution is to use k3s integrated service load balancer
instead of metallb. You can achieve this by overriding adding the following to
your $CLUSTERDIR/group_vars/all/settings.yml file:
k3s:
version: 'v1.18.6+k3s1'
server_args: '--disable traefik --disable local-storage'
!Attention! There's currently no easy way to disable/opt-out of metallb, see https://open.greenhost.net/stackspin/stackspin/-/issues/720 for more details.