From 42ce19627004bb178167286fa3c50098f5ba5676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ram=C3=B3n=20Tom=C3=A1s?= Date: Mon, 16 Oct 2017 16:10:40 +0200 Subject: [PATCH 01/65] Updated SF Linux manifests --- .env | 3 +-- .../Bus/ApplicationParameters/Cloud.xml | 2 +- .../NoSQL/ApplicationParameters/Cloud.xml | 2 +- .../Redis/ApplicationParameters/Cloud.xml | 2 +- .../Sql/ApplicationParameters/Cloud.xml | 2 +- .../ApplicationManifest.xml | 6 ++++-- .../MarketingApiPkg/ServiceManifest.xml | 2 +- .../ApplicationParameters/Cloud.xml | 15 ++++++++------- .../ApplicationParameters/Cloud.xml | 2 +- .../WebMVCPkg/ServiceManifest.xml | 8 +++++++- .../ApplicationParameters/Cloud.xml | 2 +- .../ApplicationParameters/Cloud.xml | 2 +- .../WebStatusPkg/ServiceManifest.xml | 17 +++++++++-------- .../ApplicationParameters/Cloud.xml | 2 +- src/Services/Basket/Basket.API/Startup.cs | 10 +++++++--- src/Services/Catalog/Catalog.API/Startup.cs | 10 +++++++--- src/Services/Identity/Identity.API/Startup.cs | 10 +++++++--- src/Services/Location/Locations.API/Startup.cs | 10 +++++++--- src/Services/Marketing/Marketing.API/Startup.cs | 10 +++++++--- src/Services/Ordering/Ordering.API/Startup.cs | 10 +++++++--- src/Services/Payment/Payment.API/Startup.cs | 10 +++++++--- src/Web/WebMVC/Startup.cs | 10 +++++++--- src/Web/WebSPA/Startup.cs | 10 +++++++--- src/Web/WebStatus/Startup.cs | 10 +++++++--- 24 files changed, 108 insertions(+), 59 deletions(-) diff --git a/.env b/.env index 9deb66be7..a3fd59ffc 100644 --- a/.env +++ b/.env @@ -23,5 +23,4 @@ ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP=10.121.122.92 #ESHOP_AZURE_STORAGE_MARKETING_KEY= #ESHOP_SERVICE_BUS_USERNAME= #ESHOP_SERVICE_BUS_PASSWORD= -#INSTRUMENTATION_KEY= -#ORCHESTRATOR_TYPE= \ No newline at end of file +#INSTRUMENTATION_KEY= \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml index 8990ebec4..5a4c2828d 100644 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml index 246e938b5..8b48c39d1 100644 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml index 96eba3857..951ce24db 100644 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml index c59b1bdc4..3ad12232a 100644 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml index 608fd7a25..6cffab120 100644 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml +++ b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml @@ -12,7 +12,8 @@ - + + diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml index 01f86972a..d99e1573a 100644 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml @@ -1,7 +1,7 @@  - + diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml index 3b50ef8b6..fdeb6fd88 100644 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml @@ -1,7 +1,7 @@  - + diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml index 1c32dd6b0..26e50454b 100644 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml +++ b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml @@ -22,14 +22,15 @@ - - - - - - - - + + + + + + + + + diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml index f77d4b08e..f49e04e6b 100644 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml @@ -1,7 +1,7 @@  - + \ No newline at end of file diff --git a/src/Services/Basket/Basket.API/Startup.cs b/src/Services/Basket/Basket.API/Startup.cs index 190af72ee..f54db4697 100644 --- a/src/Services/Basket/Basket.API/Startup.cs +++ b/src/Services/Basket/Basket.API/Startup.cs @@ -209,13 +209,17 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => diff --git a/src/Services/Catalog/Catalog.API/Startup.cs b/src/Services/Catalog/Catalog.API/Startup.cs index 34738cd58..bfee8a8d2 100644 --- a/src/Services/Catalog/Catalog.API/Startup.cs +++ b/src/Services/Catalog/Catalog.API/Startup.cs @@ -207,13 +207,17 @@ private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => diff --git a/src/Services/Identity/Identity.API/Startup.cs b/src/Services/Identity/Identity.API/Startup.cs index dfb368fae..5e958b1b0 100644 --- a/src/Services/Identity/Identity.API/Startup.cs +++ b/src/Services/Identity/Identity.API/Startup.cs @@ -163,13 +163,17 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => diff --git a/src/Services/Location/Locations.API/Startup.cs b/src/Services/Location/Locations.API/Startup.cs index d2045e70a..645cabb73 100644 --- a/src/Services/Location/Locations.API/Startup.cs +++ b/src/Services/Location/Locations.API/Startup.cs @@ -181,13 +181,17 @@ namespace Microsoft.eShopOnContainers.Services.Locations.API private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => diff --git a/src/Services/Marketing/Marketing.API/Startup.cs b/src/Services/Marketing/Marketing.API/Startup.cs index 92bb95aad..da805f0e8 100644 --- a/src/Services/Marketing/Marketing.API/Startup.cs +++ b/src/Services/Marketing/Marketing.API/Startup.cs @@ -212,13 +212,17 @@ private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => diff --git a/src/Services/Ordering/Ordering.API/Startup.cs b/src/Services/Ordering/Ordering.API/Startup.cs index b5e2e1729..a61f7ed83 100644 --- a/src/Services/Ordering/Ordering.API/Startup.cs +++ b/src/Services/Ordering/Ordering.API/Startup.cs @@ -234,13 +234,17 @@ private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => diff --git a/src/Services/Payment/Payment.API/Startup.cs b/src/Services/Payment/Payment.API/Startup.cs index d3729a6f5..6f88785cc 100644 --- a/src/Services/Payment/Payment.API/Startup.cs +++ b/src/Services/Payment/Payment.API/Startup.cs @@ -110,13 +110,17 @@ namespace Payment.API private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => diff --git a/src/Web/WebMVC/Startup.cs b/src/Web/WebMVC/Startup.cs index d90cb82c9..0dd967e41 100644 --- a/src/Web/WebMVC/Startup.cs +++ b/src/Web/WebMVC/Startup.cs @@ -180,13 +180,17 @@ namespace Microsoft.eShopOnContainers.WebMVC private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => diff --git a/src/Web/WebSPA/Startup.cs b/src/Web/WebSPA/Startup.cs index 8750d4974..56e3118e7 100644 --- a/src/Web/WebSPA/Startup.cs +++ b/src/Web/WebSPA/Startup.cs @@ -134,13 +134,17 @@ namespace eShopConContainers.WebSPA private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => diff --git a/src/Web/WebStatus/Startup.cs b/src/Web/WebStatus/Startup.cs index 443c660e7..a17fd00f8 100644 --- a/src/Web/WebStatus/Startup.cs +++ b/src/Web/WebStatus/Startup.cs @@ -87,13 +87,17 @@ namespace WebStatus private void RegisterAppInsights(IServiceCollection services) { services.AddApplicationInsightsTelemetry(Configuration); - - if (Configuration.GetValue("OrchestratorType").Equals("K8S")) + var orchestratorType = Configuration.GetValue("OrchestratorType"); + if (string.IsNullOrEmpty(orchestratorType)) + { + return; + } + if (orchestratorType.ToUpper().Equals("K8S")) { // Enable K8s telemetry initializer services.EnableKubernetes(); } - if (Configuration.GetValue("OrchestratorType").Equals("SF")) + if (orchestratorType.ToUpper().Equals("SF")) { // Enable SF telemetry initializer services.AddSingleton((serviceProvider) => From 6db288dc7676c6a5ce8e2656d9f9d07776d3fff9 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 14:14:54 -0700 Subject: [PATCH 02/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 4b6920e42..016279e0a 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -1,8 +1,13 @@ -# Deploying Azure Service Fabric (No Secured) +# Deploying a Service Fabric cluster based on Windows nodes (No Secured) +You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster -The ARM template `servicefabricdeploy.json` and its parameter file (`servicefabricdeploy.parameters.json`) are used to create a service fabric cluster environment for windows containers. +However, when creating a cluster, there are quite a few configurations to take into account, like enabling the internal DNS service or Reverse Proxy service, choosing between Linux/Windows, open/publish your application ports in the load-balancer and most of all (the most complex setup) how to create a secure cluster. -## Editing servicefabricdeploy.parameters.json file +Because of those reasons, we have created a set of ARM templates and scripts so you can create, re-create and configure the SF clusters much faster, as explained below: + +Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\WindowsContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/WindowsContainers), you can find the ARM template `servicefabricdeploy.json` and its parameters file (`servicefabricdeploy.parameters.json`) to create a Service Fabric cluster environment for Windows Containers. + +## Edit the servicefabricdeploy.parameters.json file Edit the following params in `servicefabricdeploy.parameters.json` file to set your values: From d79e7e2dac3bff124d05c2f1bad473cb356997cc Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 14:14:59 -0700 Subject: [PATCH 03/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 5bdd86737..bfaf9c81a 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -1,6 +1,11 @@ -# Deploying Azure Service Fabric (No Secured) +# Deploying a Service Fabric cluster based on Linux nodes (No Secured) +You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster -The ARM template `servicefabricdeploy.json` and its parameter file (`servicefabricdeploy.parameters.json`) are used to create a service fabric cluster environment for linux containers. +However, when creating a cluster, there are quite a few configurations to take into account, like enabling the internal DNS service or Reverse Proxy service, choosing between Linux/Windows, open/publish your application ports in the load-balancer and most of all (the most complex setup) how to create a secure cluster. + +Because of those reasons, we have created a set of ARM templates and scripts so you can create, re-create and configure the SF clusters much faster, as explained below: + +Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\LinuxContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/LinuxContainers), you can find the ARM template `servicefabricdeploy.json` and its parameters file (`servicefabricdeploy.parameters.json`) to create a Service Fabric cluster environment for Linux Containers. ## Editing servicefabricdeploy.parameters.json file From c16b1120a09185bdb98099464b33ac95da0be748 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 14:38:54 -0700 Subject: [PATCH 04/65] Update readme.md --- .../servicefabric/WindowsContainers/readme.md | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 016279e0a..c995883dc 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -12,26 +12,33 @@ Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\ Edit the following params in `servicefabricdeploy.parameters.json` file to set your values: - clusterName: Name of your SF cluster +- clusterLocation: Datacenter location, like westus or westeurope +- computeLocation: Datacenter location, like westus or westeurope +- adminUserName: user-name for VMs administration +- adminPassword: user-password for VMs administration - dnsName: Name assigned to your SF dns -- adminUserName: user name for administration -- adminPassword: user password for administration -Optionally, you can modify which ports are opened in the LoadBalancer for accessing externally to the apps: - -- webMvcHttpPort: port externally exposed for the WebMVC app -- webSpaHttpPort: port externally exposed for the WebSPA app -- webStatusHttpPort: port externally exposed for the WebStatus app -- IdSrvHttpRule: port externally exposed for the Identity app +Optionally, you could modify which ports are opened in the LoadBalancer for the multiple eShopOnContainer apps and API services. +By default, they are setup as: +- webMvcHttpPort: 5100 +- webSpaHttpPort: 5104 +- webStatusHttpPort: 5107 +- IdSrvHttpRule: 5105 +- BasketApiHttpRule: 5103 +- CatalogApiHttpRule: 5101 +- OrderingApiHttpRule: 5102 +- MarketingApiHttpRule: 5110 +- LocationsApiHttpRule: 5109 ## Deploy the template Once parameter file is edited you can deploy it using [create-resources script](../readme.md). -i. e. if you are in windows, to deploy sql databases in a new resourcegroup located in westus, go to `deploy\az` folder and type: - +For example, to deploy the cluster to a new resourcegroup located in westus, go to `deploy\az` folder and type: ``` create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploy newResourceGroup -c westus ``` + ## Deploy eShopOnServiceFabric with Visual Studio. Alternatively, instead of using ARM templates, you can deploy eShop on service fabric directly by publishing the project eShopOnServiceFabric in eShopOnContainers-ServicesAndWebApps.sln with Visual Studio publish tool. From 94a64fd3825d3898eba4be947d42566812db4b73 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 14:38:58 -0700 Subject: [PATCH 05/65] Update readme.md --- .../servicefabric/LinuxContainers/readme.md | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index bfaf9c81a..0c29b50cc 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -7,31 +7,39 @@ Because of those reasons, we have created a set of ARM templates and scripts so Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\LinuxContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/LinuxContainers), you can find the ARM template `servicefabricdeploy.json` and its parameters file (`servicefabricdeploy.parameters.json`) to create a Service Fabric cluster environment for Linux Containers. -## Editing servicefabricdeploy.parameters.json file +## Edit the servicefabricdeploy.parameters.json file Edit the following params in `servicefabricdeploy.parameters.json` file to set your values: - clusterName: Name of your SF cluster +- clusterLocation: Datacenter location, like westus or westeurope +- computeLocation: Datacenter location, like westus or westeurope +- adminUserName: user-name for VMs administration +- adminPassword: user-password for VMs administration - dnsName: Name assigned to your SF dns -- adminUserName: user name for administration -- adminPassword: user password for administration -Optionally, you can modify which ports are opened in the LoadBalancer for accessing externally to the apps: - -- webMvcHttpPort: port externally exposed for the WebMVC app -- webSpaHttpPort: port externally exposed for the WebSPA app -- webStatusHttpPort: port externally exposed for the WebStatus app -- IdSrvHttpRule: port externally exposed for the Identity app +Optionally, you could modify which ports are opened in the LoadBalancer for the multiple eShopOnContainer apps and API services. +By default, they are setup as: +- webMvcHttpPort: 5100 +- webSpaHttpPort: 5104 +- webStatusHttpPort: 5107 +- IdSrvHttpRule: 5105 +- BasketApiHttpRule: 5103 +- CatalogApiHttpRule: 5101 +- OrderingApiHttpRule: 5102 +- MarketingApiHttpRule: 5110 +- LocationsApiHttpRule: 5109 ## Deploy the template Once parameter file is edited you can deploy it using [create-resources script](../readme.md). -i. e. if you are in windows, to deploy sql databases in a new resourcegroup located in westus, go to `deploy\az` folder and type: +For example, to deploy the cluster to a new resourcegroup located in westus, go to `deploy\az` folder and type: ``` create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploy newResourceGroup -c westus ``` + ## Deploy eShopOnServiceFabric with Visual Studio. Alternatively, instead of using ARM templates, you can deploy eShop on service fabric directly by publishing the project eShopOnServiceFabric in eShopOnContainers-ServicesAndWebApps.sln with Visual Studio publish tool. From 788eee408346791c9b38d0919317b10bc8d129fe Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 14:45:52 -0700 Subject: [PATCH 06/65] Update for servicefabricdeploy.parameters.json files for Windows and Linux --- .../servicefabricdeploy.parameters.json | 10 +++++----- .../servicefabricdeploy.parameters.json | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json index d905f2d00..5e938823b 100644 --- a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json +++ b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json @@ -3,19 +3,19 @@ "contentVersion": "1.0.0.0", "parameters": { "clusterName": { - "value": "your_sf_name" + "value": "eshopsflinux" }, "clusterLocation": { - "value": "westeurope" + "value": "westus" }, "computeLocation": { - "value": "westeurope" + "value": "westus" }, "adminUserName": { "value": "eshop" }, "adminPassword": { - "value": "your_admin_password" + "value": "your_password" }, "nicName": { "value": "NIC-eshoponsflin" @@ -24,7 +24,7 @@ "value": "eshoponsflin-PubIP" }, "dnsName": { - "value": "your_sf_dns" + "value": "eshopsflinux" }, "virtualNetworkName": { "value": "VNet-eshoponsflin" diff --git a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json index bf1b89642..97b5b8b27 100644 --- a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json +++ b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json @@ -3,13 +3,13 @@ "contentVersion": "1.0.0.0", "parameters": { "clusterName": { - "value": "eshoponservicefabric" + "value": "eshopsfwindows" }, "clusterLocation": { - "value": "westeurope" + "value": "westus" }, "computeLocation": { - "value": "westeurope" + "value": "westus" }, "adminUserName": { "value": "eshop" @@ -24,7 +24,7 @@ "value": "eshopsfwin-PubIP" }, "dnsName": { - "value": "eshoponservicefabric" + "value": "eshopsfwindows" }, "virtualNetworkName": { "value": "VNet-eshopsfwin" From 40cd4f29ea903c9088b2a2554e68bc1cc3b53d40 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 14:59:57 -0700 Subject: [PATCH 07/65] Updates to servicefabricdeploy.parameters.json file --- .../LinuxContainers/servicefabricdeploy.parameters.json | 4 ++-- .../WindowsContainers/servicefabricdeploy.parameters.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json index 5e938823b..7e88f32c4 100644 --- a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json +++ b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "clusterName": { - "value": "eshopsflinux" + "value": "qa-eshop-sflinux-cluster" }, "clusterLocation": { "value": "westus" @@ -24,7 +24,7 @@ "value": "eshoponsflin-PubIP" }, "dnsName": { - "value": "eshopsflinux" + "value": "qa-eshop-sflinux-cluster" }, "virtualNetworkName": { "value": "VNet-eshoponsflin" diff --git a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json index 97b5b8b27..e14e07606 100644 --- a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json +++ b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "clusterName": { - "value": "eshopsfwindows" + "value": "qa-eshop-sfwin-cluster" }, "clusterLocation": { "value": "westus" @@ -24,7 +24,7 @@ "value": "eshopsfwin-PubIP" }, "dnsName": { - "value": "eshopsfwindows" + "value": "qa-eshop-sfwin-cluster" }, "virtualNetworkName": { "value": "VNet-eshopsfwin" From 6e1e3c63658ae040c61b1a5518dc77637d74f39a Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:07:24 -0700 Subject: [PATCH 08/65] Update to servicefabricdeploy.parameters.json file for Windows --- .../WindowsContainers/servicefabricdeploy.parameters.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json index e14e07606..98632308d 100644 --- a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json +++ b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json @@ -36,10 +36,10 @@ "value": "LBIP-eshopsfwin" }, "applicationDiagnosticsStorageAccountName": { - "value": "sfdgeshopsfwin6744" + "value": "sfdgqaeshopsfwin" }, "supportLogStorageAccountName": { - "value": "sflogseshopsfwin3480" + "value": "sflogsqaeshopsfwin" }, "vmImageSku": { "value": "2016-Datacenter-with-Containers" From 0c4fee24a6642e51156be8b8313121ca1d7d9032 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:17:45 -0700 Subject: [PATCH 09/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index c995883dc..2cc4d9334 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -30,13 +30,13 @@ By default, they are setup as: - MarketingApiHttpRule: 5110 - LocationsApiHttpRule: 5109 -## Deploy the template +## Deploy the Service Fabric cluster using the script and ARM templates Once parameter file is edited you can deploy it using [create-resources script](../readme.md). -For example, to deploy the cluster to a new resourcegroup located in westus, go to `deploy\az` folder and type: +For example, to deploy the cluster to a new resourcegroup located in westus, using the Command Prompt, go to `deploy\az` folder and type: ``` -create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploy newResourceGroup -c westus +create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploy qa-eshop-sfwin-resgrp -c westus ``` ## Deploy eShopOnServiceFabric with Visual Studio. From 75599dc88593bacd772f91908f788d64926b1b1b Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:17:49 -0700 Subject: [PATCH 10/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 0c29b50cc..1e683f96c 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -30,14 +30,14 @@ By default, they are setup as: - MarketingApiHttpRule: 5110 - LocationsApiHttpRule: 5109 -## Deploy the template +## Deploy the Service Fabric cluster using the script and ARM templates Once parameter file is edited you can deploy it using [create-resources script](../readme.md). For example, to deploy the cluster to a new resourcegroup located in westus, go to `deploy\az` folder and type: ``` -create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploy newResourceGroup -c westus +create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploy qa-eshop-sflinux-resgrp -c westus ``` ## Deploy eShopOnServiceFabric with Visual Studio. From 59e9d9f276042f4ad82f6f3e7674f893806f09c4 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:21:31 -0700 Subject: [PATCH 11/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 2cc4d9334..1cb69f943 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -1,4 +1,7 @@ -# Deploying a Service Fabric cluster based on Windows nodes (No Secured) +# Deploying a Service Fabric cluster based on Windows nodes + +## A. Not secured cluster (SF Windows cluster) +For a secured cluster, see option B. below. You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster However, when creating a cluster, there are quite a few configurations to take into account, like enabling the internal DNS service or Reverse Proxy service, choosing between Linux/Windows, open/publish your application ports in the load-balancer and most of all (the most complex setup) how to create a secure cluster. @@ -43,7 +46,7 @@ create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploy qa-esho Alternatively, instead of using ARM templates, you can deploy eShop on service fabric directly by publishing the project eShopOnServiceFabric in eShopOnContainers-ServicesAndWebApps.sln with Visual Studio publish tool. -# Deploying Azure Service Fabric (Secured) +## B. Secured cluster (SF Windows cluster) The ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) are used to create a service fabric cluster environment for windows containers secured with a certificate. From 9cfe8f87ea5da21952b2e5ea7d3709a6ce7249c1 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:21:36 -0700 Subject: [PATCH 12/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 1e683f96c..969acf0b7 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -1,4 +1,7 @@ -# Deploying a Service Fabric cluster based on Linux nodes (No Secured) +# Deploying a Service Fabric cluster based on Linux nodes + +## A. Not secured cluster (SF Linux cluster) +For a secured cluster, see option B. below. You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster However, when creating a cluster, there are quite a few configurations to take into account, like enabling the internal DNS service or Reverse Proxy service, choosing between Linux/Windows, open/publish your application ports in the load-balancer and most of all (the most complex setup) how to create a secure cluster. @@ -44,7 +47,7 @@ create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploy qa-eshop- Alternatively, instead of using ARM templates, you can deploy eShop on service fabric directly by publishing the project eShopOnServiceFabric in eShopOnContainers-ServicesAndWebApps.sln with Visual Studio publish tool. -# Deploying Azure Service Fabric (Secured) +## B. Secured cluster (SF Linux cluster) The ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) are used to create a service fabric cluster environment for linux containers secured with a certificate. From ad5b4c5c267b441105cb5e2465480539192968f0 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:26:34 -0700 Subject: [PATCH 13/65] Updates to servicefabricdeploy.parameters.json files --- .../LinuxContainers/servicefabricdeploy.parameters.json | 2 +- .../WindowsContainers/servicefabricdeploy.parameters.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json index 7e88f32c4..0e37d24ec 100644 --- a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json +++ b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json @@ -15,7 +15,7 @@ "value": "eshop" }, "adminPassword": { - "value": "your_password" + "value": "Your_complex_Pass@word1" }, "nicName": { "value": "NIC-eshoponsflin" diff --git a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json index 98632308d..2c214b754 100644 --- a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json +++ b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json @@ -15,7 +15,7 @@ "value": "eshop" }, "adminPassword": { - "value": "your_password" + "value": "Your_complex_Pass@word1" }, "nicName": { "value": "NIC-eshopsfwin" From 795edefab57e828ef5f7fd8620e10edc95c2887a Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:32:02 -0700 Subject: [PATCH 14/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 969acf0b7..bdc9a58f0 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -2,6 +2,7 @@ ## A. Not secured cluster (SF Linux cluster) For a secured cluster, see option B. below. + You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster However, when creating a cluster, there are quite a few configurations to take into account, like enabling the internal DNS service or Reverse Proxy service, choosing between Linux/Windows, open/publish your application ports in the load-balancer and most of all (the most complex setup) how to create a secure cluster. @@ -43,6 +44,9 @@ For example, to deploy the cluster to a new resourcegroup located in westus, go create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploy qa-eshop-sflinux-resgrp -c westus ``` +You should see a similar execution to the following: +![image](https://user-images.githubusercontent.com/1712635/31638180-15da9f84-b287-11e7-9d4e-604f33690198.png) + ## Deploy eShopOnServiceFabric with Visual Studio. Alternatively, instead of using ARM templates, you can deploy eShop on service fabric directly by publishing the project eShopOnServiceFabric in eShopOnContainers-ServicesAndWebApps.sln with Visual Studio publish tool. From 3249ce3595626f81ecc23bdf4d4a1e5b3a8a334f Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:33:55 -0700 Subject: [PATCH 15/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index bdc9a58f0..9d39f1510 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -47,9 +47,6 @@ create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploy qa-eshop- You should see a similar execution to the following: ![image](https://user-images.githubusercontent.com/1712635/31638180-15da9f84-b287-11e7-9d4e-604f33690198.png) -## Deploy eShopOnServiceFabric with Visual Studio. - -Alternatively, instead of using ARM templates, you can deploy eShop on service fabric directly by publishing the project eShopOnServiceFabric in eShopOnContainers-ServicesAndWebApps.sln with Visual Studio publish tool. ## B. Secured cluster (SF Linux cluster) From 181efb3da2493f4b7746f05799adebeb934c0183 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:33:59 -0700 Subject: [PATCH 16/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 1cb69f943..d2970452a 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -2,6 +2,7 @@ ## A. Not secured cluster (SF Windows cluster) For a secured cluster, see option B. below. + You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster However, when creating a cluster, there are quite a few configurations to take into account, like enabling the internal DNS service or Reverse Proxy service, choosing between Linux/Windows, open/publish your application ports in the load-balancer and most of all (the most complex setup) how to create a secure cluster. @@ -42,9 +43,8 @@ For example, to deploy the cluster to a new resourcegroup located in westus, usi create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploy qa-eshop-sfwin-resgrp -c westus ``` -## Deploy eShopOnServiceFabric with Visual Studio. +You should see a similar execution to the following: -Alternatively, instead of using ARM templates, you can deploy eShop on service fabric directly by publishing the project eShopOnServiceFabric in eShopOnContainers-ServicesAndWebApps.sln with Visual Studio publish tool. ## B. Secured cluster (SF Windows cluster) From 33c0cee673df9d78769d8b25c01c8a059d45c867 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:40:25 -0700 Subject: [PATCH 17/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 9d39f1510..2c631ad4d 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -47,6 +47,9 @@ create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploy qa-eshop- You should see a similar execution to the following: ![image](https://user-images.githubusercontent.com/1712635/31638180-15da9f84-b287-11e7-9d4e-604f33690198.png) +Now, if you go to your subscription in Azure, you should be able to see the SF cluster already created and available, like in the following image: + +![image](https://user-images.githubusercontent.com/1712635/31638398-3fc08ad8-b288-11e7-879b-fc4df0daad2b.png) ## B. Secured cluster (SF Linux cluster) From 09771724f435d9ebb1441439fe05d4d2517b9273 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:44:34 -0700 Subject: [PATCH 18/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 2c631ad4d..97212132a 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -51,6 +51,8 @@ Now, if you go to your subscription in Azure, you should be able to see the SF c ![image](https://user-images.githubusercontent.com/1712635/31638398-3fc08ad8-b288-11e7-879b-fc4df0daad2b.png) +In this case, this is an unsecured SF cluster with a single node, good for initial tests and getting started with SF. + ## B. Secured cluster (SF Linux cluster) The ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) are used to create a service fabric cluster environment for linux containers secured with a certificate. From 124fd82145153d764250cc2f5a85bbfb34573cf4 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:46:13 -0700 Subject: [PATCH 19/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 97212132a..0dd30eaf9 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -51,7 +51,7 @@ Now, if you go to your subscription in Azure, you should be able to see the SF c ![image](https://user-images.githubusercontent.com/1712635/31638398-3fc08ad8-b288-11e7-879b-fc4df0daad2b.png) -In this case, this is an unsecured SF cluster with a single node, good for initial tests and getting started with SF. +In this case, this is an unsecured SF cluster with a single Linux node, good for initial tests and getting started with SF. ## B. Secured cluster (SF Linux cluster) From 0e855cd74f730f87025bfe5f4cc858a39eb66c49 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:51:06 -0700 Subject: [PATCH 20/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 0dd30eaf9..9b3132757 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -55,6 +55,8 @@ In this case, this is an unsecured SF cluster with a single Linux node, good for ## B. Secured cluster (SF Linux cluster) +Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\LinuxContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/LinuxContainers), you can find the ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) to create a secured Service Fabric cluster environment for Linux Containers (IN THIS CASE, IT IS A SECURED CLUSTER USING A CERTIFICATE). + The ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) are used to create a service fabric cluster environment for linux containers secured with a certificate. ## Create Azure Keyvault service From fa92ab00bf3afe01ffdddafb6d4e06e3065e0d75 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:51:10 -0700 Subject: [PATCH 21/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index d2970452a..79bd8621c 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -9,7 +9,7 @@ However, when creating a cluster, there are quite a few configurations to take i Because of those reasons, we have created a set of ARM templates and scripts so you can create, re-create and configure the SF clusters much faster, as explained below: -Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\WindowsContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/WindowsContainers), you can find the ARM template `servicefabricdeploy.json` and its parameters file (`servicefabricdeploy.parameters.json`) to create a Service Fabric cluster environment for Windows Containers. +Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\WindowsContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/WindowsContainers), you can find the ARM template `servicefabricdeploy.json` and its parameters file (`servicefabricdeploy.parameters.json`) to create a Service Fabric cluster environment for Windows Containers (NOT SECURED CLUSTER). ## Edit the servicefabricdeploy.parameters.json file @@ -44,11 +44,18 @@ create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploy qa-esho ``` You should see a similar execution to the following: +++++++++++++ IMAGE TBD ++++++++++++++ + +Now, if you go to your subscription in Azure, you should be able to see the SF cluster already created and available, like in the following image: + +++++++++++++ IMAGE TBD ++++++++++++++ + +In this case, this is an unsecured SF cluster with a single Windows node, good for initial tests and getting started with SF. ## B. Secured cluster (SF Windows cluster) -The ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) are used to create a service fabric cluster environment for windows containers secured with a certificate. +Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\WindowsContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/WindowsContainers), you can find the ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) to create a secured Service Fabric cluster environment for Windows Containers (IN THIS CASE, IT IS A SECURED CLUSTER USING A CERTIFICATE). ## Create Azure Keyvault service Go to PortalAzure and create a Keyvault service. Make sure Enable access for deployment checkboxes are selected. From 369b68bae184d7df557fb1d3ba2a5289ecc516fc Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:52:28 -0700 Subject: [PATCH 22/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 79bd8621c..058ea06f4 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -1,6 +1,6 @@ # Deploying a Service Fabric cluster based on Windows nodes -## A. Not secured cluster (SF Windows cluster) +## A. Unsecured cluster (SF Windows cluster) For a secured cluster, see option B. below. You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster From 4895983e553690b99cb31946eb6d3e9effe668d0 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:52:31 -0700 Subject: [PATCH 23/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 9b3132757..7c9cdad1c 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -1,6 +1,6 @@ # Deploying a Service Fabric cluster based on Linux nodes -## A. Not secured cluster (SF Linux cluster) +## A. Unsecured cluster (SF Linux cluster) For a secured cluster, see option B. below. You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster From 03d6a2abf14841cf0e55a875a37d630444fa0e51 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:58:25 -0700 Subject: [PATCH 24/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 7c9cdad1c..b916a5ecf 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -62,7 +62,7 @@ The ARM template `servicefabricdeploysecured.json` and its parameter file (`serv ## Create Azure Keyvault service Go to PortalAzure and create a Keyvault service. Make sure Enable access for deployment checkboxes are selected. - +![image](https://user-images.githubusercontent.com/1712635/31638848-9b266530-b28a-11e7-953b-1e3ec1a54f77.png) ## Generate a certificate in Azure Keyvault Execute the gen-keyvaultcert.ps1 script to generate and download a certificate from Keyvault. From 5ee8a35c398b8465734b9d6642429cf2db0f1189 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 15:58:28 -0700 Subject: [PATCH 25/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 058ea06f4..2947237b6 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -60,7 +60,7 @@ Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\ ## Create Azure Keyvault service Go to PortalAzure and create a Keyvault service. Make sure Enable access for deployment checkboxes are selected. - +![image](https://user-images.githubusercontent.com/1712635/31638848-9b266530-b28a-11e7-953b-1e3ec1a54f77.png) ## Generate a certificate in Azure Keyvault Execute the gen-keyvaultcert.ps1 script to generate and download a certificate from Keyvault. From 524f4b459ca05499e744c5f35a5f18da9a717f72 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 16:04:18 -0700 Subject: [PATCH 26/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 2947237b6..1d09b1d6c 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -44,11 +44,11 @@ create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploy qa-esho ``` You should see a similar execution to the following: -++++++++++++ IMAGE TBD ++++++++++++++ +![image](https://user-images.githubusercontent.com/1712635/31638979-4881d7aa-b28b-11e7-873c-e1185043a9eb.png) Now, if you go to your subscription in Azure, you should be able to see the SF cluster already created and available, like in the following image: -++++++++++++ IMAGE TBD ++++++++++++++ +![image](https://user-images.githubusercontent.com/1712635/31639043-9b26c786-b28b-11e7-8d59-eeea97f74176.png) In this case, this is an unsecured SF cluster with a single Windows node, good for initial tests and getting started with SF. From ab1bb8bc75893a8ea4739fcac0bcb33f3efa4349 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 16:41:31 -0700 Subject: [PATCH 27/65] Update readme.md --- .../servicefabric/WindowsContainers/readme.md | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 1d09b1d6c..9e42be2d7 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -63,12 +63,33 @@ Go to PortalAzure and create a Keyvault service. Make sure Enable access for dep ![image](https://user-images.githubusercontent.com/1712635/31638848-9b266530-b28a-11e7-953b-1e3ec1a54f77.png) ## Generate a certificate in Azure Keyvault -Execute the gen-keyvaultcert.ps1 script to generate and download a certificate from Keyvault. +In a POWER-SHELL window, move to the folder [..\deploy\az\servicefabric\WindowsContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/WindowsContainers). + +**Select your Azure subscription** You might have [several Azure subscriptions](https://docs.microsoft.com/en-us/cli/azure/account#set) as shown if you type the following. + + >``` + >az account list + >``` + If you have multiple subscription accounts, you first need to select the Azure subscription account you want to target. Type the following: + >``` + >az account set --subscription "Your Azure Subscription Name or ID" + >``` + +**Execute the gen-keyvaultcert.ps1 script** to generate and download a certificate from Keyvault. +Make sure you're going to run it against the Azure subscription you mean it. + +You might need to authenticate from the browser when running this PowerShell script. ``` -.\gen-keyvaultcert.ps1 -vaultName -certName -certPwd -subjectName CN=.westeurope.cloudapp.azure.com -saveDir C:\Users\\Downloads +.\gen-keyvaultcert.ps1 -vaultName -certName -certPwd -subjectName CN=.westus.cloudapp.azure.com -saveDir C:\Users\\Downloads ``` +You should see a similar execution to the following: + +![image](https://user-images.githubusercontent.com/1712635/31639818-a50ab63c-b28f-11e7-8791-bcfadeed5a56.png) + +IMPORTANT: At this point, copy/cut the .PFX certifiacte file saved in the downloads forlder and save it in a secure place. + ## Install the certificate Install the certificate under 'Current User' store location and check it as exportable. From d0225a6d87ee119242eb377aee4249d97eb9b99d Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 16:47:48 -0700 Subject: [PATCH 28/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 9e42be2d7..585ffbdc5 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -85,8 +85,7 @@ You might need to authenticate from the browser when running this PowerShell scr ``` You should see a similar execution to the following: - -![image](https://user-images.githubusercontent.com/1712635/31639818-a50ab63c-b28f-11e7-8791-bcfadeed5a56.png) +![image](https://user-images.githubusercontent.com/1712635/31640172-93efcca0-b291-11e7-970e-5b5e6bf07042.png) IMPORTANT: At this point, copy/cut the .PFX certifiacte file saved in the downloads forlder and save it in a secure place. From 0bd23e21f4c1a252f296c319d1e775641513f4dd Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 17:02:50 -0700 Subject: [PATCH 29/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 585ffbdc5..0acd8716a 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -90,7 +90,7 @@ You should see a similar execution to the following: IMPORTANT: At this point, copy/cut the .PFX certifiacte file saved in the downloads forlder and save it in a secure place. ## Install the certificate -Install the certificate under 'Current User' store location and check it as exportable. +Install the certificate (by double-clicking on the .PFX file) under 'Current User' store location (by default location) and check it as exportable. From 6a3ab0e72c241c1f6bf229a70f7e6b6a5db34f63 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 17:02:55 -0700 Subject: [PATCH 30/65] Update readme.md --- .../servicefabric/LinuxContainers/readme.md | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index b916a5ecf..51fc0dc7a 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -65,14 +65,32 @@ Go to PortalAzure and create a Keyvault service. Make sure Enable access for dep ![image](https://user-images.githubusercontent.com/1712635/31638848-9b266530-b28a-11e7-953b-1e3ec1a54f77.png) ## Generate a certificate in Azure Keyvault +In a POWER-SHELL window, move to the folder [..\deploy\az\servicefabric\LinuxContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/LinuxContainers). + +**Select your Azure subscription** You might have [several Azure subscriptions](https://docs.microsoft.com/en-us/cli/azure/account#set) as shown if you type the following. + + >``` + >az account list + >``` + If you have multiple subscription accounts, you first need to select the Azure subscription account you want to target. Type the following: + >``` + >az account set --subscription "Your Azure Subscription Name or ID" + >``` + Execute the gen-keyvaultcert.ps1 script to generate and download a certificate from Keyvault. ``` .\gen-keyvaultcert.ps1 -vaultName -certName -certPwd -subjectName CN=.westeurope.cloudapp.azure.com -saveDir C:\Users\\Downloads ``` + +You should see a similar execution to the following: +![image](https://user-images.githubusercontent.com/1712635/31640172-93efcca0-b291-11e7-970e-5b5e6bf07042.png) + +IMPORTANT: At this point, copy/cut the .PFX certifiacte file saved in the downloads forlder and save it in a secure place. + ## Install the certificate -Install the certificate under 'Current User' store location and check it as exportable. +Install the certificate (by double-clicking on the .PFX file) under 'Current User' store location (by default location) and check it as exportable. From f0f56c3d478b7d1b9abad182d35a15a8e64343fa Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 17:05:01 -0700 Subject: [PATCH 31/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 51fc0dc7a..2014352ae 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -92,7 +92,7 @@ IMPORTANT: At this point, copy/cut the .PFX certifiacte file saved in the downlo ## Install the certificate Install the certificate (by double-clicking on the .PFX file) under 'Current User' store location (by default location) and check it as exportable. - + ## Editing servicefabricdeploysecured.parameters.json file From e41b1c3261cb35f52d78985f79fd63756df3b95b Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 17:17:44 -0700 Subject: [PATCH 32/65] Updates to servicefabricdeploysecured.parameters.json files --- ...servicefabricdeploysecured.parameters.json | 16 +++++++-------- ...servicefabricdeploysecured.parameters.json | 20 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json index 4a783768e..9f8a82c80 100644 --- a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json +++ b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json @@ -3,19 +3,19 @@ "contentVersion": "1.0.0.0", "parameters": { "clusterName": { - "value": "your_sf_name" + "value": "pro-eshop-sflinux-cluster" }, "clusterLocation": { - "value": "westeurope" + "value": "westus" }, "computeLocation": { - "value": "westeurope" + "value": "westus" }, "adminUserName": { "value": "eshop" }, "adminPassword": { - "value": "your_admin_password" + "value": "Your_complex_Pass@word1" }, "nicName": { "value": "NIC-eshopsflinsec" @@ -24,7 +24,7 @@ "value": "eshopsflinsec-PubIP" }, "dnsName": { - "value": "your_sf_dns" + "value": "pro-eshop-sflinux-cluster" }, "virtualNetworkName": { "value": "VNet-eshopsflinsec" @@ -36,13 +36,13 @@ "value": "LBIP-eshopsflinsec" }, "sourceVaultValue": { - "value": "" + "value": "your-value-check-keyvault-at-azure" }, "certificateUrlValue": { - "value": "" + "value": "your-value-check-keyvault-at-azure" }, "certificateThumbprint": { - "value": "" + "value": "your-value-check-keyvault-at-azure" }, "vmImageSku": { "value": "16.04-LTS" diff --git a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json index 2092ebd9a..bbc8eb663 100644 --- a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json +++ b/deploy/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json @@ -3,19 +3,19 @@ "contentVersion": "1.0.0.0", "parameters": { "clusterName": { - "value": "your_sf_name" + "value": "pro-eshop-sfwin-cluster" }, "clusterLocation": { - "value": "westeurope" + "value": "westus" }, "computeLocation": { - "value": "westeurope" + "value": "westus" }, "adminUserName": { "value": "eshop" }, "adminPassword": { - "value": "your_admin_password" + "value": "Your_complex_Pass@word1" }, "nicName": { "value": "NIC-eshopsfwin" @@ -24,7 +24,7 @@ "value": "eshopsfwin-PubIP" }, "dnsName": { - "value": "your_sf_dns" + "value": "pro-eshop-sfwin-cluster" }, "virtualNetworkName": { "value": "VNet-eshopsfwin" @@ -36,19 +36,19 @@ "value": "LBIP-eshopsfwin" }, "applicationDiagnosticsStorageAccountName": { - "value": "sfdgeshopsfwin6744" + "value": "sfdgqaeshopsfwinsec" }, "supportLogStorageAccountName": { - "value": "sflogseshopsfwin3480" + "value": "sflogsqaeshopsfwinsec" }, "sourceVaultValue": { - "value": "" + "value": "your-value-check-keyvault-at-azure" }, "certificateUrlValue": { - "value": "" + "value": "your-value-check-keyvault-at-azure" }, "certificateThumbprint": { - "value": "" + "value": "your-value-check-keyvault-at-azure" }, "vmImageSku": { "value": "2016-Datacenter-with-Containers" From 9f1316db10e2302d1df1adb7a43475c1303c9e7b Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 17:21:47 -0700 Subject: [PATCH 33/65] Update to servicefabricdeploysecured.parameters.json file --- .../servicefabricdeploysecured.parameters.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json index 9f8a82c80..65875cb31 100644 --- a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json +++ b/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json @@ -15,7 +15,7 @@ "value": "eshop" }, "adminPassword": { - "value": "Your_complex_Pass@word1" + "value": "Pass@word1" }, "nicName": { "value": "NIC-eshopsflinsec" @@ -27,13 +27,13 @@ "value": "pro-eshop-sflinux-cluster" }, "virtualNetworkName": { - "value": "VNet-eshopsflinsec" + "value": "VNet-eshopsflin" }, "lbName": { - "value": "LB-eshopsflinsec" + "value": "LB-eshopsflin" }, "lbIPName": { - "value": "LBIP-eshopsflinsec" + "value": "LBIP-eshopsflin" }, "sourceVaultValue": { "value": "your-value-check-keyvault-at-azure" From 5efdc73695064e6f76ff1e043f19933a43da500d Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 17:52:05 -0700 Subject: [PATCH 34/65] Update readme.md --- .../servicefabric/WindowsContainers/readme.md | 21 ++++++------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 0acd8716a..9d0326fdd 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -96,22 +96,13 @@ Install the certificate (by double-clicking on the .PFX file) under 'Current Use ## Editing servicefabricdeploysecured.parameters.json file -Edit the following params in `servicefabricdeploysecured.parameters.json` file to set your values: +Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar way you can do with tthe unsecured .json file shown above (clusterName, dnsName, etc.), plus edit the following values: -- clusterName: Name of your SF cluster -- dnsName: Name assigned to your SF dns -- adminUserName: user name for administration -- adminPassword: user password for administration -- sourceVaultValue: keyvault resource id (check azure keyvault properties) -- certificateUrlValue: certificate url (check azure Keyvault certificate properties) -- certificateThumbprint: certificate thumbprint (check azure Keyvault certificate properties) - -Optionally, you can modify which ports are opened in the LoadBalancer for accessing externally to the apps: - -- webMvcHttpPort: port externally exposed for the WebMVC app -- webSpaHttpPort: port externally exposed for the WebSPA app -- webStatusHttpPort: port externally exposed for the WebStatus app -- IdSrvHttpRule: port externally exposed for the Identity app +- sourceVaultValue: Your Azure Keyvault's RESOURCE ID (check Azure keyvault properties, similar to: /subscriptions/e1234ac1-c09c-3jaf-6767-98b3c5f1f246/resourceGroups/eshop-global-resgrp/providers/Microsoft.KeyVault/vaults/eshopkeyvault") + +- certificateUrlValue: Your certificate Secret Identifier (check Azure Keyvault secret certificate properties, should be in the format of https://.vault.azure.net:443/secrets/, similar to: https://eshopkeyvault.vault.azure.net/secrets/pro-eshop-sfwin-cluster-cert/4d087088df974e869f1c0978cb100e47) + +- certificateThumbprint: certificate thumbprint (check azure Keyvault certificate thumbprint, something like 69JK453486D55A6818577Z0699100365HDK70FCE) ## Deploy the template From d114e1448a1c8d458ba81c578a15510d976aa19e Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 18:09:26 -0700 Subject: [PATCH 35/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 9d0326fdd..44055ecd5 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -104,14 +104,20 @@ Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar - certificateThumbprint: certificate thumbprint (check azure Keyvault certificate thumbprint, something like 69JK453486D55A6818577Z0699100365HDK70FCE) -## Deploy the template +## Deploy the secured SF cluster (Windows nodes) Once parameter file is edited you can deploy it using [create-resources script](../readme.md). +Use a command prompt window positioned into the deploy\az folder. ``` -create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploysecured newResourceGroup -c westus +create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploysecured pro-eshop-sfwin-resgrp -c westus ``` -## Deploy eShopOnServiceFabric with Visual Studio. +The execution should be something like the following: + +![image](https://user-images.githubusercontent.com/1712635/31641955-0bc9d59e-b29d-11e7-9230-5ba02843d98a.png) + + +# Deploy eShopOnServiceFabric with Visual Studio. Modify the cloud.xml file of each Service Fabric application in PublishProfile directory and set your certificate settings to be able to deploy eshopOnContainers in the secured cluster: From 5a0dad82d67dece49b04763419fce678d5a36540 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 18:10:53 -0700 Subject: [PATCH 36/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 44055ecd5..85054636d 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -87,7 +87,7 @@ You might need to authenticate from the browser when running this PowerShell scr You should see a similar execution to the following: ![image](https://user-images.githubusercontent.com/1712635/31640172-93efcca0-b291-11e7-970e-5b5e6bf07042.png) -IMPORTANT: At this point, copy/cut the .PFX certifiacte file saved in the downloads forlder and save it in a secure place. +IMPORTANT: At this point, copy/cut the .PFX certificate file saved in the downloads forlder and save it in a secure place. ## Install the certificate Install the certificate (by double-clicking on the .PFX file) under 'Current User' store location (by default location) and check it as exportable. From dadda540173f0ece2b029f40f53110a7332fb815 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 18:11:10 -0700 Subject: [PATCH 37/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 2014352ae..de87936b6 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -87,7 +87,7 @@ Execute the gen-keyvaultcert.ps1 script to generate and download a certificate f You should see a similar execution to the following: ![image](https://user-images.githubusercontent.com/1712635/31640172-93efcca0-b291-11e7-970e-5b5e6bf07042.png) -IMPORTANT: At this point, copy/cut the .PFX certifiacte file saved in the downloads forlder and save it in a secure place. +IMPORTANT: At this point, copy/cut the .PFX certificate file saved in the downloads forlder and save it in a secure place. ## Install the certificate Install the certificate (by double-clicking on the .PFX file) under 'Current User' store location (by default location) and check it as exportable. @@ -96,23 +96,12 @@ Install the certificate (by double-clicking on the .PFX file) under 'Current Use ## Editing servicefabricdeploysecured.parameters.json file -Edit the following params in `servicefabricdeploysecured.parameters.json` file to set your values: +Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar way you can do with tthe unsecured .json file shown above (clusterName, dnsName, etc.), plus edit the following values: -- clusterName: Name of your SF cluster -- dnsName: Name assigned to your SF dns -- adminUserName: user name for administration -- adminPassword: user password for administration - sourceVaultValue: keyvault resource id (check azure keyvault properties) - certificateUrlValue: certificate url (check azure Keyvault certificate properties) - certificateThumbprint: certificate thumbprint (check azure Keyvault certificate properties) -Optionally, you can modify which ports are opened in the LoadBalancer for accessing externally to the apps: - -- webMvcHttpPort: port externally exposed for the WebMVC app -- webSpaHttpPort: port externally exposed for the WebSPA app -- webStatusHttpPort: port externally exposed for the WebStatus app -- IdSrvHttpRule: port externally exposed for the Identity app - ## Deploy the template Once parameter file is edited you can deploy it using [create-resources script](../readme.md). From 51a101cddf30a416cb7434af92ca9cb6c425d545 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 18:29:00 -0700 Subject: [PATCH 38/65] Update readme.md --- .../az/servicefabric/WindowsContainers/readme.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 85054636d..30591ff7d 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -96,19 +96,21 @@ Install the certificate (by double-clicking on the .PFX file) under 'Current Use ## Editing servicefabricdeploysecured.parameters.json file -Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar way you can do with tthe unsecured .json file shown above (clusterName, dnsName, etc.), plus edit the following values: +Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar way you can do with the unsecured .json file shown above (clusterName, dnsName, etc.), plus edit the following values: - sourceVaultValue: Your Azure Keyvault's RESOURCE ID (check Azure keyvault properties, similar to: /subscriptions/e1234ac1-c09c-3jaf-6767-98b3c5f1f246/resourceGroups/eshop-global-resgrp/providers/Microsoft.KeyVault/vaults/eshopkeyvault") -- certificateUrlValue: Your certificate Secret Identifier (check Azure Keyvault secret certificate properties, should be in the format of https://.vault.azure.net:443/secrets/, similar to: https://eshopkeyvault.vault.azure.net/secrets/pro-eshop-sfwin-cluster-cert/4d087088df974e869f1c0978cb100e47) +- certificateUrlValue: Your certificate Secret Identifier (check Azure Keyvault secret certificate properties, should be in the format of https://.vault.azure.net:443/secrets/, similar to: +https://eshopkeyvault.vault.azure.net/secrets/pro-eshop-sfwin-cluster-cert/w647684642cGE2sj83b3hfe4h8e08963) -- certificateThumbprint: certificate thumbprint (check azure Keyvault certificate thumbprint, something like 69JK453486D55A6818577Z0699100365HDK70FCE) +- certificateThumbprint: certificate thumbprint (check azure Keyvault certificate thumbprint, something like 88JK453486D55A6818573G0DW9100365HDK70HDK) ## Deploy the secured SF cluster (Windows nodes) -Once parameter file is edited you can deploy it using [create-resources script](../readme.md). +Once parameters file is edited you can deploy it using [create-resources script](../readme.md). Use a command prompt window positioned into the deploy\az folder. + ``` create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploysecured pro-eshop-sfwin-resgrp -c westus ``` @@ -116,6 +118,11 @@ The execution should be something like the following: ![image](https://user-images.githubusercontent.com/1712635/31641955-0bc9d59e-b29d-11e7-9230-5ba02843d98a.png) +Once the cluster is created you can explore it with Azure's portal, like in the following image: +![image](https://user-images.githubusercontent.com/1712635/31642431-bf1c409e-b29f-11e7-980f-a7685a45108c.png) + +In this case, the ARM template is creating a 5 node cluster when creating a SECURE cluster for "production". + # Deploy eShopOnServiceFabric with Visual Studio. From e4e3cefdd159a1be7925efff3d92d7b3da3ad88d Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 18:43:50 -0700 Subject: [PATCH 39/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 30591ff7d..856984b03 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -91,9 +91,12 @@ IMPORTANT: At this point, copy/cut the .PFX certificate file saved in the downlo ## Install the certificate Install the certificate (by double-clicking on the .PFX file) under 'Current User' store location (by default location) and check it as exportable. +Also, install the same certificate as CA (Certificate Authority) under Current User, too. +![image](https://user-images.githubusercontent.com/1712635/31642795-c6ffa434-b2a1-11e7-8ff8-2a63549a780e.png) + ## Editing servicefabricdeploysecured.parameters.json file Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar way you can do with the unsecured .json file shown above (clusterName, dnsName, etc.), plus edit the following values: From 1c315cfa0b5370f0fc9efde96171d33b06154b3f Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 18:44:55 -0700 Subject: [PATCH 40/65] Update readme.md --- deploy/az/servicefabric/WindowsContainers/readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/az/servicefabric/WindowsContainers/readme.md index 856984b03..18aa8ad78 100644 --- a/deploy/az/servicefabric/WindowsContainers/readme.md +++ b/deploy/az/servicefabric/WindowsContainers/readme.md @@ -91,10 +91,11 @@ IMPORTANT: At this point, copy/cut the .PFX certificate file saved in the downlo ## Install the certificate Install the certificate (by double-clicking on the .PFX file) under 'Current User' store location (by default location) and check it as exportable. -Also, install the same certificate as CA (Certificate Authority) under Current User, too. +Also, install the same certificate as CA (Certificate Authority) under Current User, too. + ![image](https://user-images.githubusercontent.com/1712635/31642795-c6ffa434-b2a1-11e7-8ff8-2a63549a780e.png) ## Editing servicefabricdeploysecured.parameters.json file From b66a12c45fe69d66e24a631dfe10edc602e51826 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 18:44:58 -0700 Subject: [PATCH 41/65] Update readme.md --- .../servicefabric/LinuxContainers/readme.md | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index de87936b6..8e52fa8b6 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -94,21 +94,35 @@ Install the certificate (by double-clicking on the .PFX file) under 'Current Use +Also, install the same certificate as CA (Certificate Authority) under Current User, too. + +![image](https://user-images.githubusercontent.com/1712635/31642795-c6ffa434-b2a1-11e7-8ff8-2a63549a780e.png) + ## Editing servicefabricdeploysecured.parameters.json file -Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar way you can do with tthe unsecured .json file shown above (clusterName, dnsName, etc.), plus edit the following values: +Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar way you can do with the unsecured .json file shown above (clusterName, dnsName, etc.), plus edit the following values: + +- sourceVaultValue: Your Azure Keyvault's RESOURCE ID (check Azure keyvault properties, similar to: /subscriptions/e1234ac1-c09c-3jaf-6767-98b3c5f1f246/resourceGroups/eshop-global-resgrp/providers/Microsoft.KeyVault/vaults/eshopkeyvault") + +- certificateUrlValue: Your certificate Secret Identifier (check Azure Keyvault secret certificate properties, should be in the format of https://.vault.azure.net:443/secrets/, similar to: +https://eshopkeyvault.vault.azure.net/secrets/pro-eshop-sflinux-cluster-cert/fd47684442c04cdj83b3hfe4h8e08123) -- sourceVaultValue: keyvault resource id (check azure keyvault properties) -- certificateUrlValue: certificate url (check azure Keyvault certificate properties) -- certificateThumbprint: certificate thumbprint (check azure Keyvault certificate properties) +- certificateThumbprint: certificate thumbprint (check azure Keyvault certificate thumbprint, something like 69JK453486D55A6818577Z0699100365HDK70FCE) ## Deploy the template -Once parameter file is edited you can deploy it using [create-resources script](../readme.md). +Once parameters file is edited you can deploy it using [create-resources script](../readme.md). +Use a command prompt window positioned into the deploy\az folder. ``` -create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploysecured newResourceGroup -c westus +create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploysecured pro-eshop-sflinux-resgrp -c westus ``` +The execution should be something like the following: +![image](https://user-images.githubusercontent.com/1712635/31642529-54479704-b2a0-11e7-90ee-2abf32c92205.png) + +Once the cluster is created you can explore it with Azure's portal, like in the following image: + + ## Deploy eShopOnServiceFabric with Visual Studio. Modify the cloud.xml file of each Service Fabric application in PublishProfile directory and set your certificate settings to be able to deploy eshopOnContainers in the secured cluster: From 54db2cad980b2cf2fa77e0a4ab9e51dbbfd672e4 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Mon, 16 Oct 2017 18:50:28 -0700 Subject: [PATCH 42/65] Update readme.md --- deploy/az/servicefabric/LinuxContainers/readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/az/servicefabric/LinuxContainers/readme.md index 8e52fa8b6..98d097b10 100644 --- a/deploy/az/servicefabric/LinuxContainers/readme.md +++ b/deploy/az/servicefabric/LinuxContainers/readme.md @@ -109,7 +109,7 @@ https://eshopkeyvault.vault.azure.net/secrets/pro-eshop-sflinux-cluster-cert/fd4 - certificateThumbprint: certificate thumbprint (check azure Keyvault certificate thumbprint, something like 69JK453486D55A6818577Z0699100365HDK70FCE) -## Deploy the template +## Deploy the secured SF Linux cluster Once parameters file is edited you can deploy it using [create-resources script](../readme.md). Use a command prompt window positioned into the deploy\az folder. @@ -122,6 +122,7 @@ The execution should be something like the following: Once the cluster is created you can explore it with Azure's portal, like in the following image: +![image](https://user-images.githubusercontent.com/1712635/31642956-b7cfc8d0-b2a2-11e7-8ede-a141ec190eb4.png) ## Deploy eShopOnServiceFabric with Visual Studio. From d7e3dc6facd861be68eb919a79c70c7cfbd8321f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ram=C3=B3n=20Tom=C3=A1s?= Date: Tue, 17 Oct 2017 11:34:48 +0200 Subject: [PATCH 43/65] Updated SF Windows manifests Set single instance per SF service --- .../Bus/ApplicationParameters/Cloud.xml | 2 +- .../NoSQL/ApplicationParameters/Cloud.xml | 2 +- .../Redis/ApplicationParameters/Cloud.xml | 2 +- .../SqlServerPkg/ServiceManifest.xml | 4 ++-- .../Sql/ApplicationParameters/Cloud.xml | 2 +- .../ApplicationManifest.xml | 6 ++++-- .../CatalogApiPkg/ServiceManifest.xml | 2 +- .../MarketingApiPkg/ServiceManifest.xml | 2 +- .../ApplicationParameters/Cloud.xml | 15 ++++++++------- .../ApplicationParameters/Cloud.xml | 2 +- .../WebMVCPkg/ServiceManifest.xml | 6 ++++++ .../ApplicationParameters/Cloud.xml | 2 +- .../ApplicationParameters/Cloud.xml | 2 +- .../WebStatusPkg/ServiceManifest.xml | 17 +++++++++-------- .../ApplicationParameters/Cloud.xml | 2 +- img/appinsights/create-insights.PNG | Bin 0 -> 27395 bytes img/appinsights/settings-insights.PNG | Bin 0 -> 23770 bytes img/sf/set-instrumentationkey.PNG | Bin 0 -> 46915 bytes 18 files changed, 39 insertions(+), 29 deletions(-) create mode 100644 img/appinsights/create-insights.PNG create mode 100644 img/appinsights/settings-insights.PNG create mode 100644 img/sf/set-instrumentationkey.PNG diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml index 8990ebec4..5a4c2828d 100644 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml index 246e938b5..8b48c39d1 100644 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml index 96eba3857..951ce24db 100644 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml index b71459931..252c74f21 100644 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml +++ b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml @@ -15,12 +15,12 @@ - microsoft/mssql-server-windows-developer:2016-sp1-windowsservercore-10.0.14393.1480 + microsoft/mssql-server-windows-developer:2017 - + diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml index c59b1bdc4..3ad12232a 100644 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml index 1f7e89dab..29679fbaa 100644 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml +++ b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml @@ -12,7 +12,8 @@ - + + - + diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml index 33fd44d83..db840c274 100644 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml +++ b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml @@ -27,7 +27,7 @@ - + diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Cloud.xml index 68931e6f4..bf87a8296 100644 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Cloud.xml @@ -1,14 +1,15 @@  - - - - - - + + + + + + - + + diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml index 01a3f70df..207735106 100644 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml @@ -1,7 +1,7 @@  - + diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml index f054246d0..927220a15 100644 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml +++ b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml @@ -28,6 +28,12 @@ + + + + + + diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml index 01f86972a..d99e1573a 100644 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml @@ -1,7 +1,7 @@  - + diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml index 3b50ef8b6..fdeb6fd88 100644 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml @@ -1,7 +1,7 @@  - + diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml index ee821045d..3cbfc87a9 100644 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml +++ b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml @@ -22,14 +22,15 @@ - - - - - - - - + + + + + + + + + diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml index f77d4b08e..f49e04e6b 100644 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml +++ b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml @@ -1,7 +1,7 @@  - + \ No newline at end of file diff --git a/img/appinsights/create-insights.PNG b/img/appinsights/create-insights.PNG new file mode 100644 index 0000000000000000000000000000000000000000..535ae4b9829bf247b9b81f25e85a76f6f8554a94 GIT binary patch literal 27395 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 literal 0 HcmV?d00001 diff --git a/img/appinsights/settings-insights.PNG b/img/appinsights/settings-insights.PNG new file mode 100644 index 0000000000000000000000000000000000000000..16e6323d377cfe313eed34463baea69f89cb160c GIT binary patch literal 23770 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 HcwYN2d0Vdq literal 0 HcmV?d00001 diff --git a/img/sf/set-instrumentationkey.PNG b/img/sf/set-instrumentationkey.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1d7105a30a61d09f393ff5583dba5f87085a5a96 GIT binary patch literal 46915 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

