There are two high-level changes that were made to support this:
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.
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.
There are two high-level changes that were made to support this:
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.