Technical manual
...
iR Engine on AWS
Agones, ingress-nginx and Redis
5 min
install agones, ingress nginx, and a copy of redis for each deployment now that the cluster is up and running, we can install everything onto it when you created the cluster with eksctl, it should have created a context pointing to it in kubectl run kubectl config get contexts to get all of the contexts it knows about; the one with a star next to it should be named \<your aws username>@\<cluster name> if that isn't present, you'll have to edit the configuration to make the appropriate context you next need to add the agones, ingress nginx, and redis helm charts to helm by running helm repo add agones https //agones dev/chart/stable , helm repo add ingress nginx https //kubernetes github io/ingress nginx , and helm repo add redis https //charts bitnami com/bitnami you should also at this time add ir engine's repo via helm repo add etherealengine https //helm etherealengine org if you ever suspect that a chart is out of date, run helm repo update to update all of them to the latest install agones from the top level of this repo, run helm install f \</path/to/agones default values yaml> agones agones/agones this says to install a service called 'agones' from the 'agones' package in the 'agones' chart, and to configure it with agones default values yaml https //github com/ir engine/ir engine ops/blob/master/configs/agones default values yaml that can be found in ir engine ops https //github com/ir engine/ir engine ops/ repo install redis for each deployment each deployment of ir engine uses a redis cluster for coordinating the 'feathers sync' library each redis deployment needs to be named the same as the deployment that will use it; for an ir engine deployment named 'dev', the corresponding redis deployment would need to be named 'dev redis' run helm install f \</path/to/redis values yaml> \<release name> redis redis/redis to install, e g helm install f \</path/to/redis values yaml> dev redis redis/redis redis values yaml https //github com/ir engine/ir engine ops/blob/master/configs/redis values yaml can be found in ir engine ops https //github com/ir engine/ir engine ops/ repo if you named the redis nodegroup something other than 'ng redis 1', you'll have to alter the value in redis values yaml in two places to your redis nodegroup name if you didn't create a nodegroup just for redis, you must omit the f \</path/to/redis values yaml> , as that config makes redis pods run on a specific nodegroup installing redis as part of ir engine chart (not recommended for production) redis can be installed as part of the ir engine chart so long as the config file for the ir engine installation has 'redis enabled' set to true in that case, you should skip the above step of installing redis separately this is not recommended for production environments, though, since upgrades to an ir engine installation will usually reboot the redis servers, leading all of the instanceservers to crash due to their redis connections being severed this breaks agones' normal behavior of keeping allocated instanceservers running until every user has left and slowly replacing old ready instanceservers with new ones, maintaining an active pool of instanceservers at all times you will encounter a period of time where there are no active instanceservers at all, which is not recommended, and all instanceservers in use will immediately go down install ingress nginx this step cannot finish until the associated acm certificate is fully validated open local version of nginx ingress aws values yml https //github com/ir engine/ir engine ops/blob/master/configs/nginx ingress aws values yml file take note of the line service beta kubernetes io/aws load balancer ssl cert "\<acm certificate arn for ssl>" replace the bit in angle brackets, including the angle brackets, with the arn of the certificate you made for the top level domain and all wildcarded subdomains, e g service beta kubernetes io/aws load balancer ssl cert "arn\ aws\ acm\ us west 1 103947711118\ certificate/aaaaaaaa aaaa aaaa aaaa aaaaaaaaaaaa" do not commit this file with the arn inserted; once you've completed this step, revert the file back to the state it was committed in from the top level of this repo, run helm install f \</path/to/nginx ingress aws values yml> nginx ingress nginx/ingress nginx this says to install a service called 'nginx' from the 'ingress nginx' package in the 'ingress nginx' chart, and to configure it with a file found at nginx ingress aws values yml https //github com/ir engine/ir engine ops/blob/master/configs/nginx ingress aws values yml