2018-07-03 19:07:37 +02:00
Param (
[ parameter ( Mandatory = $false ) ] [ string ] $registry ,
[ parameter ( Mandatory = $false ) ] [ string ] $dockerUser ,
[ parameter ( Mandatory = $false ) ] [ string ] $dockerPassword ,
[ parameter ( Mandatory = $false ) ] [ string ] $externalDns ,
[ parameter ( Mandatory = $false ) ] [ string ] $appName = " eshop " ,
[ parameter ( Mandatory = $false ) ] [ bool ] $deployInfrastructure = $true ,
[ parameter ( Mandatory = $false ) ] [ bool ] $clean = $true ,
[ parameter ( Mandatory = $false ) ] [ string ] $aksName = " " ,
[ parameter ( Mandatory = $false ) ] [ string ] $aksRg = " " ,
2018-11-12 17:55:22 +01:00
[ parameter ( Mandatory = $false ) ] [ string ] $imageTag = " latest " ,
[ parameter ( Mandatory = $false ) ] [ bool ] $useLocalk8s = $false
)
2018-07-03 19:07:37 +02:00
$dns = $externalDns
2018-11-12 17:55:22 +01:00
$ingressValuesFile = " ingress_values.yaml "
2018-12-17 16:11:43 +01:00
if ( $useLocalk8s -eq $true ) {
2018-11-12 17:55:22 +01:00
$ingressValuesFile = " ingress_values_dockerk8s.yaml "
$dns = " localhost "
}
2018-07-03 19:07:37 +02:00
if ( $externalDns -eq " aks " ) {
if ( [ string ] :: IsNullOrEmpty ( $aksName ) -or [ string ] :: IsNullOrEmpty ( $aksRg ) ) {
Write-Host " Error: When using -dns aks, MUST set -aksName and -aksRg too. " -ForegroundColor Red
exit 1
}
Write-Host " Getting DNS of AKS of AKS $aksName (in resource group $aksRg )... " -ForegroundColor Green
$dns = $ ( az aks show -n $aksName -g $aksRg - -query addonProfiles . httpApplicationRouting . config . HTTPApplicationRoutingZoneName )
if ( [ string ] :: IsNullOrEmpty ( $dns ) ) {
Write-Host " Error getting DNS of AKS $aksName (in resource group $aksRg ). Please ensure AKS has httpRouting enabled AND Azure CLI is logged & in version 2.0.37 or higher " -ForegroundColor Red
exit 1
}
$dns = $dns -replace '[\"]'
Write-Host " DNS base found is $dns . Will use $appName . $dns for the app! " -ForegroundColor Green
$dns = " $appName . $dns "
}
# Initialization & check commands
if ( [ string ] :: IsNullOrEmpty ( $dns ) ) {
Write-Host " No DNS specified. Ingress resources will be bound to public ip " -ForegroundColor Yellow
}
if ( $clean ) {
Write-Host " Cleaning previous helm releases... " -ForegroundColor Green
helm delete - -purge $ ( helm ls -q )
Write-Host " Previous releases deleted " -ForegroundColor Green
}
2018-07-09 14:20:27 +02:00
$useCustomRegistry = $false
if ( -not [ string ] :: IsNullOrEmpty ( $registry ) ) {
$useCustomRegistry = $true
if ( [ string ] :: IsNullOrEmpty ( $dockerUser ) -or [ string ] :: IsNullOrEmpty ( $dockerPassword ) ) {
Write-Host " Error: Must use -dockerUser AND -dockerPassword if specifying custom registry " -ForegroundColor Red
exit 1
}
}
2018-07-03 19:07:37 +02:00
Write-Host " Begin eShopOnContainers installation using Helm " -ForegroundColor Green
$infras = ( " sql-data " , " nosql-data " , " rabbitmq " , " keystore-data " , " basket-data " )
2018-07-03 20:05:58 +02:00
$charts = ( " eshop-common " , " apigwmm " , " apigwms " , " apigwwm " , " apigwws " , " basket-api " , " catalog-api " , " identity-api " , " locations-api " , " marketing-api " , " mobileshoppingagg " , " ordering-api " , " ordering-backgroundtasks " , " ordering-signalrhub " , " payment-api " , " webmvc " , " webshoppingagg " , " webspa " , " webstatus " )
2018-07-03 19:07:37 +02:00
if ( $deployInfrastructure ) {
foreach ( $infra in $infras ) {
Write-Host " Installing infrastructure: $infra " -ForegroundColor Green
2018-11-12 17:55:22 +01:00
helm install - -values app . yaml - -values inf . yaml - -values $ingressValuesFile - -set app . name = $appName - -set inf . k8s . dns = $dns - -name = " $appName - $infra " $infra
2018-07-03 19:07:37 +02:00
}
}
foreach ( $chart in $charts ) {
Write-Host " Installing: $chart " -ForegroundColor Green
2018-07-09 14:20:27 +02:00
if ( $useCustomRegistry ) {
2018-11-12 17:55:22 +01:00
helm install - -set inf . registry . server = $registry - -set inf . registry . login = $dockerUser - -set inf . registry . pwd = $dockerPassword - -set inf . registry . secretName = eshop-docker -scret - -values app . yaml - -values inf . yaml - -values $ingressValuesFile - -set app . name = $appName - -set inf . k8s . dns = $dns - -set image . tag = $imageTag - -set image . pullPolicy = Always - -name = " $appName - $chart " $chart
2018-07-09 14:20:27 +02:00
}
else {
if ( $chart -ne " eshop-common " ) { # eshop-common is ignored when no secret must be deployed
2018-11-12 17:55:22 +01:00
helm install - -values app . yaml - -values inf . yaml - -values $ingressValuesFile - -set app . name = $appName - -set inf . k8s . dns = $dns - -set image . tag = $imageTag - -set image . pullPolicy = Always - -name = " $appName - $chart " $chart
2018-07-09 14:20:27 +02:00
}
}
2018-07-03 19:07:37 +02:00
}
Write-Host " helm charts installed. " -ForegroundColor Green