ethanmoffat / etheos

[Eth]an's [E]ndless [O]nline [S]erver - fork of eoserv project
zlib License
13 stars 8 forks source link

Add deployment files for deploying to Azure environment #32

Closed ethanmoffat closed 2 years ago

ethanmoffat commented 2 years ago

There are two high-level changes that were made to support this:

  1. Adding ability to load configuration values from environment variables. The format is all-caps ETHEOS_{CONFIGNAME}, where {CONFIGNAME} is the all-caps version of the config key that should be overwritten. These take priority over any value set in the config files and any defaults built-in to etheos.
  2. Adding ARM template deployment files and updating the pipeline to automatically deploy to dev/test. The arm template is parameterized to allow a fork to independently deploy etheos to different infrastructure. Secrets are loaded from azure key vault during the deployment by az. Resources that exist as dependencies must exist already - in an ideal world, they would also be part of the ARM templates so the deployment could happen in a single operation. So far, dependencies are a storage account with file shares for logs and data, data uploaded to the 'data' file share of the storage account, and a sql server database. The deployment script in the pipeline will also grab the public IP of the container and add a DNS A record for {environment}.etheos.moffat.io. While a dns label is build in to container instances in azure, this is limited to something with the suffix of {region}.azurecontainer.io (e.g. etheos-dev.westus3.azurecontainer.io)

Since deployment uses container instances, access to the etheos container registry is required in order to pull images for non-prod environments. While there is currently no deployment to prod, eventually this will pull from a public docker repo.