Tässä dokumentaatiossa kuvataan, kuinka Saukko-App ympäristö rakennetaan, deployataan ja konfiguroidaan käyttämällä bicep-tiedostoa. Tämä dokumentaatio on tarkoitettu helpottamaan projektin ylläpitoa ja jatkokehitystä.
Bicep-tiedosto on infrastruktuurin määrittelytiedosto, joka käytetään Azure-resurssien provisiointiin. Tässä on lyhyt katsaus tiedostoon:
param location string = resourceGroup().location
param app_name string = resourceGroup().name
var skuName = 'B1'
var skuTier = 'Basic'
var skuSize = 'B1'
var workspaceName = '${app_name}-ws-${uniqueString(resourceGroup().id)}'
var appInsightName = '${app_name}-insight-${uniqueString(resourceGroup().id)}'
var webappName = '${app_name}-app-${uniqueString(resourceGroup().id)}'
var functionsAppName = '${app_name}-fn-${uniqueString(resourceGroup().id)}'
var appServicePlanName = '${app_name}-asp'
var webjobsStorageName = 'webjobs${uniqueString(resourceGroup().id)}'
var cosmosDbName = '${app_name}-cosmos'
// App Service plan for the APP
resource ASP_NodeJS_AppService 'Microsoft.Web/serverfarms@2023-01-01' = {
name: appServicePlanName
location: location
kind: 'linux'
properties: {
reserved: true
}
sku: {
name: skuName
tier: skuTier
size: skuSize
}
}
// Application Insights
resource Application_Insights 'Microsoft.Insights/components@2020-02-02' = {
name: appInsightName
location: location
kind: 'web'
properties: {
Application_Type: 'web'
Flow_Type: 'Redfield'
Request_Source: 'IbizaAIExtensionEnablementBlade'
SamplingPercentage: null
RetentionInDays: 90
WorkspaceResourceId: Workspace.id
IngestionMode: 'LogAnalytics'
publicNetworkAccessForIngestion: 'Enabled'
publicNetworkAccessForQuery: 'Enabled'
}
}
...
Resurssiryhmän nimi kannattaa pitää lyhyenä ja ytimekkäänä. Nimeä suunniteltaessa on hyvä huomioida, että siitä käy ilmi resurssien käyttötarkoitus ja ympäristö (tuotanto- tai testikäyttö). Tämä resurssiryhmän nimi toimii pohjana varsinaisten resurssien nimeämisessä. Azure-resursseilla on tavallisesti erilaisia sääntöjä niiden nimeämisessä, ja nämä säännöt on otettu huomioon Bicep-tiedostossa, lukuun ottamatta pituusrajoituksia. Hyvä nimi resurssiryhmälle Saukko-projektin osalta voisi olla esimerkiksi saukko-prod tai saukko-dev, riippuen siitä, mihin ympäristöön resursseja ollaan asentamassa.
Lisäksi resurssiryhmän sijainnin valinta on tärkeää. GDPR-säädöksien noudattamiseksi on suositeltavaa valita sijainti Euroopasta, jotta data pysyy EU:n alueella. Tämä varmistaa, että tiedot käsitellään ja säilytetään GDPR-vaatimusten mukaisesti.
az group create --name <resourcegroup_name> --location <location>
Esimerkiksi, jos haluat luoda resurssiryhmän Euroopan alueelle, voit valita sijainniksi northeurope tai westeurope:
az group create --name saukko-prod --location northeurope
Vaikka Azure-ympäristön replikointi Bicepin avulla on helppoa ja nopeaa, se voi vaatia hieman manuaalista työtä. Bicepin avulla voimme kuitenkin minimoida tämän manuaalisen työn määrän. Alla olevaa komentoa voidaan käyttää Azure-ympäristön rakentamiseen. Kun ajat tämän komennon, varmista, että olet korvannut
az deployment group create --resource-group <resourcegroup_name> --template-file .bicep
Esimerkiksi, jos resurssiryhmäsi nimi on saukko-prod, komento näyttää tältä:
az deployment group create --resource-group saukko-prod --template-file .bicep
Function App
Resurssilistalta. Resurssin nimi on muotoa saukko-<env>-fn-<uniq-str>
Use available workflow: ...
Basic authentication
App Service
Resurssilistalta. Resurssin nimi on muotoa saukko-<env>-app-<uniq-str>
Use available workflow: ...
Basic authentication
.env
tiedostoissaan. Osa näiden muuttujien arvoista on jo valmiiksi asetettu, ja niihin ei tarvitse koskea. Näitä ovat esimerkiksi Environment variables
, APPLICATIONINSIGHTS_CONNECTION_STRING
sekä MONGODB_URI
, niiden arvot on asetettu automaattisesti siinä vaiheessa kun tämä KO. resurssi on luotu bicep tiedostolla.NODE_ENV
arvoksi on defaultina asetettu production|staging
, arvo pitää muokata vastaamaan tämän Azure resurssiryhmän luonnetta, siis joko production
tai staging
.APP_URL
tulee sisältää tämän App Servicen URL / Custom domain jota palvelun käyttäjät käyttävät saavuttaakseen tämän palvelun.JWT-SECRET
tulisi olla 64 merkkiä pitkä merkkijono, sitä käytetään allekirjoittamaan JWT tokenit. JWT-SECRET
on tietoturvan kannalta oleellinen pitää salassa ja sen ei kannata olla sama kun mitä muissa ympäristöissä käytetään.EMAIL_SERVICE
sekä EMAIL_SERVICE-*
muuttujat ovat palvelun käyttämän sähköpostipalvelun muuttujia sekä salaisuuksia.Secrets and variables
valikkoActions
APP_INSIGHTS_INSTRUMENTATION_KEY_*
arvon eri ympäristöissäEPERUSTEET_DATA_URL_*
arvon eri ympäristöissä