diff --git a/deploy/k8s/deploy-ingress-dockerlocal.ps1 b/deploy/k8s/deploy-ingress-dockerlocal.ps1 new file mode 100644 index 000000000..43bf5704d --- /dev/null +++ b/deploy/k8s/deploy-ingress-dockerlocal.ps1 @@ -0,0 +1,2 @@ +kubectl apply -f nginx-ingress\cm.yaml +kubectl apply -f nginx-ingress\cloud-generic.yaml diff --git a/deploy/k8s/deploy-ingress.ps1 b/deploy/k8s/deploy-ingress.ps1 new file mode 100644 index 000000000..594986745 --- /dev/null +++ b/deploy/k8s/deploy-ingress.ps1 @@ -0,0 +1,2 @@ +# Deploy nginx-ingress core files +kubectl apply -f nginx-ingress\mandatory.yaml diff --git a/deploy/k8s/helm/app.yaml b/deploy/k8s/helm/app.yaml index d57fd8836..e83ea2823 100644 --- a/deploy/k8s/helm/app.yaml +++ b/deploy/k8s/helm/app.yaml @@ -1,36 +1,35 @@ # This helm values file defines app-based settings # Charts use those values, so this file **MUST** be included in all chart releases - -app: # app global settings - name: "my-eshop" # Override for custom app name - ingress: # ingress related settings +app: # app global settings + name: "my-eshop" # Override for custom app name + ingress: # ingress related settings entries: - basket: basket-api # ingress entry for basket api - catalog: catalog-api # ingress entry for catalog api - ordering: ordering-api # ingress entry for ordering api - identity: identity # ingress entry for identity api - mvc: webmvc # ingress entry for web mvc - spa: "" # ingress entry for web spa - status: webstatus # ingress entry for web status - webshoppingapigw: webshoppingapigw # ingress entry for web shopping Agw - webmarketingapigw: webmarketingapigw # ingress entry for web mkg Agw - mobilemarketingapigw: mobilemarketingapigw # ingress entry for mobile mkg Agw - mobileshoppingapigw: mobileshoppingapigw # ingress entry for mobile shopping Agw - webshoppingagg: webshoppingagg # ingress entry for web shopping aggregator - mobileshoppingagg: mobileshoppingagg # ingress entry for mobile shopping aggregator - payment: payment-api # ingress entry for payment api - locations: locations-api # ingress entry for locations api - marketing: marketing-api # ingress entry for marketing api - webhooks: webhooks-api # ingress entry for webhooks api - webhooksweb: webhooks-web # ingress entry for webhooks web demo client + basket: basket-api # ingress entry for basket api + catalog: catalog-api # ingress entry for catalog api + ordering: ordering-api # ingress entry for ordering api + identity: identity # ingress entry for identity api + mvc: webmvc # ingress entry for web mvc + spa: "" # ingress entry for web spa + status: webstatus # ingress entry for web status + webshoppingapigw: webshoppingapigw # ingress entry for web shopping Agw + webmarketingapigw: webmarketingapigw # ingress entry for web mkg Agw + mobilemarketingapigw: mobilemarketingapigw # ingress entry for mobile mkg Agw + mobileshoppingapigw: mobileshoppingapigw # ingress entry for mobile shopping Agw + webshoppingagg: webshoppingagg # ingress entry for web shopping aggregator + mobileshoppingagg: mobileshoppingagg # ingress entry for mobile shopping aggregator + payment: payment-api # ingress entry for payment api + locations: locations-api # ingress entry for locations api + marketing: marketing-api # ingress entry for marketing api + webhooks: webhooks-api # ingress entry for webhooks api + webhooksweb: webhooks-web # ingress entry for webhooks web demo client svc: - basket: basket-api # service name for basket api - catalog: catalog-api # service name for catalog api - ordering: ordering-api # service name for ordering api - orderingbackgroundtasks: ordering-backgroundtasks # service name for orderingbackgroundtasks + basket: basket-api # service name for basket api + catalog: catalog-api # service name for catalog api + ordering: ordering-api # service name for ordering api + orderingbackgroundtasks: ordering-backgroundtasks # service name for orderingbackgroundtasks orderingsignalrhub: ordering-signalrhub # service name for orderingsignalrhub - identity: identity-api # service name for identity api + identity: identity-api # service name for identity api mvc: webmvc # service name for web mvc spa: webspa # service name for web spa status: webstatus # service name for web status @@ -40,8 +39,8 @@ app: # app global settings mobileshoppingapigw: mobileshoppingapigw # service name for mobile shopping Agw webshoppingagg: webshoppingagg # service name for web shopping aggregator mobileshoppingagg: mobileshoppingagg # service name for mobile shopping aggregator - payment: payment-api # service name for payment api - locations: locations-api # service name for locations api + payment: payment-api # service name for payment api + locations: locations-api # service name for locations api marketing: marketing-api # service name for marketing ap - webhooks: webhooks-api # service name for webhooks api - webhooksweb: webhooks-client # service name for webhooks web + webhooks: webhooks-api # service name for webhooks api + webhooksweb: webhooks-client # service name for webhooks web diff --git a/deploy/k8s/helm/deploy-all-istio.ps1 b/deploy/k8s/helm/deploy-all-istio.ps1 deleted file mode 100644 index 5e05c6dbb..000000000 --- a/deploy/k8s/helm/deploy-all-istio.ps1 +++ /dev/null @@ -1,116 +0,0 @@ -Param( - [parameter(Mandatory=$false)][string]$registry, - [parameter(Mandatory=$false)][bool]$installIstioOnSystem=$false, - [parameter(Mandatory=$false)][string]$dockerUser, - [parameter(Mandatory=$false)][string]$dockerPassword, - [parameter(Mandatory=$false)][string]$externalDns="aks", - [parameter(Mandatory=$false)][string]$dnsname="eshoptestistio", - [parameter(Mandatory=$false)][string]$appName="eshop", - [parameter(Mandatory=$false)][bool]$deployInfrastructure=$true, - [parameter(Mandatory=$false)][string]$kialiuser="admin", - [parameter(Mandatory=$false)][string]$kialipasswrd="admin", - [parameter(Mandatory=$false)][bool]$clean=$true, - [parameter(Mandatory=$false)][string]$aksName="", - [parameter(Mandatory=$false)][string]$aksRg="", - [parameter(Mandatory=$false)][string]$imageTag="latest", - [parameter(Mandatory=$false)][bool]$useLocalk8s=$false - ) - -$dns = $externalDns - -# Instalamos Istio -# Specify the Istio version that will be leveraged throughout these instructions -$ISTIO_VERSION="1.0.6" - -# Windows -$ProgressPreference = 'SilentlyContinue'; -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -Invoke-WebRequest -URI "https://github.com/istio/istio/releases/download/$ISTIO_VERSION/istio-$ISTIO_VERSION-win.zip" -OutFile "istio-$ISTIO_VERSION.zip" -Remove-Item istio-$ISTIO_VERSION -Recurse -ErrorAction Ignore -Expand-Archive -Path "istio-$ISTIO_VERSION.zip" -DestinationPath . - -if($installIstioOnSystem -eq $true) { - New-Item -ItemType Directory -Force -Path "C:\Program Files\Istio" - mv ./istio-$ISTIO_VERSION/bin/istioctl.exe "C:\Program Files/Istio/" - $PATH = [environment]::GetEnvironmentVariable("PATH", "User") - [environment]::SetEnvironmentVariable("PATH", $PATH + "; C:\Program Files\Istio", "User") -} -# Primero Desinstalamos cualquier cosa que haya en el cluster -if ($clean -eq $true) { - Write-Host "Cleaning previous helm releases..." -ForegroundColor Green - helm delete --purge $(helm ls -q) - kubectl delete -f istio-$ISTIO_VERSION/install/kubernetes/helm/istio/templates/crds.yaml -n istio-system - Write-Host "Previous releases deleted" -ForegroundColor Green -} - -Write-Host "Generating Kiali Credentials" -ForegroundColor Green -#generamos la credenciales para que kiali arranque sin problemas -kubectl -n istio-system create secret generic kiali --from-literal=username=$kialiuser --from-literal=passphrase=$kialipasswrd - - -Write-Host "Deploying Istio in the cluster" -ForegroundColor Green -helm install istio-$ISTIO_VERSION/install/kubernetes/helm/istio --wait --name istio --namespace istio-system --set global.controlPlaneSecurityEnabled=true --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true - -Write-Host "Setting Up Gateway" -kubectl delete gateway istio-autogenerated-k8s-ingress -n istio-system -kubectl apply -f ./istio/gateway.yml - -if ($useLocalk8s -eq $true) { - $dns="localhost" - $externalDns="localhost" -} -else { - Write-Host "Resolving DNS to Gateway public IP" -ForegroundColor Green - $ipaddress = $(kubectl get service istio-ingressgateway -n istio-system)[1] | %{ $_.Split(' ')[9];} - $query = "[?ipAddress!=null]|[?contains([ipAddress], '$ipaddress')].[id]" - $resid = az network public-ip list --query $query --output tsv - $jsonresponse = az network public-ip update --ids $resid --dns-name $dnsname - $externalDns = ($jsonresponse | ConvertFrom-Json).dnsSettings.fqdn - Write-Host "$externalDns is pointing to Cluster public ip $ipaddress" -} - -$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 - } -} -Write-Host "Begin eShopOnContainers installation using Helm" -ForegroundColor Green - -$infras = ("sql-data", "nosql-data", "rabbitmq", "keystore-data", "basket-data") -$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", "webhooks-api", "webhooks-web") - -if ($deployInfrastructure) { - foreach ($infra in $infras) { - Write-Host "Installing infrastructure: $infra" -ForegroundColor Green - helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$externalDns --name="$appName-$infra" $infra - } -} - -foreach ($chart in $charts) { - Write-Host "Installing: $chart" -ForegroundColor Green - if ($useCustomRegistry) { - 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 - } - else { - if ($chart -ne "eshop-common") { # eshop-common is ignored when no secret must be deployed - helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$externalDns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart - } - } -} - -Write-Host "helm charts installed." -ForegroundColor Green -Write-Host "Appling Virtual Services for routing." -ForegroundColor Green -kubectl apply -f ./istio/virtualservices.yml - -Remove-Item istio-$ISTIO_VERSION -Recurse -ErrorAction Ignore -Remove-Item istio-$ISTIO_VERSION.zip -Recurse -ErrorAction Ignore - - - - - - - diff --git a/deploy/k8s/nodeports/rabbitmq-admin.yaml b/deploy/k8s/nodeports/rabbitmq-admin.yaml new file mode 100644 index 000000000..30d2facf1 --- /dev/null +++ b/deploy/k8s/nodeports/rabbitmq-admin.yaml @@ -0,0 +1,12 @@ +kind: Service +apiVersion: v1 +metadata: + name: rabbitmq-admin +spec: + type: NodePort + selector: + app: rabbitmq + ports: + - port: 15672 + nodePort: 31672 + name: rabbitmq-port diff --git a/deploy/k8s/nodeports/sql-service.yaml b/deploy/k8s/nodeports/sql-service.yaml new file mode 100644 index 000000000..7b0233b68 --- /dev/null +++ b/deploy/k8s/nodeports/sql-service.yaml @@ -0,0 +1,12 @@ +kind: Service +apiVersion: v1 +metadata: + name: sql-service +spec: + type: NodePort + selector: + app: sql-data + ports: + - port: 1433 + nodePort: 31433 + name: sql-port