Dk3V|HpOZ~kO=x4Jwps8baaW# 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 literal 0 HcmV?d00001 From 41df28cbb29334d97b7281e6d3abffe4f66b0a42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ram=C3=B3n=20Tom=C3=A1s?= Date: Tue, 17 Oct 2017 13:04:27 +0200 Subject: [PATCH 44/65] Change AccessMethod in load tests to Sequential --- .../Services/LoadTest/Basket.API/AddBasket.webtest | 12 ++++++------ test/Services/LoadTest/Basket.API/Checkout.webtest | 14 +++++++------- .../LoadTest/Basket.API/DeleteBasket.webtest | 12 ++++++------ .../Services/LoadTest/Basket.API/GetBasket.webtest | 12 ++++++------ .../LoadTest/Catalog.API/GetCatalogBrands.webtest | 4 ++-- .../Catalog.API/GetCatalogFiltered.webtest | 4 ++-- .../LoadTest/Catalog.API/GetCatalogTypes.webtest | 4 ++-- test/Services/LoadTest/Catalog.API/GetItem.webtest | 4 ++-- .../LoadTest/Catalog.API/GetItemPic.webtest | 4 ++-- .../Services/LoadTest/Catalog.API/GetItems.webtest | 4 ++-- .../LoadTest/Catalog.API/GetItemsByName.webtest | 4 ++-- test/Services/LoadTest/Identity.API/Login.webtest | 8 ++++---- test/Services/LoadTest/Identity.API/Logout.webtest | 8 ++++---- .../CreateOrUpdateUserLocation.webtest | 12 ++++++------ .../LoadTest/Location.API/GetAllLocations.webtest | 12 ++++++------ .../LoadTest/Location.API/GetLocation.webtest | 12 ++++++------ .../LoadTest/Location.API/GetUserLocation.webtest | 12 ++++++------ .../LoadTest/Marketing.API/GetAllCampaigns.webtest | 12 ++++++------ .../LoadTest/Marketing.API/GetCampaign.webtest | 12 ++++++------ .../Marketing.API/GetUserCampaigns.webtest | 12 ++++++------ .../LoadTest/Ordering.API/CancelOrder.webtest | 14 +++++++------- .../LoadTest/Ordering.API/GetAllOrders.webtest | 12 ++++++------ .../LoadTest/Ordering.API/GetCardTypes.webtest | 12 ++++++------ .../LoadTest/Ordering.API/GetOrder.webtest | 12 ++++++------ .../LoadTest/Ordering.API/ShipOrder.webtest | 14 +++++++------- test/Services/LoadTest/WebMVC/AddProducts.webtest | 6 +++--- .../Services/LoadTest/WebMVC/CatalogFilter.webtest | 8 ++++---- .../LoadTest/WebMVC/CreateNewOrder.webtest | 8 ++++---- 28 files changed, 132 insertions(+), 132 deletions(-) diff --git a/test/Services/LoadTest/Basket.API/AddBasket.webtest b/test/Services/LoadTest/Basket.API/AddBasket.webtest index cb933b141..a56ca94f0 100644 --- a/test/Services/LoadTest/Basket.API/AddBasket.webtest +++ b/test/Services/LoadTest/Basket.API/AddBasket.webtest @@ -84,12 +84,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Basket.API/Checkout.webtest b/test/Services/LoadTest/Basket.API/Checkout.webtest index 168e6e422..0d2a179b8 100644 --- a/test/Services/LoadTest/Basket.API/Checkout.webtest +++ b/test/Services/LoadTest/Basket.API/Checkout.webtest @@ -85,13 +85,13 @@ - - - - - - - + + + + + + + diff --git a/test/Services/LoadTest/Basket.API/DeleteBasket.webtest b/test/Services/LoadTest/Basket.API/DeleteBasket.webtest index 129f6c946..dd38dcc60 100644 --- a/test/Services/LoadTest/Basket.API/DeleteBasket.webtest +++ b/test/Services/LoadTest/Basket.API/DeleteBasket.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Basket.API/GetBasket.webtest b/test/Services/LoadTest/Basket.API/GetBasket.webtest index 061f0ecec..4f3f7b8f4 100644 --- a/test/Services/LoadTest/Basket.API/GetBasket.webtest +++ b/test/Services/LoadTest/Basket.API/GetBasket.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Catalog.API/GetCatalogBrands.webtest b/test/Services/LoadTest/Catalog.API/GetCatalogBrands.webtest index 8247a72a4..0cb8085e9 100644 --- a/test/Services/LoadTest/Catalog.API/GetCatalogBrands.webtest +++ b/test/Services/LoadTest/Catalog.API/GetCatalogBrands.webtest @@ -6,8 +6,8 @@ - - + + diff --git a/test/Services/LoadTest/Catalog.API/GetCatalogFiltered.webtest b/test/Services/LoadTest/Catalog.API/GetCatalogFiltered.webtest index a3d36923f..24d81ec9b 100644 --- a/test/Services/LoadTest/Catalog.API/GetCatalogFiltered.webtest +++ b/test/Services/LoadTest/Catalog.API/GetCatalogFiltered.webtest @@ -6,8 +6,8 @@ - - + + diff --git a/test/Services/LoadTest/Catalog.API/GetCatalogTypes.webtest b/test/Services/LoadTest/Catalog.API/GetCatalogTypes.webtest index 854d5d78c..1f5bcc6f6 100644 --- a/test/Services/LoadTest/Catalog.API/GetCatalogTypes.webtest +++ b/test/Services/LoadTest/Catalog.API/GetCatalogTypes.webtest @@ -6,8 +6,8 @@ - - + + diff --git a/test/Services/LoadTest/Catalog.API/GetItem.webtest b/test/Services/LoadTest/Catalog.API/GetItem.webtest index 3807cabcf..80cd01d01 100644 --- a/test/Services/LoadTest/Catalog.API/GetItem.webtest +++ b/test/Services/LoadTest/Catalog.API/GetItem.webtest @@ -6,8 +6,8 @@ - - + + diff --git a/test/Services/LoadTest/Catalog.API/GetItemPic.webtest b/test/Services/LoadTest/Catalog.API/GetItemPic.webtest index 9bfd649bb..7c552eac5 100644 --- a/test/Services/LoadTest/Catalog.API/GetItemPic.webtest +++ b/test/Services/LoadTest/Catalog.API/GetItemPic.webtest @@ -6,8 +6,8 @@ - - + + diff --git a/test/Services/LoadTest/Catalog.API/GetItems.webtest b/test/Services/LoadTest/Catalog.API/GetItems.webtest index 8364086d2..f9a99ea56 100644 --- a/test/Services/LoadTest/Catalog.API/GetItems.webtest +++ b/test/Services/LoadTest/Catalog.API/GetItems.webtest @@ -6,8 +6,8 @@ - - + + diff --git a/test/Services/LoadTest/Catalog.API/GetItemsByName.webtest b/test/Services/LoadTest/Catalog.API/GetItemsByName.webtest index bc659d083..5b575eaf5 100644 --- a/test/Services/LoadTest/Catalog.API/GetItemsByName.webtest +++ b/test/Services/LoadTest/Catalog.API/GetItemsByName.webtest @@ -6,8 +6,8 @@ - - + + diff --git a/test/Services/LoadTest/Identity.API/Login.webtest b/test/Services/LoadTest/Identity.API/Login.webtest index 62c93eb66..15bd5d5f1 100644 --- a/test/Services/LoadTest/Identity.API/Login.webtest +++ b/test/Services/LoadTest/Identity.API/Login.webtest @@ -74,10 +74,10 @@ - - - - + + + + diff --git a/test/Services/LoadTest/Identity.API/Logout.webtest b/test/Services/LoadTest/Identity.API/Logout.webtest index 393952ab2..add2ee744 100644 --- a/test/Services/LoadTest/Identity.API/Logout.webtest +++ b/test/Services/LoadTest/Identity.API/Logout.webtest @@ -13,10 +13,10 @@ - - - - + + + + diff --git a/test/Services/LoadTest/Location.API/CreateOrUpdateUserLocation.webtest b/test/Services/LoadTest/Location.API/CreateOrUpdateUserLocation.webtest index d5d1630ac..6d3e0d887 100644 --- a/test/Services/LoadTest/Location.API/CreateOrUpdateUserLocation.webtest +++ b/test/Services/LoadTest/Location.API/CreateOrUpdateUserLocation.webtest @@ -84,12 +84,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Location.API/GetAllLocations.webtest b/test/Services/LoadTest/Location.API/GetAllLocations.webtest index f0171aa26..b210918f4 100644 --- a/test/Services/LoadTest/Location.API/GetAllLocations.webtest +++ b/test/Services/LoadTest/Location.API/GetAllLocations.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Location.API/GetLocation.webtest b/test/Services/LoadTest/Location.API/GetLocation.webtest index fb078c9a1..d9fee854c 100644 --- a/test/Services/LoadTest/Location.API/GetLocation.webtest +++ b/test/Services/LoadTest/Location.API/GetLocation.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Location.API/GetUserLocation.webtest b/test/Services/LoadTest/Location.API/GetUserLocation.webtest index a60387329..d17d7a7d0 100644 --- a/test/Services/LoadTest/Location.API/GetUserLocation.webtest +++ b/test/Services/LoadTest/Location.API/GetUserLocation.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Marketing.API/GetAllCampaigns.webtest b/test/Services/LoadTest/Marketing.API/GetAllCampaigns.webtest index cb5ac96b3..652d9e84b 100644 --- a/test/Services/LoadTest/Marketing.API/GetAllCampaigns.webtest +++ b/test/Services/LoadTest/Marketing.API/GetAllCampaigns.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Marketing.API/GetCampaign.webtest b/test/Services/LoadTest/Marketing.API/GetCampaign.webtest index d37f95364..3d8df3f2c 100644 --- a/test/Services/LoadTest/Marketing.API/GetCampaign.webtest +++ b/test/Services/LoadTest/Marketing.API/GetCampaign.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Marketing.API/GetUserCampaigns.webtest b/test/Services/LoadTest/Marketing.API/GetUserCampaigns.webtest index 4b81e5de1..28351fcf3 100644 --- a/test/Services/LoadTest/Marketing.API/GetUserCampaigns.webtest +++ b/test/Services/LoadTest/Marketing.API/GetUserCampaigns.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Ordering.API/CancelOrder.webtest b/test/Services/LoadTest/Ordering.API/CancelOrder.webtest index efc3a69b0..73eb70993 100644 --- a/test/Services/LoadTest/Ordering.API/CancelOrder.webtest +++ b/test/Services/LoadTest/Ordering.API/CancelOrder.webtest @@ -85,13 +85,13 @@ - - - - - - - + + + + + + + diff --git a/test/Services/LoadTest/Ordering.API/GetAllOrders.webtest b/test/Services/LoadTest/Ordering.API/GetAllOrders.webtest index 64a7c54e7..256c957f0 100644 --- a/test/Services/LoadTest/Ordering.API/GetAllOrders.webtest +++ b/test/Services/LoadTest/Ordering.API/GetAllOrders.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Ordering.API/GetCardTypes.webtest b/test/Services/LoadTest/Ordering.API/GetCardTypes.webtest index 9548aef0c..465af4b0e 100644 --- a/test/Services/LoadTest/Ordering.API/GetCardTypes.webtest +++ b/test/Services/LoadTest/Ordering.API/GetCardTypes.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Ordering.API/GetOrder.webtest b/test/Services/LoadTest/Ordering.API/GetOrder.webtest index 5a94b203f..b7175a3d2 100644 --- a/test/Services/LoadTest/Ordering.API/GetOrder.webtest +++ b/test/Services/LoadTest/Ordering.API/GetOrder.webtest @@ -83,12 +83,12 @@ - - - - - - + + + + + + diff --git a/test/Services/LoadTest/Ordering.API/ShipOrder.webtest b/test/Services/LoadTest/Ordering.API/ShipOrder.webtest index 812371fc6..73ea953a3 100644 --- a/test/Services/LoadTest/Ordering.API/ShipOrder.webtest +++ b/test/Services/LoadTest/Ordering.API/ShipOrder.webtest @@ -85,13 +85,13 @@ - - - - - - - + + + + + + + diff --git a/test/Services/LoadTest/WebMVC/AddProducts.webtest b/test/Services/LoadTest/WebMVC/AddProducts.webtest index b9217d6ff..3fc66d316 100644 --- a/test/Services/LoadTest/WebMVC/AddProducts.webtest +++ b/test/Services/LoadTest/WebMVC/AddProducts.webtest @@ -107,9 +107,9 @@ - - - + + + diff --git a/test/Services/LoadTest/WebMVC/CatalogFilter.webtest b/test/Services/LoadTest/WebMVC/CatalogFilter.webtest index 9f6583b50..331623abd 100644 --- a/test/Services/LoadTest/WebMVC/CatalogFilter.webtest +++ b/test/Services/LoadTest/WebMVC/CatalogFilter.webtest @@ -163,10 +163,10 @@ - - - - + + + + diff --git a/test/Services/LoadTest/WebMVC/CreateNewOrder.webtest b/test/Services/LoadTest/WebMVC/CreateNewOrder.webtest index 266fd63b4..f749c3b51 100644 --- a/test/Services/LoadTest/WebMVC/CreateNewOrder.webtest +++ b/test/Services/LoadTest/WebMVC/CreateNewOrder.webtest @@ -256,10 +256,10 @@ - - - - + + + + From 8e730f72dd00774a1a8be38934f880a2731c4cce Mon Sep 17 00:00:00 2001 From: Igor Sychev Date: Fri, 13 Oct 2017 16:54:35 +0100 Subject: [PATCH 45/65] last .net core 2.0 part --- .../DataProtection/DataProtection/DataProtection.csproj | 4 ++-- .../Microsoft.Extensions.HealthChecks.SqlServer.csproj | 2 +- .../Microsoft.Extensions.HealthChecks.csproj | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/BuildingBlocks/DataProtection/DataProtection/DataProtection.csproj b/src/BuildingBlocks/DataProtection/DataProtection/DataProtection.csproj index 29e23b4d3..851b75c9b 100644 --- a/src/BuildingBlocks/DataProtection/DataProtection/DataProtection.csproj +++ b/src/BuildingBlocks/DataProtection/DataProtection/DataProtection.csproj @@ -1,12 +1,12 @@  - netstandard1.5 + netstandard2.0 Microsoft.eShopOnContainers.BuildingBlocks - + diff --git a/src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/Microsoft.Extensions.HealthChecks.SqlServer.csproj b/src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/Microsoft.Extensions.HealthChecks.SqlServer.csproj index a38fa2160..60017a85f 100644 --- a/src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/Microsoft.Extensions.HealthChecks.SqlServer.csproj +++ b/src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/Microsoft.Extensions.HealthChecks.SqlServer.csproj @@ -1,7 +1,7 @@  - netstandard1.3 + netstandard2.0 diff --git a/src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj b/src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj index 228c2d79d..1b642d062 100644 --- a/src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj +++ b/src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj @@ -1,7 +1,7 @@  - netstandard1.3 + netstandard2.0 @@ -9,7 +9,7 @@ - + From 3c41a57f6d57040134cdbd3e60f337f98be2a33d Mon Sep 17 00:00:00 2001 From: Igor Sychev Date: Fri, 13 Oct 2017 18:17:45 +0100 Subject: [PATCH 46/65] js file is not exists --- src/Web/WebStatus/Views/Shared/_Layout.cshtml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Web/WebStatus/Views/Shared/_Layout.cshtml b/src/Web/WebStatus/Views/Shared/_Layout.cshtml index 0a540f8a3..9c531eec8 100644 --- a/src/Web/WebStatus/Views/Shared/_Layout.cshtml +++ b/src/Web/WebStatus/Views/Shared/_Layout.cshtml @@ -53,7 +53,6 @@ -