From caf16bc03de557c096ffb07cd1b7e2eae92bd1ff Mon Sep 17 00:00:00 2001 From: Stepan Date: Fri, 9 Mar 2018 19:00:33 +0300 Subject: [PATCH 01/20] Concurrency fix for EventBus Prevent a possible race condition in InMemoryEventBusSubscriptionsManager --- .../EventBus/InMemoryEventBusSubscriptionsManager.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/BuildingBlocks/EventBus/EventBus/InMemoryEventBusSubscriptionsManager.cs b/src/BuildingBlocks/EventBus/EventBus/InMemoryEventBusSubscriptionsManager.cs index 88be8cf96..305f9ff8a 100644 --- a/src/BuildingBlocks/EventBus/EventBus/InMemoryEventBusSubscriptionsManager.cs +++ b/src/BuildingBlocks/EventBus/EventBus/InMemoryEventBusSubscriptionsManager.cs @@ -112,10 +112,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBus private void RaiseOnEventRemoved(string eventName) { var handler = OnEventRemoved; - if (handler != null) - { - OnEventRemoved(this, eventName); - } + handler?.Invoke(this, eventName); } From fb7d83f82f5814d7ff8daf99ee1fd2569ed5bc4c Mon Sep 17 00:00:00 2001 From: vyunev Date: Thu, 10 May 2018 12:01:10 +0300 Subject: [PATCH 02/20] Fix AKS creation command There is no need in DNS parameter for AKS creation command as gen-k8s-env-aks.ps1 does not have it. --- k8s/README.k8s.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/README.k8s.md b/k8s/README.k8s.md index 77acdf236..c9e32f5f4 100644 --- a/k8s/README.k8s.md +++ b/k8s/README.k8s.md @@ -13,7 +13,7 @@ The k8s directory contains Kubernetes configuration for the eShopOnContainers ap >``` or using AKS instead of ACS >``` ->./gen-k8s-env-aks -resourceGroupName k8sGroup -location westeurope -registryName k8sregistry -dnsName k8s-dns -serviceName k8s-cluster -createAcr true -nodeCount 3 -nodeVMSize Standard_D2_v2 +>./gen-k8s-env-aks -resourceGroupName k8sGroup -location westeurope -registryName k8sregistry -serviceName k8s-cluster -createAcr true -nodeCount 3 -nodeVMSize Standard_D2_v2 >``` * A Docker development environment with `docker` and `docker-compose`. From abb108e03dd0ddf0b43d7ea4b2f5b307452ac88e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Corral?= Date: Wed, 6 Mar 2019 16:11:40 +0100 Subject: [PATCH 03/20] Enabling istio on local kubernetes and first pod configuration, needs more work, unstable --- k8s/istio/JourneyToIstio.md | 73 +++++++++++++++++++++++ k8s/istio/deploy-istio-helm.ps1 | 3 + k8s/istio/install-istio-local.ps1 | 16 +++++ k8s/istio/kiali/secrets.yml | 11 ++++ k8s/istio/kiali/set-kiali-credentials.ps1 | 36 +++++++++++ 5 files changed, 139 insertions(+) create mode 100644 k8s/istio/JourneyToIstio.md create mode 100644 k8s/istio/deploy-istio-helm.ps1 create mode 100644 k8s/istio/install-istio-local.ps1 create mode 100644 k8s/istio/kiali/secrets.yml create mode 100644 k8s/istio/kiali/set-kiali-credentials.ps1 diff --git a/k8s/istio/JourneyToIstio.md b/k8s/istio/JourneyToIstio.md new file mode 100644 index 000000000..6e44cf526 --- /dev/null +++ b/k8s/istio/JourneyToIstio.md @@ -0,0 +1,73 @@ +# ISTIO on Local +## Prerequisites on local +You need the eshopsOnContainers configured on your local, with this +in a powershell console, we need to enter in /k8s/istio and execute +``` +>kubectl get pods +NAME READY STATUS RESTARTS AGE +eshop-apigwmm-54ccc6c589-557fn 0/1 Running 26 3h +eshop-apigwms-7d5f86cf7c-2j2zp 0/1 CrashLoopBackOff 30 3h +eshop-apigwwm-7794b6d879-7j4mt 0/1 CrashLoopBackOff 39 3h +eshop-apigwws-8585f6899f-7kkg2 0/1 Running 11 3h +eshop-basket-api-8bfc5c5f6-8xxcv 0/1 Running 41 3h +eshop-basket-data-66fbc788cc-dmkgb 1/1 Running 0 3h +eshop-catalog-api-c77747b76-4gp6c 0/1 CrashLoopBackOff 40 3h +eshop-identity-api-7574f6b458-4rbp6 0/1 CrashLoopBackOff 44 3h +eshop-keystore-data-5c9c85cb99-s5qz7 1/1 Running 0 3h +eshop-locations-api-64847646d-5wv52 0/1 CrashLoopBackOff 36 3h +eshop-marketing-api-745f9546b8-krjqq 0/1 Running 33 3h +eshop-mobileshoppingagg-7d467f86bd-bw9c7 0/1 Running 22 3h +eshop-nosql-data-579c9d89f8-x4z2k 1/1 Running 0 3h +eshop-ordering-api-5c55bd5464-7hnjx 0/1 CrashLoopBackOff 38 3h +eshop-ordering-backgroundtasks-f6dcb7db4-xq7gr 1/1 Running 22 3h +eshop-ordering-signalrhub-6664868779-dphxm 1/1 Running 0 3h +eshop-payment-api-7988db5f76-z76tc 1/1 Running 17 3h +eshop-rabbitmq-6b68647bc4-qjjrb 1/1 Running 0 3h +eshop-sql-data-5c4fdcccf4-2z5dm 1/1 Running 0 3h +eshop-webhooks-api-588b58bb66-lmx5c 1/1 Running 0 3h +eshop-webhooks-web-565c68b59c-dk8hp 1/1 Running 0 3h +eshop-webmvc-55c596544b-9fqsj 1/1 Running 0 3h +eshop-webshoppingagg-f8547f45b-4mjvp 0/1 CrashLoopBackOff 16 3h +eshop-webspa-84fd54466d-hzrlb 1/1 Running 0 3h +eshop-webstatus-775b487d4d-tbfbn 1/1 Running 0 3h +``` + +```ps1 +> ./install-istio-local.ps1 + +``` +This will install the cli utility and register to the path, you can test this phase launching + +```ps1 +> istioctl +``` + +Afterthat you can install Istio on your cluster executing +```ps1 +> ./deploy-istio-helm.ps1 +``` + +the result should be like: +``` +NAME READY STATUS RESTARTS AGE +grafana-774bf8cb47-clqkp 1/1 Running 0 2h +istio-citadel-548f4cdd9-dbrbn 1/1 Running 0 2h +istio-egressgateway-5f77f6c979-8922g 1/1 Running 0 2h +istio-galley-8f6585898-7c7wq 1/1 Running 0 2h +istio-ingressgateway-8484579cdb-7tw8n 1/1 Running 0 2h +istio-pilot-7c5c5778fb-r987v 2/2 Running 0 2h +istio-policy-7d67d47c65-rdqwj 2/2 Running 15 2h +istio-sidecar-injector-6fb6845cdd-nnhks 1/1 Running 0 2h +istio-telemetry-8b9fc7769-pwx5m 2/2 Running 24 2h +istio-tracing-ff94688bb-xnhnd 1/1 Running 4 2h +kiali-8644dbcdbc-pb627 0/1 CrashLoopBackOff 7 2h +prometheus-f556886b8-mr6wb 1/1 Running 13 2h +``` + +Is a common error that kiali-pod have errors, because it needs a credentials for working. +enter in k8s/istio/kiali and execute: +``` +> ./set-kiali-credentials.ps1 +``` +this script will prompt for a valid account/password and setups the secret in kubernetes +(at the moment account/password will be admin/admin we need to modify the yml) diff --git a/k8s/istio/deploy-istio-helm.ps1 b/k8s/istio/deploy-istio-helm.ps1 new file mode 100644 index 000000000..704813121 --- /dev/null +++ b/k8s/istio/deploy-istio-helm.ps1 @@ -0,0 +1,3 @@ +$ISTIO_VERSION="1.0.6" +cd istio-$ISTIO_VERSION +helm install install/kubernetes/helm/istio --name istio --namespace istio-system --set global.controlPlaneSecurityEnabled=true --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true \ No newline at end of file diff --git a/k8s/istio/install-istio-local.ps1 b/k8s/istio/install-istio-local.ps1 new file mode 100644 index 000000000..fcf0a6d34 --- /dev/null +++ b/k8s/istio/install-istio-local.ps1 @@ -0,0 +1,16 @@ +# Specify the Istio version that will be leveraged throughout these instructions +$ISTIO_VERSION="1.0.6" + +# Windows + +$ProgressPreference = 'SilentlyContinue'; +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +Invoke-WebRequest -URI "https://github.com/istio/istio/releases/download/$ISTIO_VERSION/istio-$ISTIO_VERSION-win.zip" -OutFile "istio-$ISTIO_VERSION.zip" +Expand-Archive -Path "istio-$ISTIO_VERSION.zip" -DestinationPath . + +cd istio-$ISTIO_VERSION +New-Item -ItemType Directory -Force -Path "C:\Program Files\Istio" +mv ./bin/istioctl.exe "C:\Program Files/Istio/" +$PATH = [environment]::GetEnvironmentVariable("PATH", "User") +[environment]::SetEnvironmentVariable("PATH", $PATH + "; C:\Program Files\Istio", "User") + diff --git a/k8s/istio/kiali/secrets.yml b/k8s/istio/kiali/secrets.yml new file mode 100644 index 000000000..7185f1383 --- /dev/null +++ b/k8s/istio/kiali/secrets.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: kiali + namespace: istio-system + labels: + app: kiali +type: Opaque +data: + username: YQBkAG0AaQBuAA== + passphrase: YQBkAG0AaQBuAA== \ No newline at end of file diff --git a/k8s/istio/kiali/set-kiali-credentials.ps1 b/k8s/istio/kiali/set-kiali-credentials.ps1 new file mode 100644 index 000000000..bd778b647 --- /dev/null +++ b/k8s/istio/kiali/set-kiali-credentials.ps1 @@ -0,0 +1,36 @@ +Param([parameter(Mandatory,HelpMessage="Enter a valid username for Kiali Administration")][string]$username, + [parameter(Mandatory,HelpMessage="Enter your super secret password")][securestring]$password, + [parameter(Mandatory=$false)][string]$NAMESPACE="istio-system" +) + +function Get-PlainText() +{ + [CmdletBinding()] + param + ( + [parameter(Mandatory = $true)] + [securestring]$SecureString + ) + BEGIN { } + PROCESS + { + $bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString); + + try + { + return [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr); + } + finally + { + [Runtime.InteropServices.Marshal]::FreeBSTR($bstr); + } + } + END { } +} + +$KIALIUSERNAME = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($username)) +$plainpassword = Get-PlainText $password; +$KIALIPASSWORD = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($plainpassword)) + +Write-Host "setting username [$KIALIUSERNAME] and password [$KIALIPASSWORD]" -ForegroundColor Blue +kubectl apply -f secrets.yml \ No newline at end of file From 6926bbe54b3f2e355014e545c7154ac787f152d7 Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Wed, 6 Mar 2019 16:14:58 +0100 Subject: [PATCH 04/20] Enabling istio on local kubernetes and first pod configuration, needs more work, unstable --- k8s/istio/JourneyToIstio.md | 73 +++++++++++++++++++++++ k8s/istio/deploy-istio-helm.ps1 | 3 + k8s/istio/install-istio-local.ps1 | 16 +++++ k8s/istio/kiali/secrets.yml | 11 ++++ k8s/istio/kiali/set-kiali-credentials.ps1 | 36 +++++++++++ 5 files changed, 139 insertions(+) create mode 100644 k8s/istio/JourneyToIstio.md create mode 100644 k8s/istio/deploy-istio-helm.ps1 create mode 100644 k8s/istio/install-istio-local.ps1 create mode 100644 k8s/istio/kiali/secrets.yml create mode 100644 k8s/istio/kiali/set-kiali-credentials.ps1 diff --git a/k8s/istio/JourneyToIstio.md b/k8s/istio/JourneyToIstio.md new file mode 100644 index 000000000..6e44cf526 --- /dev/null +++ b/k8s/istio/JourneyToIstio.md @@ -0,0 +1,73 @@ +# ISTIO on Local +## Prerequisites on local +You need the eshopsOnContainers configured on your local, with this +in a powershell console, we need to enter in /k8s/istio and execute +``` +>kubectl get pods +NAME READY STATUS RESTARTS AGE +eshop-apigwmm-54ccc6c589-557fn 0/1 Running 26 3h +eshop-apigwms-7d5f86cf7c-2j2zp 0/1 CrashLoopBackOff 30 3h +eshop-apigwwm-7794b6d879-7j4mt 0/1 CrashLoopBackOff 39 3h +eshop-apigwws-8585f6899f-7kkg2 0/1 Running 11 3h +eshop-basket-api-8bfc5c5f6-8xxcv 0/1 Running 41 3h +eshop-basket-data-66fbc788cc-dmkgb 1/1 Running 0 3h +eshop-catalog-api-c77747b76-4gp6c 0/1 CrashLoopBackOff 40 3h +eshop-identity-api-7574f6b458-4rbp6 0/1 CrashLoopBackOff 44 3h +eshop-keystore-data-5c9c85cb99-s5qz7 1/1 Running 0 3h +eshop-locations-api-64847646d-5wv52 0/1 CrashLoopBackOff 36 3h +eshop-marketing-api-745f9546b8-krjqq 0/1 Running 33 3h +eshop-mobileshoppingagg-7d467f86bd-bw9c7 0/1 Running 22 3h +eshop-nosql-data-579c9d89f8-x4z2k 1/1 Running 0 3h +eshop-ordering-api-5c55bd5464-7hnjx 0/1 CrashLoopBackOff 38 3h +eshop-ordering-backgroundtasks-f6dcb7db4-xq7gr 1/1 Running 22 3h +eshop-ordering-signalrhub-6664868779-dphxm 1/1 Running 0 3h +eshop-payment-api-7988db5f76-z76tc 1/1 Running 17 3h +eshop-rabbitmq-6b68647bc4-qjjrb 1/1 Running 0 3h +eshop-sql-data-5c4fdcccf4-2z5dm 1/1 Running 0 3h +eshop-webhooks-api-588b58bb66-lmx5c 1/1 Running 0 3h +eshop-webhooks-web-565c68b59c-dk8hp 1/1 Running 0 3h +eshop-webmvc-55c596544b-9fqsj 1/1 Running 0 3h +eshop-webshoppingagg-f8547f45b-4mjvp 0/1 CrashLoopBackOff 16 3h +eshop-webspa-84fd54466d-hzrlb 1/1 Running 0 3h +eshop-webstatus-775b487d4d-tbfbn 1/1 Running 0 3h +``` + +```ps1 +> ./install-istio-local.ps1 + +``` +This will install the cli utility and register to the path, you can test this phase launching + +```ps1 +> istioctl +``` + +Afterthat you can install Istio on your cluster executing +```ps1 +> ./deploy-istio-helm.ps1 +``` + +the result should be like: +``` +NAME READY STATUS RESTARTS AGE +grafana-774bf8cb47-clqkp 1/1 Running 0 2h +istio-citadel-548f4cdd9-dbrbn 1/1 Running 0 2h +istio-egressgateway-5f77f6c979-8922g 1/1 Running 0 2h +istio-galley-8f6585898-7c7wq 1/1 Running 0 2h +istio-ingressgateway-8484579cdb-7tw8n 1/1 Running 0 2h +istio-pilot-7c5c5778fb-r987v 2/2 Running 0 2h +istio-policy-7d67d47c65-rdqwj 2/2 Running 15 2h +istio-sidecar-injector-6fb6845cdd-nnhks 1/1 Running 0 2h +istio-telemetry-8b9fc7769-pwx5m 2/2 Running 24 2h +istio-tracing-ff94688bb-xnhnd 1/1 Running 4 2h +kiali-8644dbcdbc-pb627 0/1 CrashLoopBackOff 7 2h +prometheus-f556886b8-mr6wb 1/1 Running 13 2h +``` + +Is a common error that kiali-pod have errors, because it needs a credentials for working. +enter in k8s/istio/kiali and execute: +``` +> ./set-kiali-credentials.ps1 +``` +this script will prompt for a valid account/password and setups the secret in kubernetes +(at the moment account/password will be admin/admin we need to modify the yml) diff --git a/k8s/istio/deploy-istio-helm.ps1 b/k8s/istio/deploy-istio-helm.ps1 new file mode 100644 index 000000000..704813121 --- /dev/null +++ b/k8s/istio/deploy-istio-helm.ps1 @@ -0,0 +1,3 @@ +$ISTIO_VERSION="1.0.6" +cd istio-$ISTIO_VERSION +helm install install/kubernetes/helm/istio --name istio --namespace istio-system --set global.controlPlaneSecurityEnabled=true --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true \ No newline at end of file diff --git a/k8s/istio/install-istio-local.ps1 b/k8s/istio/install-istio-local.ps1 new file mode 100644 index 000000000..fcf0a6d34 --- /dev/null +++ b/k8s/istio/install-istio-local.ps1 @@ -0,0 +1,16 @@ +# Specify the Istio version that will be leveraged throughout these instructions +$ISTIO_VERSION="1.0.6" + +# Windows + +$ProgressPreference = 'SilentlyContinue'; +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +Invoke-WebRequest -URI "https://github.com/istio/istio/releases/download/$ISTIO_VERSION/istio-$ISTIO_VERSION-win.zip" -OutFile "istio-$ISTIO_VERSION.zip" +Expand-Archive -Path "istio-$ISTIO_VERSION.zip" -DestinationPath . + +cd istio-$ISTIO_VERSION +New-Item -ItemType Directory -Force -Path "C:\Program Files\Istio" +mv ./bin/istioctl.exe "C:\Program Files/Istio/" +$PATH = [environment]::GetEnvironmentVariable("PATH", "User") +[environment]::SetEnvironmentVariable("PATH", $PATH + "; C:\Program Files\Istio", "User") + diff --git a/k8s/istio/kiali/secrets.yml b/k8s/istio/kiali/secrets.yml new file mode 100644 index 000000000..7185f1383 --- /dev/null +++ b/k8s/istio/kiali/secrets.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: kiali + namespace: istio-system + labels: + app: kiali +type: Opaque +data: + username: YQBkAG0AaQBuAA== + passphrase: YQBkAG0AaQBuAA== \ No newline at end of file diff --git a/k8s/istio/kiali/set-kiali-credentials.ps1 b/k8s/istio/kiali/set-kiali-credentials.ps1 new file mode 100644 index 000000000..bd778b647 --- /dev/null +++ b/k8s/istio/kiali/set-kiali-credentials.ps1 @@ -0,0 +1,36 @@ +Param([parameter(Mandatory,HelpMessage="Enter a valid username for Kiali Administration")][string]$username, + [parameter(Mandatory,HelpMessage="Enter your super secret password")][securestring]$password, + [parameter(Mandatory=$false)][string]$NAMESPACE="istio-system" +) + +function Get-PlainText() +{ + [CmdletBinding()] + param + ( + [parameter(Mandatory = $true)] + [securestring]$SecureString + ) + BEGIN { } + PROCESS + { + $bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString); + + try + { + return [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr); + } + finally + { + [Runtime.InteropServices.Marshal]::FreeBSTR($bstr); + } + } + END { } +} + +$KIALIUSERNAME = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($username)) +$plainpassword = Get-PlainText $password; +$KIALIPASSWORD = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($plainpassword)) + +Write-Host "setting username [$KIALIUSERNAME] and password [$KIALIPASSWORD]" -ForegroundColor Blue +kubectl apply -f secrets.yml \ No newline at end of file From 3e7f93020886f6a2d7169c85b6531add383f7c67 Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Thu, 7 Mar 2019 16:26:03 +0100 Subject: [PATCH 05/20] Added support to istio with nginx-ingress --- k8s/istio/JourneyToIstio.md | 64 +++-- k8s/istio/apply-injection.ps1 | 2 + k8s/istio/delete-istio.ps1 | 2 + k8s/istio/deploy-istio-helm.ps1 | 3 +- k8s/istio/kiali/secrets.yml | 4 +- k8s/istio/kiali/set-kiali-credentials.ps1 | 4 +- k8s/istio/nginx-ingress/cloud-generic.yaml | 21 ++ k8s/istio/nginx-ingress/cm.yaml | Bin 0 -> 526 bytes .../local-dockerk8s/identityapi-cm-fix.yaml | 3 + .../local-dockerk8s/mvc-cm-fix.yaml | 3 + .../local-dockerk8s/mvc-fix.yaml | 39 +++ k8s/istio/nginx-ingress/mandatory.yaml | 239 ++++++++++++++++++ k8s/istio/nginx-ingress/service-nodeport.yaml | 22 ++ .../nginx-ingress/update-nginx-ingress.ps1 | 1 + k8s/nginx-ingress/mandatory-istio.yaml | 238 +++++++++++++++++ 15 files changed, 614 insertions(+), 31 deletions(-) create mode 100644 k8s/istio/apply-injection.ps1 create mode 100644 k8s/istio/delete-istio.ps1 create mode 100644 k8s/istio/nginx-ingress/cloud-generic.yaml create mode 100644 k8s/istio/nginx-ingress/cm.yaml create mode 100644 k8s/istio/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml create mode 100644 k8s/istio/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml create mode 100644 k8s/istio/nginx-ingress/local-dockerk8s/mvc-fix.yaml create mode 100644 k8s/istio/nginx-ingress/mandatory.yaml create mode 100644 k8s/istio/nginx-ingress/service-nodeport.yaml create mode 100644 k8s/istio/nginx-ingress/update-nginx-ingress.ps1 create mode 100644 k8s/nginx-ingress/mandatory-istio.yaml diff --git a/k8s/istio/JourneyToIstio.md b/k8s/istio/JourneyToIstio.md index 6e44cf526..a12f6740a 100644 --- a/k8s/istio/JourneyToIstio.md +++ b/k8s/istio/JourneyToIstio.md @@ -4,32 +4,32 @@ You need the eshopsOnContainers configured on your local, with this in a powershell console, we need to enter in /k8s/istio and execute ``` >kubectl get pods -NAME READY STATUS RESTARTS AGE -eshop-apigwmm-54ccc6c589-557fn 0/1 Running 26 3h -eshop-apigwms-7d5f86cf7c-2j2zp 0/1 CrashLoopBackOff 30 3h -eshop-apigwwm-7794b6d879-7j4mt 0/1 CrashLoopBackOff 39 3h -eshop-apigwws-8585f6899f-7kkg2 0/1 Running 11 3h -eshop-basket-api-8bfc5c5f6-8xxcv 0/1 Running 41 3h -eshop-basket-data-66fbc788cc-dmkgb 1/1 Running 0 3h -eshop-catalog-api-c77747b76-4gp6c 0/1 CrashLoopBackOff 40 3h -eshop-identity-api-7574f6b458-4rbp6 0/1 CrashLoopBackOff 44 3h -eshop-keystore-data-5c9c85cb99-s5qz7 1/1 Running 0 3h -eshop-locations-api-64847646d-5wv52 0/1 CrashLoopBackOff 36 3h -eshop-marketing-api-745f9546b8-krjqq 0/1 Running 33 3h -eshop-mobileshoppingagg-7d467f86bd-bw9c7 0/1 Running 22 3h -eshop-nosql-data-579c9d89f8-x4z2k 1/1 Running 0 3h -eshop-ordering-api-5c55bd5464-7hnjx 0/1 CrashLoopBackOff 38 3h -eshop-ordering-backgroundtasks-f6dcb7db4-xq7gr 1/1 Running 22 3h -eshop-ordering-signalrhub-6664868779-dphxm 1/1 Running 0 3h -eshop-payment-api-7988db5f76-z76tc 1/1 Running 17 3h -eshop-rabbitmq-6b68647bc4-qjjrb 1/1 Running 0 3h -eshop-sql-data-5c4fdcccf4-2z5dm 1/1 Running 0 3h -eshop-webhooks-api-588b58bb66-lmx5c 1/1 Running 0 3h -eshop-webhooks-web-565c68b59c-dk8hp 1/1 Running 0 3h -eshop-webmvc-55c596544b-9fqsj 1/1 Running 0 3h -eshop-webshoppingagg-f8547f45b-4mjvp 0/1 CrashLoopBackOff 16 3h -eshop-webspa-84fd54466d-hzrlb 1/1 Running 0 3h -eshop-webstatus-775b487d4d-tbfbn 1/1 Running 0 3h +NAME READY STATUS RESTARTS AGE +eshop-apigwmm-54ccc6c589-557fn 0/1 Running 31 4h +eshop-apigwms-7d5f86cf7c-2j2zp 0/1 Running 32 4h +eshop-apigwwm-7794b6d879-7j4mt 0/1 Running 44 4h +eshop-apigwws-8585f6899f-7kkg2 0/1 Running 13 4h +eshop-basket-api-8bfc5c5f6-8xxcv 1/1 Running 47 4h +eshop-basket-data-66fbc788cc-dmkgb 1/1 Running 1 4h +eshop-catalog-api-c77747b76-4gp6c 0/1 Running 48 4h +eshop-identity-api-7574f6b458-4rbp6 0/1 Running 55 4h +eshop-keystore-data-5c9c85cb99-s5qz7 1/1 Running 1 4h +eshop-locations-api-64847646d-5wv52 1/1 Running 42 4h +eshop-marketing-api-745f9546b8-krjqq 1/1 Running 40 4h +eshop-mobileshoppingagg-7d467f86bd-bw9c7 0/1 Running 24 4h +eshop-nosql-data-579c9d89f8-x4z2k 1/1 Running 1 4h +eshop-ordering-api-5c55bd5464-7hnjx 0/1 Running 46 4h +eshop-ordering-backgroundtasks-f6dcb7db4-xq7gr 0/1 Running 24 4h +eshop-ordering-signalrhub-6664868779-dphxm 1/1 Running 1 4h +eshop-payment-api-7988db5f76-z76tc 0/1 Running 19 4h +eshop-rabbitmq-6b68647bc4-qjjrb 1/1 Running 1 4h +eshop-sql-data-5c4fdcccf4-2z5dm 1/1 Running 1 4h +eshop-webhooks-api-588b58bb66-lmx5c 1/1 Running 2 4h +eshop-webhooks-web-565c68b59c-dk8hp 1/1 Running 1 4h +eshop-webmvc-55c596544b-9fqsj 1/1 Running 2 4h +eshop-webshoppingagg-f8547f45b-4mjvp 0/1 Running 21 4h +eshop-webspa-84fd54466d-hzrlb 1/1 Running 2 4h +eshop-webstatus-775b487d4d-tbfbn 1/1 Running 1 4h ``` ```ps1 @@ -71,3 +71,15 @@ enter in k8s/istio/kiali and execute: ``` this script will prompt for a valid account/password and setups the secret in kubernetes (at the moment account/password will be admin/admin we need to modify the yml) + +After enter in /k8s/istio/nginx-ingress that execute, we need to apply the istio integration with nginx-ingress for service-upstream. + +``` +> ./update-nginx-ingress.ps1 +``` + +And After that, we only need to activate the sidecar injection in the default namespace for the eshops deployments, for doing that you must go the folder /k8s/istio +and run: +``` +> ./apply-injection.ps1 +```` \ No newline at end of file diff --git a/k8s/istio/apply-injection.ps1 b/k8s/istio/apply-injection.ps1 new file mode 100644 index 000000000..294eb880f --- /dev/null +++ b/k8s/istio/apply-injection.ps1 @@ -0,0 +1,2 @@ +kubectl label namespace default istio-injection=enabled +kubectl get namespace -L istio-injection diff --git a/k8s/istio/delete-istio.ps1 b/k8s/istio/delete-istio.ps1 new file mode 100644 index 000000000..b1fa99e86 --- /dev/null +++ b/k8s/istio/delete-istio.ps1 @@ -0,0 +1,2 @@ +helm delete --purge istio +kubectl delete -f install/kubernetes/helm/istio/templates/crds.yaml -n istio-system \ No newline at end of file diff --git a/k8s/istio/deploy-istio-helm.ps1 b/k8s/istio/deploy-istio-helm.ps1 index 704813121..5bfcbc1e7 100644 --- a/k8s/istio/deploy-istio-helm.ps1 +++ b/k8s/istio/deploy-istio-helm.ps1 @@ -1,3 +1,4 @@ $ISTIO_VERSION="1.0.6" cd istio-$ISTIO_VERSION -helm install install/kubernetes/helm/istio --name istio --namespace istio-system --set global.controlPlaneSecurityEnabled=true --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true \ No newline at end of file +helm install install/kubernetes/helm/istio --wait --name istio --namespace istio-system --set global.controlPlaneSecurityEnabled=true --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true --set ingress.enabled=false --set gateways.istio-ingressgateway.enabled=false +cd .. \ No newline at end of file diff --git a/k8s/istio/kiali/secrets.yml b/k8s/istio/kiali/secrets.yml index 7185f1383..fb6155d54 100644 --- a/k8s/istio/kiali/secrets.yml +++ b/k8s/istio/kiali/secrets.yml @@ -7,5 +7,5 @@ metadata: app: kiali type: Opaque data: - username: YQBkAG0AaQBuAA== - passphrase: YQBkAG0AaQBuAA== \ No newline at end of file + username: YWRtaW4= + passphrase: MWYyZDFlMmU2N2Rm \ No newline at end of file diff --git a/k8s/istio/kiali/set-kiali-credentials.ps1 b/k8s/istio/kiali/set-kiali-credentials.ps1 index bd778b647..dad0f5754 100644 --- a/k8s/istio/kiali/set-kiali-credentials.ps1 +++ b/k8s/istio/kiali/set-kiali-credentials.ps1 @@ -32,5 +32,5 @@ $KIALIUSERNAME = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($us $plainpassword = Get-PlainText $password; $KIALIPASSWORD = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($plainpassword)) -Write-Host "setting username [$KIALIUSERNAME] and password [$KIALIPASSWORD]" -ForegroundColor Blue -kubectl apply -f secrets.yml \ No newline at end of file +Write-Host "Creating Kiali Secret in namespace [$NAMESPACE]" -ForegroundColor Blue +kubectl -n $NAMESPACE create secret generic kiali --from-literal=username=$KIALIUSERNAME --from-literal=passphrase=$KIALIPASSWORD \ No newline at end of file diff --git a/k8s/istio/nginx-ingress/cloud-generic.yaml b/k8s/istio/nginx-ingress/cloud-generic.yaml new file mode 100644 index 000000000..945441ab8 --- /dev/null +++ b/k8s/istio/nginx-ingress/cloud-generic.yaml @@ -0,0 +1,21 @@ +kind: Service +apiVersion: v1 +metadata: + name: ingress-nginx + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +spec: + externalTrafficPolicy: Local + type: LoadBalancer + selector: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + ports: + - name: http + port: 80 + targetPort: http + - name: https + port: 443 + targetPort: https \ No newline at end of file diff --git a/k8s/istio/nginx-ingress/cm.yaml b/k8s/istio/nginx-ingress/cm.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7818fd15b5c6ea138c70f6b77083b47fcde28e09 GIT binary patch literal 526 zcma)3O$&lh5S(++e-Q7_NGif>=dRr~Kaflxno<4uYIZFXA`;Q(o86tAoqgOxSmf9t zL5+rg6-oqfaK;={OmHApB35jp(UeGrEu>O1j;uZL7W0)eP}Ctu!CS;=LFNxC5vjHC z$lhv3%^t#%Fw;{NGa{jKiyG08QK7^e7`+L0>3fZ3wPdZ?$#9lbr~1!5R3bXM&IbE| zA1zsB{?0-1MHIa&8%`TCKN->S+eb_8inCs+I-+AKAK90o7ddV(R+k&|v8JbP@5--A P*@wft1;0L)SZUQ0cZpZ^ literal 0 HcmV?d00001 diff --git a/k8s/istio/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml b/k8s/istio/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml new file mode 100644 index 000000000..3a3fcf5a5 --- /dev/null +++ b/k8s/istio/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml @@ -0,0 +1,3 @@ +data: + mvc_e: http://10.0.75.1/webmvc + \ No newline at end of file diff --git a/k8s/istio/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml b/k8s/istio/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml new file mode 100644 index 000000000..1475deec1 --- /dev/null +++ b/k8s/istio/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml @@ -0,0 +1,3 @@ +data: + urls__IdentityUrl: http://10.0.75.1/identity + urls__mvc: http://10.0.75.1/webmvc diff --git a/k8s/istio/nginx-ingress/local-dockerk8s/mvc-fix.yaml b/k8s/istio/nginx-ingress/local-dockerk8s/mvc-fix.yaml new file mode 100644 index 000000000..b9ecd4cba --- /dev/null +++ b/k8s/istio/nginx-ingress/local-dockerk8s/mvc-fix.yaml @@ -0,0 +1,39 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + annotations: + ingress.kubernetes.io/ssl-redirect: "false" + kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/ssl-redirect: "false" + labels: + app: webmvc + name: eshop-webmvc-loopback + namespace: default +spec: + rules: + - http: + paths: + - backend: + serviceName: webmvc + servicePort: http + path: /webmvc +--- +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + annotations: + ingress.kubernetes.io/ssl-redirect: "false" + kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/ssl-redirect: "false" + labels: + app: identity-api + name: eshop-identity-api-loopback + namespace: default +spec: + rules: + - http: + paths: + - backend: + serviceName: identity + servicePort: http + path: /identity \ No newline at end of file diff --git a/k8s/istio/nginx-ingress/mandatory.yaml b/k8s/istio/nginx-ingress/mandatory.yaml new file mode 100644 index 000000000..0b9ea035e --- /dev/null +++ b/k8s/istio/nginx-ingress/mandatory.yaml @@ -0,0 +1,239 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: ingress-nginx + +--- + +kind: ConfigMap +apiVersion: v1 +metadata: + name: nginx-configuration + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + +--- + +apiVersion: v1 +kind: ServiceAccount +metadata: + name: nginx-ingress-serviceaccount + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: nginx-ingress-clusterrole + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +rules: + - apiGroups: + - "" + resources: + - configmaps + - endpoints + - nodes + - pods + - secrets + verbs: + - list + - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - apiGroups: + - "" + resources: + - services + verbs: + - get + - list + - watch + - apiGroups: + - "extensions" + resources: + - ingresses + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - "extensions" + resources: + - ingresses/status + verbs: + - update + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: Role +metadata: + name: nginx-ingress-role + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +rules: + - apiGroups: + - "" + resources: + - configmaps + - pods + - secrets + - namespaces + verbs: + - get + - apiGroups: + - "" + resources: + - configmaps + resourceNames: + # Defaults to "-" + # Here: "-" + # This has to be adapted if you change either parameter + # when launching the nginx-ingress-controller. + - "ingress-controller-leader-nginx" + verbs: + - get + - update + - apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - apiGroups: + - "" + resources: + - endpoints + verbs: + - get + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: RoleBinding +metadata: + name: nginx-ingress-role-nisa-binding + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: nginx-ingress-role +subjects: + - kind: ServiceAccount + name: nginx-ingress-serviceaccount + namespace: ingress-nginx + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: nginx-ingress-clusterrole-nisa-binding + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: nginx-ingress-clusterrole +subjects: + - kind: ServiceAccount + name: nginx-ingress-serviceaccount + namespace: ingress-nginx + +--- + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: nginx-ingress-controller + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + template: + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + annotations: + prometheus.io/port: "10254" + prometheus.io/scrape: "true" + service-upstream: "true" + spec: + serviceAccountName: nginx-ingress-serviceaccount + containers: + - name: nginx-ingress-controller + image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.20.0 + args: + - /nginx-ingress-controller + - --configmap=$(POD_NAMESPACE)/nginx-configuration + - --publish-service=$(POD_NAMESPACE)/ingress-nginx + - --annotations-prefix=nginx.ingress.kubernetes.io + securityContext: + capabilities: + drop: + - ALL + add: + - NET_BIND_SERVICE + # www-data -> 33 + runAsUser: 33 + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + ports: + - name: http + containerPort: 80 + - name: https + containerPort: 443 + livenessProbe: + failureThreshold: 3 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + readinessProbe: + failureThreshold: 3 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 diff --git a/k8s/istio/nginx-ingress/service-nodeport.yaml b/k8s/istio/nginx-ingress/service-nodeport.yaml new file mode 100644 index 000000000..dd82ed3ed --- /dev/null +++ b/k8s/istio/nginx-ingress/service-nodeport.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: ingress-nginx + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +spec: + type: NodePort + ports: + - name: http + port: 80 + targetPort: 80 + protocol: TCP + - name: https + port: 443 + targetPort: 443 + protocol: TCP + selector: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx diff --git a/k8s/istio/nginx-ingress/update-nginx-ingress.ps1 b/k8s/istio/nginx-ingress/update-nginx-ingress.ps1 new file mode 100644 index 000000000..656bd9fe8 --- /dev/null +++ b/k8s/istio/nginx-ingress/update-nginx-ingress.ps1 @@ -0,0 +1 @@ +kubectl apply -f mandatory.yml \ No newline at end of file diff --git a/k8s/nginx-ingress/mandatory-istio.yaml b/k8s/nginx-ingress/mandatory-istio.yaml new file mode 100644 index 000000000..56b1cc3b5 --- /dev/null +++ b/k8s/nginx-ingress/mandatory-istio.yaml @@ -0,0 +1,238 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: ingress-nginx + +--- + +kind: ConfigMap +apiVersion: v1 +metadata: + name: nginx-configuration + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + +--- + +apiVersion: v1 +kind: ServiceAccount +metadata: + name: nginx-ingress-serviceaccount + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: nginx-ingress-clusterrole + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +rules: + - apiGroups: + - "" + resources: + - configmaps + - endpoints + - nodes + - pods + - secrets + verbs: + - list + - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - apiGroups: + - "" + resources: + - services + verbs: + - get + - list + - watch + - apiGroups: + - "extensions" + resources: + - ingresses + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - "extensions" + resources: + - ingresses/status + verbs: + - update + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: Role +metadata: + name: nginx-ingress-role + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +rules: + - apiGroups: + - "" + resources: + - configmaps + - pods + - secrets + - namespaces + verbs: + - get + - apiGroups: + - "" + resources: + - configmaps + resourceNames: + # Defaults to "-" + # Here: "-" + # This has to be adapted if you change either parameter + # when launching the nginx-ingress-controller. + - "ingress-controller-leader-nginx" + verbs: + - get + - update + - apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - apiGroups: + - "" + resources: + - endpoints + verbs: + - get + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: RoleBinding +metadata: + name: nginx-ingress-role-nisa-binding + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: nginx-ingress-role +subjects: + - kind: ServiceAccount + name: nginx-ingress-serviceaccount + namespace: ingress-nginx + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: nginx-ingress-clusterrole-nisa-binding + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: nginx-ingress-clusterrole +subjects: + - kind: ServiceAccount + name: nginx-ingress-serviceaccount + namespace: ingress-nginx + +--- + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: nginx-ingress-controller + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + template: + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + annotations: + prometheus.io/port: "10254" + prometheus.io/scrape: "true" + spec: + serviceAccountName: nginx-ingress-serviceaccount + containers: + - name: nginx-ingress-controller + image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.20.0 + args: + - /nginx-ingress-controller + - --configmap=$(POD_NAMESPACE)/nginx-configuration + - --publish-service=$(POD_NAMESPACE)/ingress-nginx + - --annotations-prefix=nginx.ingress.kubernetes.io + securityContext: + capabilities: + drop: + - ALL + add: + - NET_BIND_SERVICE + # www-data -> 33 + runAsUser: 33 + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + ports: + - name: http + containerPort: 80 + - name: https + containerPort: 443 + livenessProbe: + failureThreshold: 3 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + readinessProbe: + failureThreshold: 3 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 From b19d4f2fc8f2d5c9a54c126e215642f823b7351a Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Thu, 7 Mar 2019 16:29:14 +0100 Subject: [PATCH 06/20] Fix errors on las commit --- k8s/istio/JourneyToIstio.md | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/k8s/istio/JourneyToIstio.md b/k8s/istio/JourneyToIstio.md index 0594bcc73..f34aa88fb 100644 --- a/k8s/istio/JourneyToIstio.md +++ b/k8s/istio/JourneyToIstio.md @@ -4,7 +4,6 @@ You need the eshopsOnContainers configured on your local, with this in a powershell console, we need to enter in /k8s/istio and execute ``` >kubectl get pods -<<<<<<< HEAD NAME READY STATUS RESTARTS AGE eshop-apigwmm-54ccc6c589-557fn 0/1 Running 31 4h eshop-apigwms-7d5f86cf7c-2j2zp 0/1 Running 32 4h @@ -31,34 +30,6 @@ eshop-webmvc-55c596544b-9fqsj 1/1 Running 2 eshop-webshoppingagg-f8547f45b-4mjvp 0/1 Running 21 4h eshop-webspa-84fd54466d-hzrlb 1/1 Running 2 4h eshop-webstatus-775b487d4d-tbfbn 1/1 Running 1 4h -======= -NAME READY STATUS RESTARTS AGE -eshop-apigwmm-54ccc6c589-557fn 0/1 Running 26 3h -eshop-apigwms-7d5f86cf7c-2j2zp 0/1 CrashLoopBackOff 30 3h -eshop-apigwwm-7794b6d879-7j4mt 0/1 CrashLoopBackOff 39 3h -eshop-apigwws-8585f6899f-7kkg2 0/1 Running 11 3h -eshop-basket-api-8bfc5c5f6-8xxcv 0/1 Running 41 3h -eshop-basket-data-66fbc788cc-dmkgb 1/1 Running 0 3h -eshop-catalog-api-c77747b76-4gp6c 0/1 CrashLoopBackOff 40 3h -eshop-identity-api-7574f6b458-4rbp6 0/1 CrashLoopBackOff 44 3h -eshop-keystore-data-5c9c85cb99-s5qz7 1/1 Running 0 3h -eshop-locations-api-64847646d-5wv52 0/1 CrashLoopBackOff 36 3h -eshop-marketing-api-745f9546b8-krjqq 0/1 Running 33 3h -eshop-mobileshoppingagg-7d467f86bd-bw9c7 0/1 Running 22 3h -eshop-nosql-data-579c9d89f8-x4z2k 1/1 Running 0 3h -eshop-ordering-api-5c55bd5464-7hnjx 0/1 CrashLoopBackOff 38 3h -eshop-ordering-backgroundtasks-f6dcb7db4-xq7gr 1/1 Running 22 3h -eshop-ordering-signalrhub-6664868779-dphxm 1/1 Running 0 3h -eshop-payment-api-7988db5f76-z76tc 1/1 Running 17 3h -eshop-rabbitmq-6b68647bc4-qjjrb 1/1 Running 0 3h -eshop-sql-data-5c4fdcccf4-2z5dm 1/1 Running 0 3h -eshop-webhooks-api-588b58bb66-lmx5c 1/1 Running 0 3h -eshop-webhooks-web-565c68b59c-dk8hp 1/1 Running 0 3h -eshop-webmvc-55c596544b-9fqsj 1/1 Running 0 3h -eshop-webshoppingagg-f8547f45b-4mjvp 0/1 CrashLoopBackOff 16 3h -eshop-webspa-84fd54466d-hzrlb 1/1 Running 0 3h -eshop-webstatus-775b487d4d-tbfbn 1/1 Running 0 3h ->>>>>>> abb108e03dd0ddf0b43d7ea4b2f5b307452ac88e ``` ```ps1 @@ -100,7 +71,6 @@ enter in k8s/istio/kiali and execute: ``` this script will prompt for a valid account/password and setups the secret in kubernetes (at the moment account/password will be admin/admin we need to modify the yml) -<<<<<<< HEAD After enter in /k8s/istio/nginx-ingress that execute, we need to apply the istio integration with nginx-ingress for service-upstream. @@ -113,5 +83,3 @@ and run: ``` > ./apply-injection.ps1 ```` -======= ->>>>>>> abb108e03dd0ddf0b43d7ea4b2f5b307452ac88e From d70ea8974358aa34d3d6990de3e3c9db5f1e7017 Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Wed, 13 Mar 2019 16:41:49 +0100 Subject: [PATCH 07/20] Tested on AKS --- k8s/helm/deploy-all-istio.ps1 | 115 +++++++ k8s/helm/deploy-all.ps1 | 8 +- k8s/helm/istio/doc.md | 325 ++++++++++++++++++ k8s/helm/istio/gateway.yml | 15 + k8s/helm/istio/virtualservices.yml | 59 ++++ k8s/istio/JourneyToIstio.md | 85 ----- k8s/istio/apply-injection.ps1 | 2 - k8s/istio/delete-istio.ps1 | 2 - k8s/istio/deploy-istio-helm.ps1 | 8 - k8s/istio/install-istio-local.ps1 | 16 - k8s/istio/kiali/secrets.yml | 16 - k8s/istio/kiali/set-kiali-credentials.ps1 | 41 --- k8s/istio/nginx-ingress/cloud-generic.yaml | 21 -- k8s/istio/nginx-ingress/cm.yaml | Bin 526 -> 0 bytes .../local-dockerk8s/identityapi-cm-fix.yaml | 3 - .../local-dockerk8s/mvc-cm-fix.yaml | 3 - .../local-dockerk8s/mvc-fix.yaml | 39 --- k8s/istio/nginx-ingress/mandatory.yaml | 239 ------------- k8s/istio/nginx-ingress/service-nodeport.yaml | 22 -- .../nginx-ingress/update-nginx-ingress.ps1 | 1 - src/Web/WebMVC/package-lock.json | 2 +- 21 files changed, 520 insertions(+), 502 deletions(-) create mode 100644 k8s/helm/deploy-all-istio.ps1 create mode 100644 k8s/helm/istio/doc.md create mode 100644 k8s/helm/istio/gateway.yml create mode 100644 k8s/helm/istio/virtualservices.yml delete mode 100644 k8s/istio/JourneyToIstio.md delete mode 100644 k8s/istio/apply-injection.ps1 delete mode 100644 k8s/istio/delete-istio.ps1 delete mode 100644 k8s/istio/deploy-istio-helm.ps1 delete mode 100644 k8s/istio/install-istio-local.ps1 delete mode 100644 k8s/istio/kiali/secrets.yml delete mode 100644 k8s/istio/kiali/set-kiali-credentials.ps1 delete mode 100644 k8s/istio/nginx-ingress/cloud-generic.yaml delete mode 100644 k8s/istio/nginx-ingress/cm.yaml delete mode 100644 k8s/istio/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml delete mode 100644 k8s/istio/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml delete mode 100644 k8s/istio/nginx-ingress/local-dockerk8s/mvc-fix.yaml delete mode 100644 k8s/istio/nginx-ingress/mandatory.yaml delete mode 100644 k8s/istio/nginx-ingress/service-nodeport.yaml delete mode 100644 k8s/istio/nginx-ingress/update-nginx-ingress.ps1 diff --git a/k8s/helm/deploy-all-istio.ps1 b/k8s/helm/deploy-all-istio.ps1 new file mode 100644 index 000000000..6ee8a9572 --- /dev/null +++ b/k8s/helm/deploy-all-istio.ps1 @@ -0,0 +1,115 @@ +Param( + [parameter(Mandatory=$false)][string]$registry, + [parameter(Mandatory=$false)][bool]$installIstioOnSystem=$false, + [parameter(Mandatory=$false)][string]$dockerUser, + [parameter(Mandatory=$false)][string]$dockerPassword, + [parameter(Mandatory=$false)][string]$externalDns="aks", + [parameter(Mandatory=$false)][string]$dnsname="eshoptestistio", + [parameter(Mandatory=$false)][string]$appName="eshop", + [parameter(Mandatory=$false)][bool]$deployInfrastructure=$true, + [parameter(Mandatory=$false)][string]$kialiuser="admin", + [parameter(Mandatory=$false)][string]$kialipasswrd="admin", + [parameter(Mandatory=$false)][bool]$clean=$true, + [parameter(Mandatory=$false)][string]$aksName="", + [parameter(Mandatory=$false)][string]$aksRg="", + [parameter(Mandatory=$false)][string]$imageTag="latest", + [parameter(Mandatory=$false)][bool]$useLocalk8s=$false + ) + +$dns = $externalDns + +# Instalamos Istio +# Specify the Istio version that will be leveraged throughout these instructions +$ISTIO_VERSION="1.0.6" + +# Windows +$ProgressPreference = 'SilentlyContinue'; +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +Invoke-WebRequest -URI "https://github.com/istio/istio/releases/download/$ISTIO_VERSION/istio-$ISTIO_VERSION-win.zip" -OutFile "istio-$ISTIO_VERSION.zip" +Remove-Item istio-$ISTIO_VERSION -Recurse -ErrorAction Ignore +Expand-Archive -Path "istio-$ISTIO_VERSION.zip" -DestinationPath . + +if($installIstioOnSystem -eq $true) { + New-Item -ItemType Directory -Force -Path "C:\Program Files\Istio" + mv ./istio-$ISTIO_VERSION/bin/istioctl.exe "C:\Program Files/Istio/" + $PATH = [environment]::GetEnvironmentVariable("PATH", "User") + [environment]::SetEnvironmentVariable("PATH", $PATH + "; C:\Program Files\Istio", "User") +} +# Primero Desinstalamos cualquier cosa que haya en el cluster +if ($clean -eq $true) { + Write-Host "Cleaning previous helm releases..." -ForegroundColor Green + helm delete --purge $(helm ls -q) + kubectl delete -f istio-$ISTIO_VERSION/install/kubernetes/helm/istio/templates/crds.yaml -n istio-system + Write-Host "Previous releases deleted" -ForegroundColor Green +} + +Write-Host "Generating Kiali Credentials" -ForegroundColor Green +#generamos la credenciales para que kiali arranque sin problemas +kubectl -n istio-system create secret generic kiali --from-literal=username=$kialiuser --from-literal=passphrase=$kialipasswrd + + +Write-Host "Deploying Istio in the cluster" -ForegroundColor Green +helm install istio-$ISTIO_VERSION/install/kubernetes/helm/istio --wait --name istio --namespace istio-system --set global.controlPlaneSecurityEnabled=true --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true + +Write-Host "Setting Up Gateway" +kubectl delete gateway istio-autogenerated-k8s-ingress -n istio-system +kubectl apply -f ./istio/gateway.yml + +if ($useLocalk8s -eq $true) { + $dns="localhost" +} +else { + Write-Host "Resolving DNS to Gateway public IP" -ForegroundColor Green + $ipaddress = $(kubectl get service istio-ingressgateway -n istio-system)[1] | %{ $_.Split(' ')[9];} + $query = "[?ipAddress!=null]|[?contains([ipAddress], '$ipaddress')].[id]" + $resid = az network public-ip list --query $query --output tsv + $jsonresponse = az network public-ip update --ids $resid --dns-name $dnsname + $externalDns = ($jsonresponse | ConvertFrom-Json).dnsSettings.fqdn + Write-Host "$externalDns is pointing to Cluster public ip $ipaddress" +} + +$useCustomRegistry=$false +if (-not [string]::IsNullOrEmpty($registry)) { + $useCustomRegistry=$true + if ([string]::IsNullOrEmpty($dockerUser) -or [string]::IsNullOrEmpty($dockerPassword)) { + Write-Host "Error: Must use -dockerUser AND -dockerPassword if specifying custom registry" -ForegroundColor Red + exit 1 + } +} +Write-Host "Begin eShopOnContainers installation using Helm" -ForegroundColor Green + +$infras = ("sql-data", "nosql-data", "rabbitmq", "keystore-data", "basket-data") +$charts = ("eshop-common", "apigwmm", "apigwms", "apigwwm", "apigwws", "basket-api","catalog-api", "identity-api", "locations-api", "marketing-api", "mobileshoppingagg","ordering-api","ordering-backgroundtasks","ordering-signalrhub", "payment-api", "webmvc", "webshoppingagg", "webspa", "webstatus", "webhooks-api", "webhooks-web") + +if ($deployInfrastructure) { + foreach ($infra in $infras) { + Write-Host "Installing infrastructure: $infra" -ForegroundColor Green + helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$externalDns --name="$appName-$infra" $infra + } +} + +foreach ($chart in $charts) { + Write-Host "Installing: $chart" -ForegroundColor Green + if ($useCustomRegistry) { + helm install --set inf.registry.server=$registry --set inf.registry.login=$dockerUser --set inf.registry.pwd=$dockerPassword --set inf.registry.secretName=eshop-docker-scret --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart + } + else { + if ($chart -ne "eshop-common") { # eshop-common is ignored when no secret must be deployed + helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$externalDns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart + } + } +} + +Write-Host "helm charts installed." -ForegroundColor Green +Write-Host "Appling Virtual Services for routing." -ForegroundColor Green +kubectl apply -f ./istio/virtualservices.yml + +Remove-Item istio-$ISTIO_VERSION -Recurse -ErrorAction Ignore +Remove-Item istio-$ISTIO_VERSION.zip -Recurse -ErrorAction Ignore + + + + + + + diff --git a/k8s/helm/deploy-all.ps1 b/k8s/helm/deploy-all.ps1 index 1819c9a67..9e046363a 100644 --- a/k8s/helm/deploy-all.ps1 +++ b/k8s/helm/deploy-all.ps1 @@ -2,7 +2,7 @@ Param( [parameter(Mandatory=$false)][string]$registry, [parameter(Mandatory=$false)][string]$dockerUser, [parameter(Mandatory=$false)][string]$dockerPassword, - [parameter(Mandatory=$false)][string]$externalDns, + [parameter(Mandatory=$false)][string]$externalDns="eshoptestistio.westus.cloudapp.azure.com", [parameter(Mandatory=$false)][string]$appName="eshop", [parameter(Mandatory=$false)][bool]$deployInfrastructure=$true, [parameter(Mandatory=$false)][bool]$clean=$true, @@ -66,7 +66,8 @@ $charts = ("eshop-common", "apigwmm", "apigwms", "apigwwm", "apigwws", "basket-a if ($deployInfrastructure) { foreach ($infra in $infras) { Write-Host "Installing infrastructure: $infra" -ForegroundColor Green - helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --name="$appName-$infra" $infra + #helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --name="$appName-$infra" $infra + helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$dns --name="$appName-$infra" $infra } } @@ -77,7 +78,8 @@ foreach ($chart in $charts) { } else { if ($chart -ne "eshop-common") { # eshop-common is ignored when no secret must be deployed - helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart + #helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart + helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart } } } diff --git a/k8s/helm/istio/doc.md b/k8s/helm/istio/doc.md new file mode 100644 index 000000000..6d0782a59 --- /dev/null +++ b/k8s/helm/istio/doc.md @@ -0,0 +1,325 @@ +# Using Helm Charts to deploy eShopOnContainers to AKS with ISTIO + +It is possible to deploy eShopOnContainers on a AKS using [Helm](https://helm.sh/) instead of custom scripts (that will be deprecated soon). + +## Create Kubernetes cluster in AKS +You can create the AKS cluster by using two ways: + +- A. Use Azure CLI: Follow a procedure suing [Azure CLI like here](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough), but make sure you **enable RBAC** with `--enable-rbac` in `az aks create` command. + +- B. Use Azure's portal + +The following steps are using the Azure portal to create the AKS cluster: + +- Start the process by providing the general data, like in the following screenshot: + +![image](https://user-images.githubusercontent.com/1712635/45787360-c59ecd80-bc29-11e8-9565-c989ad6ad57b.png) + +- Then, very important, in the next step, enable RBAC: + +![image](https://user-images.githubusercontent.com/1712635/45780917-8bc2cc80-bc13-11e8-87ac-2942b3c7496d.png) + + You can use **basic network** settings since for a test you don't need integration into any existing VNET. + +![image](https://user-images.githubusercontent.com/1712635/45780991-b745b700-bc13-11e8-926b-afac57229d0a.png) + +- You can also enable monitoring: + +![image](https://user-images.githubusercontent.com/1712635/45781148-1277a980-bc14-11e8-8614-f7a239731bec.png) + +- Finally, create the cluster. It'll take a few minutes for it to be ready. + +### Configure RBAC security for K8s dashboard service-account + +In order NOT to get errors in the Kubernetes dashboard, you'll need to set the following service-account steps. + +Here you can see the errors you might see: +![image](https://user-images.githubusercontent.com/1712635/45784384-5622e100-bc1d-11e8-8d33-e22fd955150a.png) + +Now, just run the Azure CLI command to browse the Kubernetes Dashboard: + +`az aks browse --resource-group pro-eshop-aks-helm-linux-resgrp --name pro-eshop-aks-helm-linux` + +![image](https://user-images.githubusercontent.com/1712635/45786406-2d9ee500-bc25-11e8-83e9-bdfc302e80f1.png) + + +## Additional pre-requisites + +In addition to having an AKS cluster created in Azure and having kubectl and Azure CLI installed in your local machine and configured to use your Azure subscription, you also need the following pre-requisites: + +### Install Helm + +You need to have helm installed on your machine, and Tiller must be installed on the AKS. Follow these instructions on how to ['Install applications with Helm in Azure Kubernetes Service (AKS)'](https://docs.microsoft.com/en-us/azure/aks/kubernetes-helm) to setup Helm and Tiller for AKS. + +**Note**: If your ASK cluster is not RBAC-enabled (default option in portal) you may receive following error when running a helm command: + +``` +Error: Get http://localhost:8080/api/v1/namespaces/kube-system/configmaps?labelSelector=OWNER%!D(MISSING)TILLER: dial tcp [::1]:8080: connect: connection refused +``` + +If so, type: + +``` +kubectl --namespace=kube-system edit deployment/tiller-deploy +``` + +Your default text editor will popup with the YAML definition of the tiller deploy. Search for: + +``` +automountServiceAccountToken: false +``` + +And change it to: + +``` +automountServiceAccountToken: true +``` + +Save the file and close the editor. This should reapply the deployment in the cluster. Now Helm commands should work. + +## Install eShopOnContainers with Istio using Helm + +All steps need to be performed on `/k8s/helm` folder. The easiest way is to use the `deploy-all-istio.ps1` script from a Powershell window: + +``` +.\deploy-all-istio.ps1 -dnsname eshoptestistio -externalDns aks -aksName eshoptest -aksRg eshoptest -imageTag dev +``` + +This will install all the [eShopOnContainers public images](https://hub.docker.com/u/eshop/) with tag `dev` on the AKS named `eshoptest` in the resource group `eshoptest` and with the dns url: http://**eshoptest**.westus.cloudapp.azure.com/ . By default all infrastructure (sql, mongo, rabbit and redis) is installed also in the cluster. + +Once the script is run, you should see following output when using `kubectl get deployment`: + +``` +NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE +eshop-apigwmm 1 1 1 1 4d +eshop-apigwms 1 1 1 1 4d +eshop-apigwwm 1 1 1 1 4d +eshop-apigwws 1 1 1 1 4d +eshop-basket-api 1 1 1 1 4d +eshop-basket-data 1 1 1 1 4d +eshop-catalog-api 1 1 1 1 4d +eshop-identity-api 1 1 1 1 4d +eshop-keystore-data 1 1 1 1 4d +eshop-locations-api 1 1 1 1 4d +eshop-marketing-api 1 1 1 1 4d +eshop-mobileshoppingagg 1 1 1 1 4d +eshop-nosql-data 1 1 1 1 4d +eshop-ordering-api 1 1 1 1 4d +eshop-ordering-backgroundtasks 1 1 1 1 4d +eshop-ordering-signalrhub 1 1 1 1 4d +eshop-payment-api 1 1 1 1 4d +eshop-rabbitmq 1 1 1 1 4d +eshop-sql-data 1 1 1 1 4d +eshop-webmvc 1 1 1 1 4d +eshop-webshoppingagg 1 1 1 1 4d +eshop-webspa 1 1 1 1 4d +eshop-webstatus 1 1 1 1 4d +``` + +Every public service is exposed through the istio ingress gateway. +Yo can see the ingress gateway public ip doing `kubectl get services -n istio-system` +``` +grafana ClusterIP 10.0.204.87 3000/TCP 1h +istio-citadel ClusterIP 10.0.23.86 8060/TCP,9093/TCP 1h +istio-egressgateway ClusterIP 10.0.136.169 80/TCP,443/TCP 1h +istio-galley ClusterIP 10.0.113.51 443/TCP,9093/TCP 1h +istio-ingressgateway LoadBalancer 10.0.76.80 40.118.189.161 80:31380/TCP,443:31390/TCP,31400:31400/TCP,15011:31276/TCP,8060:30519/TCP,853:31698/TCP,15030:31453/TCP,15031:32362/TCP 1h +istio-pilot ClusterIP 10.0.164.253 15010/TCP,15011/TCP,8080/TCP,9093/TCP 1h +istio-policy ClusterIP 10.0.170.49 9091/TCP,15004/TCP,9093/TCP 1h +istio-sidecar-injector ClusterIP 10.0.251.12 443/TCP 1h +istio-telemetry ClusterIP 10.0.195.112 9091/TCP,15004/TCP,9093/TCP,42422/TCP 1h +jaeger-agent ClusterIP None 5775/UDP,6831/UDP,6832/UDP 1h +jaeger-collector ClusterIP 10.0.123.98 14267/TCP,14268/TCP 1h +jaeger-query ClusterIP 10.0.244.146 16686/TCP 1h +kiali ClusterIP 10.0.182.12 20001/TCP 1h +prometheus ClusterIP 10.0.136.223 9090/TCP 1h +tracing ClusterIP 10.0.57.236 80/TCP 1h +zipkin ClusterIP 10.0.30.57 9411/TCP 1h +``` + +You can view the MVC client at http://[dns]/ + +## Customizing the deployment + +### Using your own images + +To use your own images instead of the public ones, you have to pass following additional parameters to the `deploy-all-istio.ps1` script: + +* `registry`: Login server for the Docker registry +* `dockerUser`: User login for the Docker registry +* `dockerPassword`: User password for the Docker registry + +This will deploy a secret on the cluster to connect to the specified server, and all image names deployed will be prepended with `registry/` value. + +### Not deploying infrastructure containers + +If you want to use external resources, use `-deployInfrastructure $false` to not deploy infrastructure containers. However **you still have to manually update the scripts to provide your own configuration** (see next section). + +### Providing your own configuration + +The file `inf.yaml` contains the description of the infrastructure used. File is docummented so take a look on it to understand all of its entries. If using external resources you need to edit this file according to your needs. You'll need to edit: + +* `inf.sql.host` with the host name of the SQL Server +* `inf.sql.common` entries to provide your SQL user, password. `Pid` is not used when using external resources (it is used to set specific product id for the SQL Server container). +* `inf.sql.catalog`, `inf.sql.ordering`, `inf.sql.identity`: To provide the database names for catalog, ordering and identity services +* `mongo.host`: With the host name of the Mongo DB +* `mongo.locations`, `mongo.marketing` with the database names for locations and marketing services +* `redis.basket.constr` with the connection string to Redis for Basket Service. Note that `redis.basket.svc` is not used when using external services +* `redis.keystore.constr` with the connection string to Redis for Keystore Service. Note that `redis.keystore.svc` is not used when using external services +* `eventbus.constr` with the connection string to Azure Service Bus and `eventbus.useAzure` to `true` to use Azure service bus. Note that `eventbus.svc` is not used when using external services + +### Using Azure storage for Catalog Photos + +Using Azure storage for catalog (and marketing) photos is not directly supported, but you can accomplish it by editing the file `k8s/helm/catalog-api/templates/configmap.yaml`. Search for lines: + +``` +catalog__PicBaseUrl: http://{{ $webshoppingapigw }}/api/v1/c/catalog/items/[0]/pic/ +``` + +And replace it for: + +``` +catalog__PicBaseUrl: http:/// +``` + +In the same way, to use Azure storage for the marketing service, have to edit the file `k8s/helm/marketing-api/templates/configmap.yaml` and replacing the line: + +``` +marketing__PicBaseUrl: http://{{ $webshoppingapigw }}/api/v1/c/catalog/items/[0]/pic/ +``` + +by: + +``` +marketing__PicBaseUrl: http:/// +``` + +# Using Helm Charts to deploy eShopOnContainers to a local Kubernetes in Windows with 'Docker for Windows' + +## Additional pre-requisites + +In addition to having Docker for Windows/Mac with Kubernetes enabled and having kubectl ayou also need the following pre-requisites: + +### Install Helm + +You need to have helm installed on your machine, and Tiller must be installed on the local Docker Kubernetes cluster. Once you have [Helm downloaded](https://helm.sh/) and installed on your machine you must: + +1. Create the tiller service account, by running `kubectl apply -f helm-rbac.yaml` from `/k8s` folder +2. Install tiller and configure it to use the tiller service account by typing `helm init --service-account tiller` + +## Install eShopOnContainers with Istio using Helm + +All steps need to be performed on `/k8s/helm` folder. The easiest way is to use the `deploy-all-istio.ps1` script from a Powershell window: + +``` +.\deploy-all-istio.ps1 -imageTag dev -useLocalk8s $true +``` + +The parameter `useLocalk8s` to $true, forces the script to use `localhost` as the DNS for all Helm charts. + +This will install all the [eShopOnContainers public images](https://hub.docker.com/u/eshop/) with tag `dev` on the Docker local Kubernetes cluster. By default all infrastructure (sql, mongo, rabbit and redis) is installed also in the cluster. + +Once the script is run, you should see following output when using `kubectl get deployment`: + +``` +NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE +eshop-apigwmm 1 1 1 1 2h +eshop-apigwms 1 1 1 1 2h +eshop-apigwwm 1 1 1 1 2h +eshop-apigwws 1 1 1 1 2h +eshop-basket-api 1 1 1 1 2h +eshop-basket-data 1 1 1 1 2h +eshop-catalog-api 1 1 1 1 2h +eshop-identity-api 1 1 1 1 2h +eshop-keystore-data 1 1 1 1 2h +eshop-locations-api 1 1 1 1 2h +eshop-marketing-api 1 1 1 1 2h +eshop-mobileshoppingagg 1 1 1 1 2h +eshop-nosql-data 1 1 1 1 2h +eshop-ordering-api 1 1 1 1 2h +eshop-ordering-backgroundtasks 1 1 1 1 2h +eshop-ordering-signalrhub 1 1 1 1 2h +eshop-payment-api 1 1 1 1 2h +eshop-rabbitmq 1 1 1 1 2h +eshop-sql-data 1 1 1 1 2h +eshop-webmvc 1 1 1 1 2h +eshop-webshoppingagg 1 1 1 1 2h +eshop-webspa 1 1 1 1 2h +eshop-webstatus 1 1 1 1 2h +``` + +Note that istio ingress gateway is bound to DNS localhost and the host is also "localhost". So, you can access the webspa by typing `http://localhost` and the MVC by typing `http://localhost/` + +As this is the Docker local K8s cluster, you can see also the containers running on your machine. If you type `docker ps` you'll see all them: + +``` +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +fec1e3499416 a3f21ec4bd11 "/entrypoint.sh /ngi…" 9 minutes ago Up 9 minutes k8s_nginx-ingress-controller_nginx-ingress-controller-f88c75bc6-5xs2n_ingress-nginx_f1cc7094-e68f-11e8-b4b6-00155d016146_0 +76485867f032 eshop/payment.api "dotnet Payment.API.…" 2 hours ago Up 2 hours k8s_payment-api_eshop-payment-api-75d5f9bdf6-6zx2v_default_4a3cdab4-e67f-11e8-b4b6-00155d016146_1 +c2c4640ed610 eshop/marketing.api "dotnet Marketing.AP…" 2 hours ago Up 2 hours k8s_marketing-api_eshop-marketing-api-6b8c5989fd-jpxqv_default_45780626-e67f-11e8-b4b6-00155d016146_1 +85301d538574 eshop/ordering.signalrhub "dotnet Ordering.Sig…" 2 hours ago Up 2 hours k8s_ordering-signalrhub_eshop-ordering-signalrhub-58cf5ff6-cnlm8_default_4932c344-e67f-11e8-b4b6-00155d016146_1 +7a408a98000e eshop/ordering.backgroundtasks "dotnet Ordering.Bac…" 2 hours ago Up 2 hours k8s_ordering-backgroundtasks_eshop-ordering-backgroundtasks-cc8f6d4d8-ztfk7_default_47f9cf10-e67f-11e8-b4b6-00155d016146_1 +12c64b3a13e0 eshop/basket.api "dotnet Basket.API.d…" 2 hours ago Up 2 hours k8s_basket-api_eshop-basket-api-658546684d-6hlvd_default_4262d022-e67f-11e8-b4b6-00155d016146_1 +133fccfeeff3 eshop/webstatus "dotnet WebStatus.dll" 2 hours ago Up 2 hours k8s_webstatus_eshop-webstatus-7f46479dc4-bqnq7_default_4dc13eb2-e67f-11e8-b4b6-00155d016146_0 +00c6e4c52135 eshop/webspa "dotnet WebSPA.dll" 2 hours ago Up 2 hours k8s_webspa_eshop-webspa-64cb8df9cb-dcbwg_default_4cd47376-e67f-11e8-b4b6-00155d016146_0 +d4507f1f6b1a eshop/webshoppingagg "dotnet Web.Shopping…" 2 hours ago Up 2 hours k8s_webshoppingagg_eshop-webshoppingagg-cc94fc86-sxd2v_default_4be6cdb9-e67f-11e8-b4b6-00155d016146_0 +9178e26703da eshop/webmvc "dotnet WebMVC.dll" 2 hours ago Up 2 hours k8s_webmvc_eshop-webmvc-985779684-4br5z_default_4addd4d6-e67f-11e8-b4b6-00155d016146_0 +1088c281c710 eshop/ordering.api "dotnet Ordering.API…" 2 hours ago Up 2 hours k8s_ordering-api_eshop-ordering-api-fb8c548cb-k68x9_default_4740958a-e67f-11e8-b4b6-00155d016146_0 +12424156d5c9 eshop/mobileshoppingagg "dotnet Mobile.Shopp…" 2 hours ago Up 2 hours k8s_mobileshoppingagg_eshop-mobileshoppingagg-b54645d7b-rlrgh_default_46c00017-e67f-11e8-b4b6-00155d016146_0 +65463ffd437d eshop/locations.api "dotnet Locations.AP…" 2 hours ago Up 2 hours k8s_locations-api_eshop-locations-api-577fc94696-dfhq8_default_44929c4b-e67f-11e8-b4b6-00155d016146_0 +5b3431873763 eshop/identity.api "dotnet Identity.API…" 2 hours ago Up 2 hours k8s_identity-api_eshop-identity-api-85d9b79f4-s5ks7_default_43d6eb7c-e67f-11e8-b4b6-00155d016146_0 +7c8e77252459 eshop/catalog.api "dotnet Catalog.API.…" 2 hours ago Up 2 hours k8s_catalog-api_eshop-catalog-api-59fd444fb-ztvhz_default_4356705a-e67f-11e8-b4b6-00155d016146_0 +94d95d0d3653 eshop/ocelotapigw "dotnet OcelotApiGw.…" 2 hours ago Up 2 hours k8s_apigwws_eshop-apigwws-65474b979d-n99jw_default_41395473-e67f-11e8-b4b6-00155d016146_0 +bc4bbce71d5f eshop/ocelotapigw "dotnet OcelotApiGw.…" 2 hours ago Up 2 hours k8s_apigwwm_eshop-apigwwm-857c549dd8-8w5gv_default_4098d770-e67f-11e8-b4b6-00155d016146_0 +840aabcceaa9 eshop/ocelotapigw "dotnet OcelotApiGw.…" 2 hours ago Up 2 hours k8s_apigwms_eshop-apigwms-5b94dfb54b-dnmr9_default_401fc611-e67f-11e8-b4b6-00155d016146_0 +aabed7646f5b eshop/ocelotapigw "dotnet OcelotApiGw.…" 2 hours ago Up 2 hours k8s_apigwmm_eshop-apigwmm-85f96cbdb4-dhfwr_default_3ed7967a-e67f-11e8-b4b6-00155d016146_0 +49c5700def5a f06a5773f01e "docker-entrypoint.s…" 2 hours ago Up 2 hours k8s_basket-data_eshop-basket-data-66fbc788cc-csnlw_default_3e0c45fe-e67f-11e8-b4b6-00155d016146_0 +a5db4c521807 f06a5773f01e "docker-entrypoint.s…" 2 hours ago Up 2 hours k8s_keystore-data_eshop-keystore-data-5c9c85cb99-8k56s_default_3ce1a273-e67f-11e8-b4b6-00155d016146_0 +aae88fd2d810 d69a5113ceae "docker-entrypoint.s…" 2 hours ago Up 2 hours k8s_rabbitmq_eshop-rabbitmq-6b68647bc4-gr565_default_3c37ee6a-e67f-11e8-b4b6-00155d016146_0 +65d49ca9589d bbed8d0e01c1 "docker-entrypoint.s…" 2 hours ago Up 2 hours k8s_nosql-data_eshop-nosql-data-579c9d89f8-mtt95_default_3b9c1f89-e67f-11e8-b4b6-00155d016146_0 +090e0dde2ec4 bbe2822dfe38 "/opt/mssql/bin/sqls…" 2 hours ago Up 2 hours k8s_sql-data_eshop-sql-data-5c4fdcccf4-bscdb_default_3afd29b8-e67f-11e8-b4b6-00155d016146_0 +``` + +## Known issues + +Login from the webmvc results in following error: HttpRequestException: Response status code does not indicate success: 404 (Not Found). + +The reason is because MVC needs to access the Identity Server from both outside the container (browser) and inside the container (C# code). Thus, the configuration uses always the *external url* of the Identity Server, which in this case is just `http://localhost/identity-api`. But this external url is incorrect when used from C# code, and the web mvc can't access the identity api. This is the only case when this issue happens (and is the reason why we use 10.0.75.1 for local address in web mvc in local development mode) + +Solving this requires some manual steps: + +Update the configmap of Web MVC by typing (**line breaks are mandatory**) and your cluster dns name has to be the same of your environment: + +``` +kubectl patch cm cfg-eshop-webmvc --type strategic --patch @' +data: + urls__IdentityUrl: http://**eshoptest**.westus.cloudapp.azure.com/identity + urls__mvc: http://**eshoptest**.westus.cloudapp.azure.com/webmvc +'@ +``` + +Update the configmap of Identity API by typing (**line breaks are mandatory**): + +``` +kubectl patch cm cfg-eshop-identity-api --type strategic --patch @' +data: + mvc_e: http://**eshoptest**.westus.cloudapp.azure.com/webmvc +'@ +``` + +Restart the SQL Server pod to ensure the database is recreated again: + +``` +kubectl delete pod --selector app=sql-data +``` + +Wait until SQL Server pod is ready to accept connections and then restart all other pods: + +``` +kubectl delete pod --selector="app!=sql-data" +``` + +**Note:** Pods are deleted to ensure the databases are recreated again, as identity api stores its client names and urls in the database. + +Now, you can access the MVC app using: `http://**eshoptest**.westus.cloudapp.azure.com/`. + diff --git a/k8s/helm/istio/gateway.yml b/k8s/helm/istio/gateway.yml new file mode 100644 index 000000000..fbc61dadd --- /dev/null +++ b/k8s/helm/istio/gateway.yml @@ -0,0 +1,15 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: Gateway +metadata: + name: istio-ingressgateway + #namespace: istio-system +spec: + selector: + istio: ingressgateway # use Istio default gateway implementation + servers: + - port: + number: 80 + name: http + protocol: HTTP + hosts: + - "*" \ No newline at end of file diff --git a/k8s/helm/istio/virtualservices.yml b/k8s/helm/istio/virtualservices.yml new file mode 100644 index 000000000..e01f4678f --- /dev/null +++ b/k8s/helm/istio/virtualservices.yml @@ -0,0 +1,59 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: webmvcvs + namespace: default +spec: + hosts: + - "*" + gateways: + - istio-ingressgateway + http: + - match: + - uri: + prefix: / + route: + - destination: + port: + number: 80 + host: webmvc +--- +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: webshoppingapigwvs + namespace: default +spec: + hosts: + - "*" + gateways: + - istio-ingressgateway + http: + - match: + - uri: + prefix: /webshoppingapigw + route: + - destination: + port: + number: 80 + host: webshoppingapigw +--- +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: identityvs + namespace: default +spec: + hosts: + - "*" + gateways: + - istio-ingressgateway + http: + - match: + - uri: + prefix: /identity + route: + - destination: + port: + number: 80 + host: identity \ No newline at end of file diff --git a/k8s/istio/JourneyToIstio.md b/k8s/istio/JourneyToIstio.md deleted file mode 100644 index f34aa88fb..000000000 --- a/k8s/istio/JourneyToIstio.md +++ /dev/null @@ -1,85 +0,0 @@ -# ISTIO on Local -## Prerequisites on local -You need the eshopsOnContainers configured on your local, with this -in a powershell console, we need to enter in /k8s/istio and execute -``` ->kubectl get pods -NAME READY STATUS RESTARTS AGE -eshop-apigwmm-54ccc6c589-557fn 0/1 Running 31 4h -eshop-apigwms-7d5f86cf7c-2j2zp 0/1 Running 32 4h -eshop-apigwwm-7794b6d879-7j4mt 0/1 Running 44 4h -eshop-apigwws-8585f6899f-7kkg2 0/1 Running 13 4h -eshop-basket-api-8bfc5c5f6-8xxcv 1/1 Running 47 4h -eshop-basket-data-66fbc788cc-dmkgb 1/1 Running 1 4h -eshop-catalog-api-c77747b76-4gp6c 0/1 Running 48 4h -eshop-identity-api-7574f6b458-4rbp6 0/1 Running 55 4h -eshop-keystore-data-5c9c85cb99-s5qz7 1/1 Running 1 4h -eshop-locations-api-64847646d-5wv52 1/1 Running 42 4h -eshop-marketing-api-745f9546b8-krjqq 1/1 Running 40 4h -eshop-mobileshoppingagg-7d467f86bd-bw9c7 0/1 Running 24 4h -eshop-nosql-data-579c9d89f8-x4z2k 1/1 Running 1 4h -eshop-ordering-api-5c55bd5464-7hnjx 0/1 Running 46 4h -eshop-ordering-backgroundtasks-f6dcb7db4-xq7gr 0/1 Running 24 4h -eshop-ordering-signalrhub-6664868779-dphxm 1/1 Running 1 4h -eshop-payment-api-7988db5f76-z76tc 0/1 Running 19 4h -eshop-rabbitmq-6b68647bc4-qjjrb 1/1 Running 1 4h -eshop-sql-data-5c4fdcccf4-2z5dm 1/1 Running 1 4h -eshop-webhooks-api-588b58bb66-lmx5c 1/1 Running 2 4h -eshop-webhooks-web-565c68b59c-dk8hp 1/1 Running 1 4h -eshop-webmvc-55c596544b-9fqsj 1/1 Running 2 4h -eshop-webshoppingagg-f8547f45b-4mjvp 0/1 Running 21 4h -eshop-webspa-84fd54466d-hzrlb 1/1 Running 2 4h -eshop-webstatus-775b487d4d-tbfbn 1/1 Running 1 4h -``` - -```ps1 -> ./install-istio-local.ps1 - -``` -This will install the cli utility and register to the path, you can test this phase launching - -```ps1 -> istioctl -``` - -Afterthat you can install Istio on your cluster executing -```ps1 -> ./deploy-istio-helm.ps1 -``` - -the result should be like: -``` -NAME READY STATUS RESTARTS AGE -grafana-774bf8cb47-clqkp 1/1 Running 0 2h -istio-citadel-548f4cdd9-dbrbn 1/1 Running 0 2h -istio-egressgateway-5f77f6c979-8922g 1/1 Running 0 2h -istio-galley-8f6585898-7c7wq 1/1 Running 0 2h -istio-ingressgateway-8484579cdb-7tw8n 1/1 Running 0 2h -istio-pilot-7c5c5778fb-r987v 2/2 Running 0 2h -istio-policy-7d67d47c65-rdqwj 2/2 Running 15 2h -istio-sidecar-injector-6fb6845cdd-nnhks 1/1 Running 0 2h -istio-telemetry-8b9fc7769-pwx5m 2/2 Running 24 2h -istio-tracing-ff94688bb-xnhnd 1/1 Running 4 2h -kiali-8644dbcdbc-pb627 0/1 CrashLoopBackOff 7 2h -prometheus-f556886b8-mr6wb 1/1 Running 13 2h -``` - -Is a common error that kiali-pod have errors, because it needs a credentials for working. -enter in k8s/istio/kiali and execute: -``` -> ./set-kiali-credentials.ps1 -``` -this script will prompt for a valid account/password and setups the secret in kubernetes -(at the moment account/password will be admin/admin we need to modify the yml) - -After enter in /k8s/istio/nginx-ingress that execute, we need to apply the istio integration with nginx-ingress for service-upstream. - -``` -> ./update-nginx-ingress.ps1 -``` - -And After that, we only need to activate the sidecar injection in the default namespace for the eshops deployments, for doing that you must go the folder /k8s/istio -and run: -``` -> ./apply-injection.ps1 -```` diff --git a/k8s/istio/apply-injection.ps1 b/k8s/istio/apply-injection.ps1 deleted file mode 100644 index 294eb880f..000000000 --- a/k8s/istio/apply-injection.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -kubectl label namespace default istio-injection=enabled -kubectl get namespace -L istio-injection diff --git a/k8s/istio/delete-istio.ps1 b/k8s/istio/delete-istio.ps1 deleted file mode 100644 index b1fa99e86..000000000 --- a/k8s/istio/delete-istio.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -helm delete --purge istio -kubectl delete -f install/kubernetes/helm/istio/templates/crds.yaml -n istio-system \ No newline at end of file diff --git a/k8s/istio/deploy-istio-helm.ps1 b/k8s/istio/deploy-istio-helm.ps1 deleted file mode 100644 index 86488db11..000000000 --- a/k8s/istio/deploy-istio-helm.ps1 +++ /dev/null @@ -1,8 +0,0 @@ -$ISTIO_VERSION="1.0.6" -cd istio-$ISTIO_VERSION -<<<<<<< HEAD -helm install install/kubernetes/helm/istio --wait --name istio --namespace istio-system --set global.controlPlaneSecurityEnabled=true --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true --set ingress.enabled=false --set gateways.istio-ingressgateway.enabled=false -cd .. -======= -helm install install/kubernetes/helm/istio --name istio --namespace istio-system --set global.controlPlaneSecurityEnabled=true --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true ->>>>>>> abb108e03dd0ddf0b43d7ea4b2f5b307452ac88e diff --git a/k8s/istio/install-istio-local.ps1 b/k8s/istio/install-istio-local.ps1 deleted file mode 100644 index fcf0a6d34..000000000 --- a/k8s/istio/install-istio-local.ps1 +++ /dev/null @@ -1,16 +0,0 @@ -# Specify the Istio version that will be leveraged throughout these instructions -$ISTIO_VERSION="1.0.6" - -# Windows - -$ProgressPreference = 'SilentlyContinue'; -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -Invoke-WebRequest -URI "https://github.com/istio/istio/releases/download/$ISTIO_VERSION/istio-$ISTIO_VERSION-win.zip" -OutFile "istio-$ISTIO_VERSION.zip" -Expand-Archive -Path "istio-$ISTIO_VERSION.zip" -DestinationPath . - -cd istio-$ISTIO_VERSION -New-Item -ItemType Directory -Force -Path "C:\Program Files\Istio" -mv ./bin/istioctl.exe "C:\Program Files/Istio/" -$PATH = [environment]::GetEnvironmentVariable("PATH", "User") -[environment]::SetEnvironmentVariable("PATH", $PATH + "; C:\Program Files\Istio", "User") - diff --git a/k8s/istio/kiali/secrets.yml b/k8s/istio/kiali/secrets.yml deleted file mode 100644 index 93bf050d7..000000000 --- a/k8s/istio/kiali/secrets.yml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: kiali - namespace: istio-system - labels: - app: kiali -type: Opaque -data: -<<<<<<< HEAD - username: YWRtaW4= - passphrase: MWYyZDFlMmU2N2Rm -======= - username: YQBkAG0AaQBuAA== - passphrase: YQBkAG0AaQBuAA== ->>>>>>> abb108e03dd0ddf0b43d7ea4b2f5b307452ac88e diff --git a/k8s/istio/kiali/set-kiali-credentials.ps1 b/k8s/istio/kiali/set-kiali-credentials.ps1 deleted file mode 100644 index e7519c61d..000000000 --- a/k8s/istio/kiali/set-kiali-credentials.ps1 +++ /dev/null @@ -1,41 +0,0 @@ -Param([parameter(Mandatory,HelpMessage="Enter a valid username for Kiali Administration")][string]$username, - [parameter(Mandatory,HelpMessage="Enter your super secret password")][securestring]$password, - [parameter(Mandatory=$false)][string]$NAMESPACE="istio-system" -) - -function Get-PlainText() -{ - [CmdletBinding()] - param - ( - [parameter(Mandatory = $true)] - [securestring]$SecureString - ) - BEGIN { } - PROCESS - { - $bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString); - - try - { - return [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr); - } - finally - { - [Runtime.InteropServices.Marshal]::FreeBSTR($bstr); - } - } - END { } -} - -$KIALIUSERNAME = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($username)) -$plainpassword = Get-PlainText $password; -$KIALIPASSWORD = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($plainpassword)) - -<<<<<<< HEAD -Write-Host "Creating Kiali Secret in namespace [$NAMESPACE]" -ForegroundColor Blue -kubectl -n $NAMESPACE create secret generic kiali --from-literal=username=$KIALIUSERNAME --from-literal=passphrase=$KIALIPASSWORD -======= -Write-Host "setting username [$KIALIUSERNAME] and password [$KIALIPASSWORD]" -ForegroundColor Blue -kubectl apply -f secrets.yml ->>>>>>> abb108e03dd0ddf0b43d7ea4b2f5b307452ac88e diff --git a/k8s/istio/nginx-ingress/cloud-generic.yaml b/k8s/istio/nginx-ingress/cloud-generic.yaml deleted file mode 100644 index 945441ab8..000000000 --- a/k8s/istio/nginx-ingress/cloud-generic.yaml +++ /dev/null @@ -1,21 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: ingress-nginx - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -spec: - externalTrafficPolicy: Local - type: LoadBalancer - selector: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https \ No newline at end of file diff --git a/k8s/istio/nginx-ingress/cm.yaml b/k8s/istio/nginx-ingress/cm.yaml deleted file mode 100644 index 7818fd15b5c6ea138c70f6b77083b47fcde28e09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcma)3O$&lh5S(++e-Q7_NGif>=dRr~Kaflxno<4uYIZFXA`;Q(o86tAoqgOxSmf9t zL5+rg6-oqfaK;={OmHApB35jp(UeGrEu>O1j;uZL7W0)eP}Ctu!CS;=LFNxC5vjHC z$lhv3%^t#%Fw;{NGa{jKiyG08QK7^e7`+L0>3fZ3wPdZ?$#9lbr~1!5R3bXM&IbE| zA1zsB{?0-1MHIa&8%`TCKN->S+eb_8inCs+I-+AKAK90o7ddV(R+k&|v8JbP@5--A P*@wft1;0L)SZUQ0cZpZ^ diff --git a/k8s/istio/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml b/k8s/istio/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml deleted file mode 100644 index 3a3fcf5a5..000000000 --- a/k8s/istio/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml +++ /dev/null @@ -1,3 +0,0 @@ -data: - mvc_e: http://10.0.75.1/webmvc - \ No newline at end of file diff --git a/k8s/istio/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml b/k8s/istio/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml deleted file mode 100644 index 1475deec1..000000000 --- a/k8s/istio/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml +++ /dev/null @@ -1,3 +0,0 @@ -data: - urls__IdentityUrl: http://10.0.75.1/identity - urls__mvc: http://10.0.75.1/webmvc diff --git a/k8s/istio/nginx-ingress/local-dockerk8s/mvc-fix.yaml b/k8s/istio/nginx-ingress/local-dockerk8s/mvc-fix.yaml deleted file mode 100644 index b9ecd4cba..000000000 --- a/k8s/istio/nginx-ingress/local-dockerk8s/mvc-fix.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - annotations: - ingress.kubernetes.io/ssl-redirect: "false" - kubernetes.io/ingress.class: nginx - nginx.ingress.kubernetes.io/ssl-redirect: "false" - labels: - app: webmvc - name: eshop-webmvc-loopback - namespace: default -spec: - rules: - - http: - paths: - - backend: - serviceName: webmvc - servicePort: http - path: /webmvc ---- -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - annotations: - ingress.kubernetes.io/ssl-redirect: "false" - kubernetes.io/ingress.class: nginx - nginx.ingress.kubernetes.io/ssl-redirect: "false" - labels: - app: identity-api - name: eshop-identity-api-loopback - namespace: default -spec: - rules: - - http: - paths: - - backend: - serviceName: identity - servicePort: http - path: /identity \ No newline at end of file diff --git a/k8s/istio/nginx-ingress/mandatory.yaml b/k8s/istio/nginx-ingress/mandatory.yaml deleted file mode 100644 index 0b9ea035e..000000000 --- a/k8s/istio/nginx-ingress/mandatory.yaml +++ /dev/null @@ -1,239 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: ingress-nginx - ---- - -kind: ConfigMap -apiVersion: v1 -metadata: - name: nginx-configuration - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ---- - -apiVersion: v1 -kind: ServiceAccount -metadata: - name: nginx-ingress-serviceaccount - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - name: nginx-ingress-clusterrole - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -rules: - - apiGroups: - - "" - resources: - - configmaps - - endpoints - - nodes - - pods - - secrets - verbs: - - list - - watch - - apiGroups: - - "" - resources: - - nodes - verbs: - - get - - apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch - - apiGroups: - - "extensions" - resources: - - ingresses - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - - apiGroups: - - "extensions" - resources: - - ingresses/status - verbs: - - update - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: Role -metadata: - name: nginx-ingress-role - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -rules: - - apiGroups: - - "" - resources: - - configmaps - - pods - - secrets - - namespaces - verbs: - - get - - apiGroups: - - "" - resources: - - configmaps - resourceNames: - # Defaults to "-" - # Here: "-" - # This has to be adapted if you change either parameter - # when launching the nginx-ingress-controller. - - "ingress-controller-leader-nginx" - verbs: - - get - - update - - apiGroups: - - "" - resources: - - configmaps - verbs: - - create - - apiGroups: - - "" - resources: - - endpoints - verbs: - - get - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: RoleBinding -metadata: - name: nginx-ingress-role-nisa-binding - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: nginx-ingress-role -subjects: - - kind: ServiceAccount - name: nginx-ingress-serviceaccount - namespace: ingress-nginx - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: nginx-ingress-clusterrole-nisa-binding - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: nginx-ingress-clusterrole -subjects: - - kind: ServiceAccount - name: nginx-ingress-serviceaccount - namespace: ingress-nginx - ---- - -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: nginx-ingress-controller - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - template: - metadata: - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - annotations: - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - service-upstream: "true" - spec: - serviceAccountName: nginx-ingress-serviceaccount - containers: - - name: nginx-ingress-controller - image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.20.0 - args: - - /nginx-ingress-controller - - --configmap=$(POD_NAMESPACE)/nginx-configuration - - --publish-service=$(POD_NAMESPACE)/ingress-nginx - - --annotations-prefix=nginx.ingress.kubernetes.io - securityContext: - capabilities: - drop: - - ALL - add: - - NET_BIND_SERVICE - # www-data -> 33 - runAsUser: 33 - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - ports: - - name: http - containerPort: 80 - - name: https - containerPort: 443 - livenessProbe: - failureThreshold: 3 - httpGet: - path: /healthz - port: 10254 - scheme: HTTP - initialDelaySeconds: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - readinessProbe: - failureThreshold: 3 - httpGet: - path: /healthz - port: 10254 - scheme: HTTP - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 diff --git a/k8s/istio/nginx-ingress/service-nodeport.yaml b/k8s/istio/nginx-ingress/service-nodeport.yaml deleted file mode 100644 index dd82ed3ed..000000000 --- a/k8s/istio/nginx-ingress/service-nodeport.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: ingress-nginx - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -spec: - type: NodePort - ports: - - name: http - port: 80 - targetPort: 80 - protocol: TCP - - name: https - port: 443 - targetPort: 443 - protocol: TCP - selector: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx diff --git a/k8s/istio/nginx-ingress/update-nginx-ingress.ps1 b/k8s/istio/nginx-ingress/update-nginx-ingress.ps1 deleted file mode 100644 index 656bd9fe8..000000000 --- a/k8s/istio/nginx-ingress/update-nginx-ingress.ps1 +++ /dev/null @@ -1 +0,0 @@ -kubectl apply -f mandatory.yml \ No newline at end of file diff --git a/src/Web/WebMVC/package-lock.json b/src/Web/WebMVC/package-lock.json index a94ca154f..785fd8273 100644 --- a/src/Web/WebMVC/package-lock.json +++ b/src/Web/WebMVC/package-lock.json @@ -19,7 +19,7 @@ "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", "integrity": "sha1-i0O+ZPudDEFIcURvLbjoyk6V8YE=", "requires": { - "jquery": "3.3.1" + "jquery": ">=1.12.0" } } } From 26d4de4a3b7bcd1d314620f971d84238b178439f Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Wed, 13 Mar 2019 16:44:33 +0100 Subject: [PATCH 08/20] Fixed changes on deploy-all.ps1 on AKS --- k8s/helm/deploy-all.ps1 | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/k8s/helm/deploy-all.ps1 b/k8s/helm/deploy-all.ps1 index 9e046363a..42ba3ab27 100644 --- a/k8s/helm/deploy-all.ps1 +++ b/k8s/helm/deploy-all.ps1 @@ -2,7 +2,7 @@ Param( [parameter(Mandatory=$false)][string]$registry, [parameter(Mandatory=$false)][string]$dockerUser, [parameter(Mandatory=$false)][string]$dockerPassword, - [parameter(Mandatory=$false)][string]$externalDns="eshoptestistio.westus.cloudapp.azure.com", + [parameter(Mandatory=$false)][string]$externalDns, [parameter(Mandatory=$false)][string]$appName="eshop", [parameter(Mandatory=$false)][bool]$deployInfrastructure=$true, [parameter(Mandatory=$false)][bool]$clean=$true, @@ -66,8 +66,7 @@ $charts = ("eshop-common", "apigwmm", "apigwms", "apigwwm", "apigwws", "basket-a if ($deployInfrastructure) { foreach ($infra in $infras) { Write-Host "Installing infrastructure: $infra" -ForegroundColor Green - #helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --name="$appName-$infra" $infra - helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$dns --name="$appName-$infra" $infra + helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --name="$appName-$infra" $infra } } @@ -78,14 +77,9 @@ foreach ($chart in $charts) { } else { if ($chart -ne "eshop-common") { # eshop-common is ignored when no secret must be deployed - #helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart - helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart + helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart } } } -Write-Host "helm charts installed." -ForegroundColor Green - - - - +Write-Host "helm charts installed." -ForegroundColor Green \ No newline at end of file From 7fcb625efae68a847229d4eaea67e6244a173659 Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Wed, 13 Mar 2019 16:46:56 +0100 Subject: [PATCH 09/20] Fixed documentation errors --- k8s/helm/istio/doc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/helm/istio/doc.md b/k8s/helm/istio/doc.md index 6d0782a59..b8c0a0257 100644 --- a/k8s/helm/istio/doc.md +++ b/k8s/helm/istio/doc.md @@ -85,7 +85,7 @@ All steps need to be performed on `/k8s/helm` folder. The easiest way is to use .\deploy-all-istio.ps1 -dnsname eshoptestistio -externalDns aks -aksName eshoptest -aksRg eshoptest -imageTag dev ``` -This will install all the [eShopOnContainers public images](https://hub.docker.com/u/eshop/) with tag `dev` on the AKS named `eshoptest` in the resource group `eshoptest` and with the dns url: http://**eshoptest**.westus.cloudapp.azure.com/ . By default all infrastructure (sql, mongo, rabbit and redis) is installed also in the cluster. +This will install all the [eShopOnContainers public images](https://hub.docker.com/u/eshop/) with tag `dev` on the AKS named `eshoptest` in the resource group `eshoptest` and with the dns url: http://**eshoptestistio**.westus.cloudapp.azure.com/ . By default all infrastructure (sql, mongo, rabbit and redis) is installed also in the cluster. Once the script is run, you should see following output when using `kubectl get deployment`: From 06e07914e17cc1ac97770d8661f08faf286a70d2 Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Tue, 19 Mar 2019 15:57:47 +0100 Subject: [PATCH 10/20] First version with Kibana/ElasticSearch & Logstash, needs refactor --- docker-compose.elk.yml | 48 +++++++++++++++++++ docker-compose.yml | 35 ++++++++++++++ elk/elasticsearch/Dockerfile | 5 ++ elk/elasticsearch/config/elasticsearch.yml | 16 +++++++ elk/kibana/Dockerfile | 5 ++ elk/kibana/config/kibana.yml | 7 +++ elk/logstash/Dockerfile | 6 +++ elk/logstash/config/logstash.yml | 6 +++ elk/logstash/pipeline/logstash.conf | 22 +++++++++ k8s/helm/deploy-all-istio.ps1 | 1 + k8s/helm/elk/installelk.ps1 | 1 + .../Basket/Basket.API/Basket.API.csproj | 1 + src/Services/Basket/Basket.API/Program.cs | 3 +- .../Basket/Basket.API/appsettings.json | 1 + .../Catalog/Catalog.API/Catalog.API.csproj | 1 + src/Services/Catalog/Catalog.API/Program.cs | 3 +- .../Properties/launchSettings.json | 3 +- .../Catalog/Catalog.API/appsettings.json | 1 + .../Identity/Identity.API/Identity.API.csproj | 1 + src/Services/Identity/Identity.API/Program.cs | 3 +- .../Identity/Identity.API/appsettings.json | 1 + .../Locations.API/Locations.API.csproj | 1 + .../Location/Locations.API/Program.cs | 3 +- .../Location/Locations.API/appsettings.json | 1 + .../Marketing.API/Marketing.API.csproj | 1 + .../Marketing/Marketing.API/Program.cs | 3 +- .../Marketing/Marketing.API/appsettings.json | 1 + .../Ordering/Ordering.API/Ordering.API.csproj | 1 + src/Services/Ordering/Ordering.API/Program.cs | 5 +- .../Ordering/Ordering.API/appsettings.json | 1 + .../Ordering.BackgroundTasks.csproj | 1 + .../Ordering.BackgroundTasks/Program.cs | 3 +- .../Ordering.BackgroundTasks/appsettings.json | 1 + .../Ordering.SignalrHub.csproj | 1 + .../Ordering/Ordering.SignalrHub/Program.cs | 3 +- .../Ordering.SignalrHub/appsettings.json | 1 + .../Payment/Payment.API/Payment.API.csproj | 1 + src/Services/Payment/Payment.API/Program.cs | 3 +- .../Payment/Payment.API/appsettings.json | 1 + src/Web/WebMVC/Program.cs | 5 +- src/Web/WebMVC/WebMVC.csproj | 1 + src/Web/WebMVC/appsettings.json | 1 + src/Web/WebStatus/Program.cs | 5 +- src/Web/WebStatus/WebStatus.csproj | 1 + src/Web/WebStatus/appsettings.json | 4 +- 45 files changed, 203 insertions(+), 16 deletions(-) create mode 100644 docker-compose.elk.yml create mode 100644 elk/elasticsearch/Dockerfile create mode 100644 elk/elasticsearch/config/elasticsearch.yml create mode 100644 elk/kibana/Dockerfile create mode 100644 elk/kibana/config/kibana.yml create mode 100644 elk/logstash/Dockerfile create mode 100644 elk/logstash/config/logstash.yml create mode 100644 elk/logstash/pipeline/logstash.conf create mode 100644 k8s/helm/elk/installelk.ps1 diff --git a/docker-compose.elk.yml b/docker-compose.elk.yml new file mode 100644 index 000000000..a1112b0e2 --- /dev/null +++ b/docker-compose.elk.yml @@ -0,0 +1,48 @@ +version: '3.4' + +services: + + elasticsearch: + build: + context: elk/elasticsearch/ + volumes: + - ./elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro + ports: + - "9200:9200" + - "9300:9300" + environment: + ES_JAVA_OPTS: "-Xmx256m -Xms256m" + networks: + - elk + + logstash: + build: + context: elk/logstash/ + volumes: + - ./elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro + - ./elk/logstash/pipeline:/usr/share/logstash/pipeline:ro + ports: + - "8080:8080" + environment: + LS_JAVA_OPTS: "-Xmx256m -Xms256m" + networks: + - elk + depends_on: + - elasticsearch + + kibana: + build: + context: elk/kibana/ + volumes: + - ./elk/kibana/config/:/usr/share/kibana/config:ro + ports: + - "5601:5601" + networks: + - elk + depends_on: + - elasticsearch + +networks: + + elk: + driver: bridge diff --git a/docker-compose.yml b/docker-compose.yml index 55d5b10e6..d0cda5b7a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,41 @@ version: '3.4' services: + + elasticsearch: + build: + context: elk/elasticsearch/ + volumes: + - ./elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro + ports: + - "9200:9200" + - "9300:9300" + environment: + ES_JAVA_OPTS: "-Xmx256m -Xms256m" + + logstash: + build: + context: elk/logstash/ + volumes: + - ./elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro + - ./elk/logstash/pipeline:/usr/share/logstash/pipeline:ro + ports: + - "8080:8080" + environment: + LS_JAVA_OPTS: "-Xmx256m -Xms256m" + depends_on: + - elasticsearch + + kibana: + build: + context: elk/kibana/ + volumes: + - ./elk/kibana/config/:/usr/share/kibana/config:ro + ports: + - "5601:5601" + depends_on: + - elasticsearch + seq: image: datalust/seq:latest diff --git a/elk/elasticsearch/Dockerfile b/elk/elasticsearch/Dockerfile new file mode 100644 index 000000000..0ad46d887 --- /dev/null +++ b/elk/elasticsearch/Dockerfile @@ -0,0 +1,5 @@ +# https://github.com/elastic/elasticsearch-docker +FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.0.0 + +# Add your elasticsearch plugins setup here +# Example: RUN elasticsearch-plugin install analysis-icu diff --git a/elk/elasticsearch/config/elasticsearch.yml b/elk/elasticsearch/config/elasticsearch.yml new file mode 100644 index 000000000..e97577084 --- /dev/null +++ b/elk/elasticsearch/config/elasticsearch.yml @@ -0,0 +1,16 @@ +--- +## Default Elasticsearch configuration from elasticsearch-docker. +## from https://github.com/elastic/elasticsearch-docker/blob/master/build/elasticsearch/elasticsearch.yml +# +cluster.name: "docker-cluster" +network.host: 0.0.0.0 + +# minimum_master_nodes need to be explicitly set when bound on a public IP +# set to 1 to allow single node clusters +# Details: https://github.com/elastic/elasticsearch/pull/17288 +discovery.zen.minimum_master_nodes: 1 + +## Use single node discovery in order to disable production mode and avoid bootstrap checks +## see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html +# +discovery.type: single-node diff --git a/elk/kibana/Dockerfile b/elk/kibana/Dockerfile new file mode 100644 index 000000000..1785734aa --- /dev/null +++ b/elk/kibana/Dockerfile @@ -0,0 +1,5 @@ +# https://github.com/elastic/kibana-docker +FROM docker.elastic.co/kibana/kibana-oss:6.0.0 + +# Add your kibana plugins setup here +# Example: RUN kibana-plugin install diff --git a/elk/kibana/config/kibana.yml b/elk/kibana/config/kibana.yml new file mode 100644 index 000000000..4b34a1606 --- /dev/null +++ b/elk/kibana/config/kibana.yml @@ -0,0 +1,7 @@ +--- +## Default Kibana configuration from kibana-docker. +## from https://github.com/elastic/kibana-docker/blob/master/build/kibana/config/kibana.yml +# +server.name: kibana +server.host: "0" +elasticsearch.url: http://elasticsearch:9200 diff --git a/elk/logstash/Dockerfile b/elk/logstash/Dockerfile new file mode 100644 index 000000000..d8bb475a5 --- /dev/null +++ b/elk/logstash/Dockerfile @@ -0,0 +1,6 @@ +# https://github.com/elastic/logstash-docker +FROM docker.elastic.co/logstash/logstash-oss:6.0.0 + +# Add your logstash plugins setup here +# Example: RUN logstash-plugin install logstash-filter-json +RUN logstash-plugin install logstash-input-http \ No newline at end of file diff --git a/elk/logstash/config/logstash.yml b/elk/logstash/config/logstash.yml new file mode 100644 index 000000000..d4f28f778 --- /dev/null +++ b/elk/logstash/config/logstash.yml @@ -0,0 +1,6 @@ +--- +## Default Logstash configuration from logstash-docker. +## from https://github.com/elastic/logstash-docker/blob/master/build/logstash/config/logstash-oss.yml +# +http.host: "0.0.0.0" +path.config: /usr/share/logstash/pipeline \ No newline at end of file diff --git a/elk/logstash/pipeline/logstash.conf b/elk/logstash/pipeline/logstash.conf new file mode 100644 index 000000000..b38a681d7 --- /dev/null +++ b/elk/logstash/pipeline/logstash.conf @@ -0,0 +1,22 @@ +input { + http { + #default host 0.0.0.0:8080 + codec => json + } +} + +## Add your filters / logstash plugins configuration here +filter { + split { + field => "events" + target => "e" + remove_field => "events" + } +} + +output { + elasticsearch { + hosts => "elasticsearch:9200" + index=>"eshops-%{+xxxx.ww}" + } +} diff --git a/k8s/helm/deploy-all-istio.ps1 b/k8s/helm/deploy-all-istio.ps1 index 6ee8a9572..5e05c6dbb 100644 --- a/k8s/helm/deploy-all-istio.ps1 +++ b/k8s/helm/deploy-all-istio.ps1 @@ -57,6 +57,7 @@ kubectl apply -f ./istio/gateway.yml if ($useLocalk8s -eq $true) { $dns="localhost" + $externalDns="localhost" } else { Write-Host "Resolving DNS to Gateway public IP" -ForegroundColor Green diff --git a/k8s/helm/elk/installelk.ps1 b/k8s/helm/elk/installelk.ps1 new file mode 100644 index 000000000..3a77dae59 --- /dev/null +++ b/k8s/helm/elk/installelk.ps1 @@ -0,0 +1 @@ +helm install --name elk stable/elastic-stack --namespace elk \ No newline at end of file diff --git a/src/Services/Basket/Basket.API/Basket.API.csproj b/src/Services/Basket/Basket.API/Basket.API.csproj index 087fdca66..826ac6697 100644 --- a/src/Services/Basket/Basket.API/Basket.API.csproj +++ b/src/Services/Basket/Basket.API/Basket.API.csproj @@ -33,6 +33,7 @@ + diff --git a/src/Services/Basket/Basket.API/Program.cs b/src/Services/Basket/Basket.API/Program.cs index 893a52400..40cc0eebc 100644 --- a/src/Services/Basket/Basket.API/Program.cs +++ b/src/Services/Basket/Basket.API/Program.cs @@ -57,13 +57,14 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Basket/Basket.API/appsettings.json b/src/Services/Basket/Basket.API/appsettings.json index 33f1c299f..babea8454 100644 --- a/src/Services/Basket/Basket.API/appsettings.json +++ b/src/Services/Basket/Basket.API/appsettings.json @@ -1,6 +1,7 @@ { "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Catalog/Catalog.API/Catalog.API.csproj b/src/Services/Catalog/Catalog.API/Catalog.API.csproj index 983cc291a..4737af7e3 100644 --- a/src/Services/Catalog/Catalog.API/Catalog.API.csproj +++ b/src/Services/Catalog/Catalog.API/Catalog.API.csproj @@ -53,6 +53,7 @@ + diff --git a/src/Services/Catalog/Catalog.API/Program.cs b/src/Services/Catalog/Catalog.API/Program.cs index c75b56c39..39b071c46 100644 --- a/src/Services/Catalog/Catalog.API/Program.cs +++ b/src/Services/Catalog/Catalog.API/Program.cs @@ -71,13 +71,14 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Catalog/Catalog.API/Properties/launchSettings.json b/src/Services/Catalog/Catalog.API/Properties/launchSettings.json index 8f2cde4db..3aaed933a 100644 --- a/src/Services/Catalog/Catalog.API/Properties/launchSettings.json +++ b/src/Services/Catalog/Catalog.API/Properties/launchSettings.json @@ -16,7 +16,8 @@ "ConnectionString": "server=localhost,5433;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word", "ASPNETCORE_ENVIRONMENT": "Development", "EventBusConnection": "localhost", - "Serilog:SeqServerUrl": "http://locahost:5340" + "Serilog:SeqServerUrl": "http://locahost:5340", + "Serilog:LogstashgUrl":"http://locahost:8080", } }, "Microsoft.eShopOnContainers.Services.Catalog.API": { diff --git a/src/Services/Catalog/Catalog.API/appsettings.json b/src/Services/Catalog/Catalog.API/appsettings.json index b26f63bff..ede3744dc 100644 --- a/src/Services/Catalog/Catalog.API/appsettings.json +++ b/src/Services/Catalog/Catalog.API/appsettings.json @@ -4,6 +4,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Identity/Identity.API/Identity.API.csproj b/src/Services/Identity/Identity.API/Identity.API.csproj index fd5f1474e..43922d948 100644 --- a/src/Services/Identity/Identity.API/Identity.API.csproj +++ b/src/Services/Identity/Identity.API/Identity.API.csproj @@ -34,6 +34,7 @@ + diff --git a/src/Services/Identity/Identity.API/Program.cs b/src/Services/Identity/Identity.API/Program.cs index 8204a1ebf..784f63a1e 100644 --- a/src/Services/Identity/Identity.API/Program.cs +++ b/src/Services/Identity/Identity.API/Program.cs @@ -76,13 +76,14 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://localhost:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Identity/Identity.API/appsettings.json b/src/Services/Identity/Identity.API/appsettings.json index 74d8e826c..bcb9ce3f7 100644 --- a/src/Services/Identity/Identity.API/appsettings.json +++ b/src/Services/Identity/Identity.API/appsettings.json @@ -7,6 +7,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Location/Locations.API/Locations.API.csproj b/src/Services/Location/Locations.API/Locations.API.csproj index 9784c1f4d..090ee7c1d 100644 --- a/src/Services/Location/Locations.API/Locations.API.csproj +++ b/src/Services/Location/Locations.API/Locations.API.csproj @@ -29,6 +29,7 @@ + diff --git a/src/Services/Location/Locations.API/Program.cs b/src/Services/Location/Locations.API/Program.cs index c13df985f..acadf4a39 100644 --- a/src/Services/Location/Locations.API/Program.cs +++ b/src/Services/Location/Locations.API/Program.cs @@ -54,13 +54,14 @@ namespace Microsoft.eShopOnContainers.Services.Locations.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Location/Locations.API/appsettings.json b/src/Services/Location/Locations.API/appsettings.json index 43fe53873..8cca61af2 100644 --- a/src/Services/Location/Locations.API/appsettings.json +++ b/src/Services/Location/Locations.API/appsettings.json @@ -4,6 +4,7 @@ "IdentityUrl": "http://localhost:5105", "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Marketing/Marketing.API/Marketing.API.csproj b/src/Services/Marketing/Marketing.API/Marketing.API.csproj index 373bcb0a6..2c64d84d9 100644 --- a/src/Services/Marketing/Marketing.API/Marketing.API.csproj +++ b/src/Services/Marketing/Marketing.API/Marketing.API.csproj @@ -45,6 +45,7 @@ + diff --git a/src/Services/Marketing/Marketing.API/Program.cs b/src/Services/Marketing/Marketing.API/Program.cs index ae26c9786..4d07e7e0f 100644 --- a/src/Services/Marketing/Marketing.API/Program.cs +++ b/src/Services/Marketing/Marketing.API/Program.cs @@ -66,13 +66,14 @@ private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Marketing/Marketing.API/appsettings.json b/src/Services/Marketing/Marketing.API/appsettings.json index c16978dce..7c015a8ca 100644 --- a/src/Services/Marketing/Marketing.API/appsettings.json +++ b/src/Services/Marketing/Marketing.API/appsettings.json @@ -1,6 +1,7 @@ { "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.API/Ordering.API.csproj b/src/Services/Ordering/Ordering.API/Ordering.API.csproj index b3fa6797e..6342e3585 100644 --- a/src/Services/Ordering/Ordering.API/Ordering.API.csproj +++ b/src/Services/Ordering/Ordering.API/Ordering.API.csproj @@ -52,6 +52,7 @@ + diff --git a/src/Services/Ordering/Ordering.API/Program.cs b/src/Services/Ordering/Ordering.API/Program.cs index 8fc18c8bb..a0b7dc40e 100644 --- a/src/Services/Ordering/Ordering.API/Program.cs +++ b/src/Services/Ordering/Ordering.API/Program.cs @@ -68,16 +68,17 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API .UseSerilog() .Build(); - private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) + private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Ordering/Ordering.API/appsettings.json b/src/Services/Ordering/Ordering.API/appsettings.json index 64b24a354..ea87d5b07 100644 --- a/src/Services/Ordering/Ordering.API/appsettings.json +++ b/src/Services/Ordering/Ordering.API/appsettings.json @@ -4,6 +4,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj index f0fc00b04..4e3b62de5 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj @@ -28,6 +28,7 @@ + diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs index 8f8cf41e1..7a429742e 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs @@ -51,13 +51,14 @@ namespace Ordering.BackgroundTasks private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json index 3697c53a5..6f1e21d06 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json +++ b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json @@ -2,6 +2,7 @@ "ConnectionString": "Server=tcp:127.0.0.1,5433;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word;", "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj index a4dd8cc9d..1dae53261 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj +++ b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj @@ -30,6 +30,7 @@ + diff --git a/src/Services/Ordering/Ordering.SignalrHub/Program.cs b/src/Services/Ordering/Ordering.SignalrHub/Program.cs index fdb3f5f3a..76f131caa 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/Program.cs +++ b/src/Services/Ordering/Ordering.SignalrHub/Program.cs @@ -54,13 +54,14 @@ namespace Ordering.SignalrHub private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json index bd752de48..8360223cf 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json +++ b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json @@ -2,6 +2,7 @@ "IdentityUrl": "http://localhost:5105", "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Payment/Payment.API/Payment.API.csproj b/src/Services/Payment/Payment.API/Payment.API.csproj index e912727e8..a62834170 100644 --- a/src/Services/Payment/Payment.API/Payment.API.csproj +++ b/src/Services/Payment/Payment.API/Payment.API.csproj @@ -24,6 +24,7 @@ + diff --git a/src/Services/Payment/Payment.API/Program.cs b/src/Services/Payment/Payment.API/Program.cs index 9b0aded5c..b03bee3da 100644 --- a/src/Services/Payment/Payment.API/Program.cs +++ b/src/Services/Payment/Payment.API/Program.cs @@ -54,13 +54,14 @@ namespace Payment.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Payment/Payment.API/appsettings.json b/src/Services/Payment/Payment.API/appsettings.json index bf6157648..d7ec8301d 100644 --- a/src/Services/Payment/Payment.API/appsettings.json +++ b/src/Services/Payment/Payment.API/appsettings.json @@ -1,6 +1,7 @@ { "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Web/WebMVC/Program.cs b/src/Web/WebMVC/Program.cs index c329237ce..a80d0514b 100644 --- a/src/Web/WebMVC/Program.cs +++ b/src/Web/WebMVC/Program.cs @@ -49,16 +49,17 @@ namespace Microsoft.eShopOnContainers.WebMVC .UseSerilog() .Build(); - private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) + private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Web/WebMVC/WebMVC.csproj b/src/Web/WebMVC/WebMVC.csproj index 20ddc085b..3bfd9d0c8 100644 --- a/src/Web/WebMVC/WebMVC.csproj +++ b/src/Web/WebMVC/WebMVC.csproj @@ -41,6 +41,7 @@ + diff --git a/src/Web/WebMVC/appsettings.json b/src/Web/WebMVC/appsettings.json index 591964725..077fda891 100644 --- a/src/Web/WebMVC/appsettings.json +++ b/src/Web/WebMVC/appsettings.json @@ -13,6 +13,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Web/WebStatus/Program.cs b/src/Web/WebStatus/Program.cs index d2de3ceae..45e802116 100644 --- a/src/Web/WebStatus/Program.cs +++ b/src/Web/WebStatus/Program.cs @@ -50,16 +50,17 @@ namespace WebStatus .UseSerilog() .Build(); - private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) + private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Web/WebStatus/WebStatus.csproj b/src/Web/WebStatus/WebStatus.csproj index e898a3a2e..0cd8328de 100644 --- a/src/Web/WebStatus/WebStatus.csproj +++ b/src/Web/WebStatus/WebStatus.csproj @@ -28,6 +28,7 @@ + diff --git a/src/Web/WebStatus/appsettings.json b/src/Web/WebStatus/appsettings.json index e2aadbc9e..82331d00b 100644 --- a/src/Web/WebStatus/appsettings.json +++ b/src/Web/WebStatus/appsettings.json @@ -72,6 +72,7 @@ ], "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { @@ -79,7 +80,7 @@ "Microsoft.eShopOnContainers": "Information", "System": "Warning" } - } + }, "Webhooks": [ { "Name": "", @@ -92,3 +93,4 @@ "MinimumSecondsBetweenFailureNotifications": 60 } } +} From 56c659776e37bc4e661a19ca3b0c2c013a8cc868 Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Wed, 20 Mar 2019 06:50:28 +0100 Subject: [PATCH 11/20] Finished --- docker-compose.elk.yml | 13 +------------ docker-compose.yml | 34 ---------------------------------- 2 files changed, 1 insertion(+), 46 deletions(-) diff --git a/docker-compose.elk.yml b/docker-compose.elk.yml index a1112b0e2..04e6c8a05 100644 --- a/docker-compose.elk.yml +++ b/docker-compose.elk.yml @@ -12,8 +12,6 @@ services: - "9300:9300" environment: ES_JAVA_OPTS: "-Xmx256m -Xms256m" - networks: - - elk logstash: build: @@ -25,8 +23,6 @@ services: - "8080:8080" environment: LS_JAVA_OPTS: "-Xmx256m -Xms256m" - networks: - - elk depends_on: - elasticsearch @@ -37,12 +33,5 @@ services: - ./elk/kibana/config/:/usr/share/kibana/config:ro ports: - "5601:5601" - networks: - - elk depends_on: - - elasticsearch - -networks: - - elk: - driver: bridge + - elasticsearch \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index d0cda5b7a..2a0448bad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,40 +2,6 @@ version: '3.4' services: - elasticsearch: - build: - context: elk/elasticsearch/ - volumes: - - ./elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro - ports: - - "9200:9200" - - "9300:9300" - environment: - ES_JAVA_OPTS: "-Xmx256m -Xms256m" - - logstash: - build: - context: elk/logstash/ - volumes: - - ./elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro - - ./elk/logstash/pipeline:/usr/share/logstash/pipeline:ro - ports: - - "8080:8080" - environment: - LS_JAVA_OPTS: "-Xmx256m -Xms256m" - depends_on: - - elasticsearch - - kibana: - build: - context: elk/kibana/ - volumes: - - ./elk/kibana/config/:/usr/share/kibana/config:ro - ports: - - "5601:5601" - depends_on: - - elasticsearch - seq: image: datalust/seq:latest From 8d7d27cc9186ab0340fe28929c537b170fc29dcd Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Wed, 20 Mar 2019 12:41:24 +0100 Subject: [PATCH 12/20] Added Documentation --- elk/Readme.md | 28 ++++++++++++++++++++++++++++ img/elk/kibana_eshops_index.png | Bin 0 -> 37628 bytes img/elk/kibana_result.png | Bin 0 -> 73100 bytes img/elk/kibana_startup.png | Bin 0 -> 58651 bytes img/elk/kibana_working.png | Bin 0 -> 79471 bytes k8s/helm/elk/installelk.ps1 | 1 - 6 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 elk/Readme.md create mode 100644 img/elk/kibana_eshops_index.png create mode 100644 img/elk/kibana_result.png create mode 100644 img/elk/kibana_startup.png create mode 100644 img/elk/kibana_working.png delete mode 100644 k8s/helm/elk/installelk.ps1 diff --git a/elk/Readme.md b/elk/Readme.md new file mode 100644 index 000000000..a012e1c5c --- /dev/null +++ b/elk/Readme.md @@ -0,0 +1,28 @@ +This article contains a brief introduction to centralized structured logging with [Serilog](https://serilog.net/) and event viewing with [ELK](https://www.elastic.co/elk-stack) in eShopOnContainers. ELK is an acronym of ElasticSearch, LogStash and Kibana. This is one of the most used tools in the industry standards. + +![](img/elk/kibana-working.png) + +## Wiring eshopOnContainers with ELK + +eshopOnContainers is ready for work with ELK, you only need to setup the configuration parameter **LogstashgUrl**, in **Serilog** Section, for achieve this, you can do it modifing this parameter in every appsettings.json in every service, or via Environment Variable **Serilog:LogstashUrl**. + +There is another option, a zero-configuration environment for testing the integration launching via ```docker-compose``` command, on the root directory of eshopOnContainers: + +```sh +docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.elk.yml +``` + +### Configuring Logstash index on Kibana + +Once time you have started and configured your application, you only need to configure the logstash index on kibana. +You can address to Kibana, with docker-compose setup is at [http://localhost:5601](http://localhost:5601) + +If you have accessed to kibana too early, you can see this error. It's normal, depending of your machine the kibana stack needs a bit of time to startup. +![](img/elk/kibana_startup.png) + +You can wait a bit and refresh the page, the first time you enter, you need to configure and index pattern, in the ```docker-compose``` configuration, the index pattern name is **eshops-\***. +![](img/elk/kibana_eshops_index.png) + +With the index pattern configured, you can enter in the discover section and start viewing how the tool is recollecting the logging information. + +![](img/elk/kibana_result.png) \ No newline at end of file diff --git a/img/elk/kibana_eshops_index.png b/img/elk/kibana_eshops_index.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4be8ec33574c848a8b5220ce005ccc70584d20 GIT binary patch literal 37628 zcmcHgcR1T^_&b?MZpQ;aWP zDC?d&b?)P-Q)ebFoS{9*{B94RT~2%Hsy;haIl!?@yE$k7^wrZ-r{J*+2e0X9_ZK~0 zn0TE!#ngWCcN*nhY(sl^(_6*ZThHCj+wZlf?J1Afj&9zx&_a)PRBYron+(FOr;nHg@rWti2a6?;skx!S<>$$D#5;dh2C2 zkn<+JE7{mtl5Z_Do>heN0qPRl^^AX9`ott1Im(r)R3AL=>NmT>`v;UjdN}uOy zEMP?0B5pq%MAd2D@$e?Cfnw10ms}XiXqWT)x0NJP0Ox5P;(;4@c)G-3 zFkz!I$}ZHi#Cf^ezBwQ`o&Xm(TOv`vW(r(QFv|hBWPhmIOl1OLVs_JYcw$e}n(i3^ zz-wlhX;$3E@4gf?$J`n$yJdaKNJ@U`V{(lgvKi?)V!uA=-#`2c7gR@GyCH#qpd_?> zIkAYtvc83$ZweOmO|>}bLEqBNS&0mJk>nQ8ywL;++ShTicG(svsSq{;voz)BYMk7c z-D~RvL0EAjtVd|Fezmir5P*EtR|0GNIn{8))>JjQPKCmR4aef5d{&vY-|-uc&23WL zasDnZ25*!Fml0nqdJP7H(*l?KoPB+Ioj6P=zr=$Zyyq85P=WwOp~fHBV)>*4Vs;#R zzXD2lc~c~okqB`bNy%C9Z8L5e^A?M(*sGnAMF!kW!MQ?vNBh%7#$UOvLG3@eHQ8o3 zWkXO8cLEpdSbg*`73XNu(NI$PjIxy9AQz{C{$`z|lVj7l7DO`Ghsb$8c;vJUxG&82Y-mM+gavs)*ckz1YP zPixn$7JnBEBA9x^?k-wV*Q-an^hytKO?A8LuX@@&*{&8>)`LcxEEX3IS}P0u+z-%A zJS`EO%BL_J3k9+}%f|lxizy^5T#H3Eu+DD+p$uO^nt5&)3<@6BPH!b`iYU}CHwcls zQO%9lmwz%Nj^?ALey1j)G;WHs8C=4{Kjk>iK(=(N0`jtOGJ)hgbLZVP81Ml79)e2| zUuejwcSlaYYMRKCz$?A^XO<-AyHg$D?=oS8#nRKnQkauTo`jnDT8=FbHXkcmMTPX} zOQ!dN4)2oI8r^KEI&!P}RHKFY?w{6%S8cdzbf5mB>NBN9W$V&KEWBFzr;)q>u5v|< zYLsj)f7&lGA2JK_$0gb||F)#(Ygwt=^;zUd*k4Z$S^;8b1DL=ryFU{V5^G{}V((^f z#MNotoO-1X8sb_P38Kuvf+!IfZWjx6+w$>$#XBLo5MYcd$k_h@=p#@ZV}= zXA~L^(^j*g_V~yPcKc$_1a5N7?kymJE@Kni(--gX$7Vr@NOe7Dri>azL*ZNU4Xb+! zNkDeYRuVNExEZteAW6Xi>^TU^opU+^UP}bR4q?ughaG^Z-|M8L#5_eGdllEufI{Jn zgR1Qu$)MGbe(3G6qfO9ju!}JszdGKs)7-eO^XuTmuoc!m*_<5oJy-!ksoZBVm$Ec$ z^TBsimERS}S_VO>i~UV3O;*3INbbxn^o@@Fqp!k_(@cSkfoEkC`;(l?<{gp_*;uPR20<}1wskQFRttm#qSW@_YT*Y)M{FEvQ^>ch3vz5$Rm zuEDPx6WOiIf(GRP=Vu0$WO1G$SWQdg_q=m`{g$QZ4xe#hjkPzHY~8tgP%dv+PZCX-Ay*Q3X&=L5+)@Z6#26 zyGY%3DM1QJng(Z~RoYb%Ma|o5W&_X*VIn)d8RydbvsN1YY8!Hz8{Lnh9{K>=%{NoK zrR9h?1F6rfBPkPWGeynGELo`M!p%s;bL^AmLafkFpM6$^=ItItf1=9)SOd3xBu-{Z zJOcPq2A~7j10od*475-2i9K4!W2ZJ#{TC!wc~8fDJ&O1X-erMMz|Mhl%V8Av(c`L! zwZxLO&$knvJLPi*S9*(VFR;<@bE^C0WpKIY!rZa{^gJP1HGw-zkkcF9xbO0ik!e&5*oBum~M}po$zBlG2(CG zsiS}O<|vF~-7QBtt@k9pQM{Vg2uP-4iQ>F^CMSLJ@g#mmb$RKC#>DJ86j}f+rtck1xwc9gS#lF?^Pc`JaX_G{G(;S(GJs zwY#rHZcEo_Fp4cgpzm=r5@WAfSbfq?TiLT0WM_iEisCeG1 z=nd{Zzs2aE8-uo%A<>X8BWQ3K3v!xK?He$&EkFXbtnNV5foxzpkBXJ3Q@4ylGb@; zWCQ^|vKV$oR6`3!X=c9w3NSs|QV(hKN<(*5KWVCPBcN;DQ|;$Hlg@kC*9oO9m+TTM z6ik~IYL_Ln*=1(xc2qZ83U68M^drV4%P~7UabQ<6-Xl=U&mH1FRUtJvE^%nrUtKGE zg^@9XwRULJxbI*J;Vx^N{pz*5d#bG0&dP*vT9L^OAeZdsbm6`VZd7&O8CUN!_1Ihck7*J* z6FMlczTEgy?E!DyjLfDJ(}oDAv4tpvn8;2TFdz3FK=@9p|y+WQEDI_iSuxY6b2 zdtzNK$CDN|U#G-b-K4p0_N%9XU2O1-qK28sxhk-4iTiP3sA*GfnioL?a`1!ALK9af z<3-Gb*UkTE__*Jo&|dZ@?QF)a%&aDmD@I4;bkF!d@0aJq>A7Hf4CV5-Ek6qxPWT2a z{oEP5SerB@#k-QTS|>b+^bTB{w#A92um#oFO|5W-b#axo`Qju43nA2LTZ#Q%(Ko4v z?jsW1^55o?(-4Jc-rIqr3GzYRfT&qp$I*Fb>8-CXy61Y7qg!aWYFRD@mnQaXHw4YW$EJwKX0=q#h;B-^`>YSwQpDTsu%-<+;@vFltp z%iZ@}6Oi(z)X?`v(PFUuROo;>N)NG;l^|eup!Y74uW*}3w&qbl3iGpD9pQlr{GcZ@ z`Nw^IX_|{pU6JnNax=a&nYTG*et!NbA)f345je2glZAkC+-+#AQ*FG;# zriBc>Y+77MK;ZqY^&RW|0w1N$wUOV9gY+jm$v(g%9&0cY;M`v!kR$7Hu=P_LNJ*wH zM$LVqxKDEX^=)!RjT05#*e%VJD9KLTC!lkJqa@Ur!9PsDQ0tR6?FWF=Q1Qz$SVN;Z z3$NnPH6P6E#Ne6dgCHg3`1o-k<}^(kQItw`{U=KJId!GQov2(l*Oi|?>+gtKG~6R_ zOnV~hPw8qlJYU%wIG`fDDU6I+^3BJK5mPrTq552yZ^St>_a=M2j7G)P?;IC?Pdb`k@HcmJxmf?6VNxH zRD?GieSJ;(DRDFxwK&jd`#!Phb2~dB(idVTH_*_R&kf|3_Kj`y)UwQx961z@i#9`` zbAUCTea_Xk1DTU8ZbNHnIFkutIY&1rEc-gdCVgX+-OMn^o^TL`wH5I>Hg61YhN@#i zq#BSwObc<*HB9-*p1*?wY=)5BzVc5_V$|ZYheJ`FV5T(n&J?;jp4DZeXjUD2#mpxN z>59#R^&bzI*XS)yE8i}|*>Vr$8m*^Edx0~uZ%n0q9BMGPd4FLF7YmY|@ub)bPhA7B zuH2k95V^M7yV#(TGm4rxM5U-JDTV3QipBTNi`~Noy`~qq7i)X?M3)}n)`zhdW{i5p z;m!;@!ak^(-vpLw0REOK%wmHrE6e}ww zox~|$7Mg+*(6+J_I`bZs=}Yb(yc<Ed`c1>u7ejI}~iXWgD6x@IJf7)x2a z!iLhD9Mc4Jb^6dmcpI>$UG#M3 zsxF38-2Qk*YDt&XcFaUdEMR{LBv4WJ%xFkQ-V(A6Z zJ!onJ=Z+Xz__nyf`0_`6XPdwlm0Dw~o361E3m3lgz=cH+?>OYWz7)vc5&52e*e@%& zMq*&|kX;)p0>sW)WEEFhd280$;1+aZ-4*TbVgeb3y>xz+XRTedREBR(rg8eL>pb$7 z(C=R;6QAI^K$K=vIskAnrP=V0`(_Y(4Sl@IJytrWqyNftW!RZ##ec##U7hS|2A~VwYZk3)18WC*_-@)Umil03$@=OoKW}bYeEOLejlL7q%oHYbJYQg*1*(93_|)*e z;oPE2Ea}_V&jtTmAecNPu-|1vc$^hky8q#gjAA$PVG)4E|Lp#3C%?;t>yW~kH_M|( zVT8ehm=WT~-1S%FzQ~#uFlt2z5=$TSmKGabZxF@9Yq+5t;jaT$2IfK|b@XBsR0{>- z`VG24>xjCwzB{>2r3$m|Xd7pX(N2cl~seu|I&i z0GLtFkGeKf&{iw_&9Xjar7=iLbXYX-tS_qESc?LI` z_NaHF$GpkqF_03>zaqIgPeE08CH5wTP(}x zk7|=qY~#xUTZ0An51)*;XFWY`k6bxbDnBsMzSdKJQw%RBHV1gnzLQu>3lH;tXV5^y zDW=-)wG6%LZEzcAvZuCdWN`YF;?rJ zSBd2-Zd-g7RFG#Mza_mW>gvDrwh^U-w{-;lcD=vZr*1!eP^()6>=-DGy3yqRE4sQb zp9}Y8XdSkcnZk@xvI+fhKl})$Kb8B8X|-1= zg!pH(cbNx4i;6FoukFTopCdq&z1$kt1tKAp_^Nb=k*`exTUkk$;Fl!5yi#%{m+q8 z75r^tUXAq&<%z#Gc8(T}z3B9F`Pj05Hx+k24tcMyaqNiG(nr<@SP|+w7Iih)ujuA| z4DJWpUpxJD#qE<9$&n%G%A+j`>I|DM*7MQ9K|;e*6}%svYJHAso&KYN_B)8B7Wjv} zbZk#1|2?Yap5;n%QS2I^u-T{1W%16?jS6<1=2b-DgLbh*%2qTnG%|NY34=MC z(U+-VTXPe{H8M|v3C;eRxeZYw_J>fh+_-9o9kg^UyD!(1Q9r^iJN=G3(CGLJ+j)xs zuPl-;hTNud?79UwBHG2B?N8e@B3(uzzCYgTJ>>B(pT$YtTLC}M`k~{OnCOS%lJO&q zvegcGQH`P|wP|t0?D~9>7H0ra5#v?1n*EraQOhKsF$S4aZia-mH2y*ByX>rOM4v%Q z36=w?<{4i6g{~uVhymXW%}-E!9Q-M+=IDo)04-8HI#8^@i+M3KES?{{XoFoCiggcF zcP~d8SY9@4aV(O4Gdiv-vM4z1(X9sceBAgb{(HUedq3G-7Yb70$lQ7d4I7i6_5DRl zwl%%ECy}le?M{mfVfzDQL}j4nx0*GOs}TFnszjKj$wS>%C8|~y`>hq(yXRNH(j4S6 z>)B<&s7smyDZQbV^{U%}_ViMMM};j~YSp+%->LzQOZnb}q2r6U8=h7-bEAB}YazyP z@PLt>!$Pff1DxZxw%MO$W&bDhn%_-pR>~W316R4VXAlga$2|?Bci^%1vqtVM(eLjw zP0&n!fl>xbNz@I-)v(&N8BuaW zNWo75f#S;$oz%O+!CqkEfKmvCH~hN+^>>N7DrS78O}v@N+zo0=o5x4x@a67j59WSpdG>j^ZL>|?p!ui*8nNykvwiscm+bnM z?gT~wvTSt4)qQZ{+n*u(Gk>@2$7fZp_S9VxZvIKbvf;6j0L`$&dmqMj%F~D~z3~D) z6g6}p)4>cH1&v~`y1w66EP&_}`C0;5&5>^QQzB-%P_EP5Vdn?Hd3<|Xo$ZYkc6mRS zYSQuP=oO7cn)@cKI*~KtqE@9gkb|@%5cdDKhhF~=XJY>!yjFdUhx`5If|l^&u}Q~E zxjBu0`eNF72Q0qxJ=jnL9QMf?(X+6lyia$B?5UoRRbLeGys?KHlyyw-()WjA@BLp2 z{$p&bk;vwD)+CMTGPf(>d?JI-$C53({GOi{Qm zl&4Z{LNSVl4S)HzkJfqMHJp&~Y_Oa5b?^1IPWSs0^p-agQy*GhV+ij&`csEI10y_1 zo0E)7S{bGdqS%`1z%^q3LoP!#V){x5dK$X<-O#;rq><}kQ1y_^zMHAlDct%!8iZ*GQHeCB-humuyX1>be%UJ&bWit^PYf#CH4Y44RSREqrG zNqBMWGt`uG`AU=#Ru&u8*)bA3oHFx~#`1ZvcdP9<(As|S(BO+@w9ts+Apoj06`JaH zf;RL&e8c4+@WFc|zbN|k&PeNPQ4vO+{Og(j4w@i$>ts+4+Mse!GQ?UvJ5Wc#N5n9Y zil=|i-B(PoEaxi>4t!<_IBa}@CNc+s-{Lhk+2JJbTAXETU zghb!W$4+bOX5-GR#Q%1cbV6Eww0;I&6Y$HRVvo10pF`n!F|Uv3c5Z~+?>rOG)6!(` z`m4bF!Cz58PtJw^io$x|mhxJscX?9@Xtv>CM>DXl*25fBsFIQ0C?-msuKhy8hXGk3IcA~xiqIg}2D}(>FhL+ax z#}bwYS<9oer-~tbkpPw#%5Ss^O;f!K|Ly4=Ao;lGe>IFlkrmRMUJs{fp77Jx!+-aI z%0d;`_O?3CZ0yeGqg0>E-<%b)6TW$53@~2+dX6qf2;9AE6f-cGs?cjw`thaxe{+uf zb1=!v9TOe6`vH9W%-GzjMsv^Tah1~M{8XBQ)XGE#}~-;ttu&>-@+$%374 z03F};-aRk!H)B<5(Z2FjGcZu5e21Di-_9vhl!f$M$%>EnYUf}Z=NytY}$#12AxVON`GG_Xm5-*K6!xGy+zy;ewgsm z;rE!?Foa*EoSNMjxZ&sQ{rgtE|DVJOLh!-2fWV`)s0!!GKr!-iiET6B!C;Nh?kJVTn@a)Xs--f555mMJVQDpaK^8VH$)HXOEgfd7t=Nmw`k0OyCNjPr(!zv=8|d&+mb>H7Rn zz|H`#H5+ei0Tpi>$J!{g|3FVjLuRA|^|hteFq>HbhMf_=`Ca>ui#utIow!qU?f!iO zc1XXTIg~cCOk%<7v2{}eHCpM&mkZZzx%9v<&lMpS=Cy)&xzfunjgU%UVT{}@o;x$= z$df*f;Kk?jBNXM8k^8BCwSpr-^rnlMuBonW`sB2|okse=*UR)~Y?@lx@6e$3B;mRHwre!F|fQIOfApki@PM#ykAx`MIc%tEa3Dx-Jp=){uy z&!kyx&T7B3VW@=}J67^xnvMyww06Re5<`7!aE@u+H|PlL08?aP<8)#9#p4)&Op zj(CgIl_&@9`rLY`(x}Qt@{Ubev9jXMc|g3{l0{Yc`Vc}Q7n$6N04_5VUm=W^ zZF?6-A0ViMhjz;sK~A)arnoD3n)&M!zEYrCSuB!k5x7X6{pGs#s`k;cM$v!?sf%B9 zx*VI`PN@y0pEe551;5;DY{1iSDe0P08 zD`gH*nRC>s*%&A%C%aQ8x-_YRywMy}ndsEPjRwhF`D_T&sP*&pA+9=D00jg@ox!U^ zA+1lDuhEE^Yi1DJG~1d|l7?iZqr=Rc%c>3kolugkfser0EY?JbpK}Iz`8}r7GW_e% z&+qlMAV`!ObG$pGX{egs5!ZH9o%g_SN8gR?t-FkBS9S7AP8OCR3KB>iU_ zyQxH1nvf8Qm&ZY6WDE_%=@PRD^`F7~8W+&|@8>TaKc`9>W$1ath%Ue*rIQN05;#N7 z$;^y=)eDnQz{X!ssze9XpuS~X`joAT&o-4((Fbc7PyUw8xc4qDGmYqp{JGy}k^zk` zB$-HK++L0;vqiZ|Iz#9PbrZ|)KmF!2Dqs64TN=>D$NIfAz3I52((ze+gk~WR%?{7bjm`ns$g(4Hkmy?XF z)*)D=&bdZia0oEiIj{Vyw@%q{+__~yGI-V?i&4+$tlib1K(Bt#gG#@QqR>XA{8|rh zt?v4GTBb33U4;v>FLEY=Z(w=3<g4?Zv(CHC!=tIQtnM_PsZH~xPsP>NuMalQG=|@cGw|ms>pQ@{Ep|e- zt#XqY&he*x*LfXOEVYbY)bz>b%U0ut~7tVtbt*uA1F%>;d;Gix)-iTr==4|_Cp`#6)c{UGDN9}VG z@mUfEURkobeB;8qiEr@>%$6Q{oo>Nq< z1^YDnR;S=2LDa`nBtaqeV`v!%JFVgYuO*5XRisJKem{sS-(2BAM>49zANmDUQ2zA+ zDG5<4;DKo`wo3HM9^#F0y5*NH`+S#|^!(~mUQF^}d{SwNyC%_)!Ec9Y&5-wUlSMdh z>_;xa;1CeT`LIbWS0*ecnqhqAMmI=W!b;yU7p!4XChZK4atF?oOn7^fX(c;)Js-%a z!oS_u_f4#tWr;zX;g-+;iKS&7|3=KqPW7wFAWA}KMgF;JQA^lO4U@L-o2iYbt$wZF zetNa_fj`(XS;v1g31YHLF3Y%*vH0AB^?_XMa_2LqWcfRU8&5);B&B*BG)pizDK3tM z>uII+q-=puQa~pMyN3o?a3w&cWhpz(`R>_MZx0^E0CwE^-X$c^TS^RmH8K)(08ao0 zrr^n#>dNhP0;VJN>sOnPO$BQm{0LVrFO{}WhH|Nu$;i3cWbp5|$&zaW+1>kiYgblIaec(%lh^Z>O=KzfMb8lxjGufDAl{DpIww)duhy+O98X4<)hU;(q`qgvK@YtQe z?`Ur<`#oRt9E^kH$1T>8^MXs@r9W6CnypnqcAAK-iEi7@!u4Gf3VT1l+ghV@7XsyO z3-v{gZ4ZL?d|#6{Q|mdceA&-nF8)0F(L^=UeZK^Ow0zwA`N2mPI%jrpXCv`c=fY zM6MpbsN5(1`c;w;xCoC=tf&?50GNRn-i7MNN(@i5n3(ID*4``OhXoz^cafj(b=J&~ zQ>`TNhtWRdfpj%d-hd00!HE^$N`*^;`o6>EMa#+`!}FfHjbT30(ux-iMd0T0bV}k( zlwDHt{R9E$K)Or$>$R6&gs{(00Q?~T=ZfUw^a;t)KA@TAXrHxG@EKXe`NxPU!G~p* zm8=-YgxsUF+Tp!EvpT$TT_H*rPsR*j9IIYO)ZOJ`%u*LzUvIywO z+w{XGo7-9XLA7!Ob5J?pfpzrFmwc~_N=IvB_Q&WA{Xlkq&m{!FiUpqBQxQPp>Botv^cD|F+dy>kRpc-2z42W2O-qUU z#m~p1dZcxbkH8v6>|x$OlwEx53}hy0ptQ8K!re`Fh287QnscR@Rq{hxsRyF@u7~p{ zz#=>(rckA(*S)yXtfXrzpcIxAa_5gwVMvS}=e-YXNwsCBDwgasI=q+qXx!fWCgSR< z6CqWSuj%PGMRjUK_vjtd3O`8oxS)uxwS`w$G1w?y1l1Lf`Y;y~v+Xk`Rjg-y5@6ZB zHDKl2-%O3Og>5gC+eVE4;I|9He|qmuf` zZhT^Z$y!Ul^E$*87AnNy(4xek)*yi51GGq7@r=56qA^LdDxrwWg*i?EAuk6&V%Jjp zj%NUbfuY#5PgS7z(LKCmxMiO_^MX8+g4}|e41|k$hJQ*qsZnu3@S%9Bu+!x+aTV~Y z=^AGW!xMJT`mujtEA$DId1jw$@2-PP%FUXJEmAcK%Wlv^C9uzM6~s?96=cYZ%P~cz zRtdD4sc=IZFq-j^=I$HMc)PGmon|_o)t>}AR8_76x%6~8x{bK{EeG4;L+d$J&M|2kYS^CSJaI_tK9G!b`J~hkfF;4H z5l|?VYiD|2!;XuA!NMv3!9%(a1X0lup&1KB7tzOhd(PIoQH;2cFKru4-)Kus!Hn6+ zo9)oSUJ~b++ZFSJ(2{p2Rdb$3fnc;W5!9x2+vl7}9y7d^@exfr>dA3e6&e9{NsdAf z$*Js#c%uq2S}9DE!@35p%q^A8Y+L`LuLOrDDl09oViaT#etBN{aB?ESaG|0Cat88v zU)bE0wuA`pl!Mx`ldO(_dPnj3=I-ide7i+ezrI`uFY{c3@xOJUK_P!`zYmMQs(&s` zE7QoVQO|haJh5>810V0E0hpdaHiJz-5-~%oY~=rXu~}bSjjOLVz;ncnq1)g9uE)~M z<1fWDre>!Z1u;dZm1N66zN(9F8;x?1Ck-S4lSpK}TS%jHwjnLsBn))v+fS-Qr;2rh zXhD)+XFMv-;`WmpLL+0e6z%Pqcm!ZaH6mc+N7mMvV_dLCgI5Pg&WnS_b$~KYTF}he zXIk~B0gadHdh)ks|7{816>vG20wYxiT?`m~sQp6tUuJ}fcAo#28G*wuT~Fxym&*wI zONG$b9v4c6YL_V8rJjFTw2_h%%H|A>MU!;=+x$N=;sW_*WZ3^u8SiNH_#SAlrZaK- zY===ha$M^LNJFFOgn_xFtdq$tJMM{j$C7B(F@L57Aq#ey`9JUQqCT1$IXui)3ZJKf z5euhzd18i)Hz&)kXk;BoA2kgy{5QVNJuo_xr$+1ZMVi@ulF4uj+7i81_#~zKnZQnj zEm{rMyHJZUjY*?xtiro$T8c0K<7}cu+&{;v*Qk~*z4HKHo09HFS7^|E78bx@OfC2@ z`jnWJ?e2?ONXlmk+CB|`JL_jrZj^2&rIVg!tJXJZ-BoGf`X4WoXG~5__n!lrLR+DZ67` zZJXI^|3LKV03~={Q^L+)X)2a69*JHVw+tgrkJwg3e4XVsY(p2gZS-t2H5eZKb&*%?g0zKQZFFUwD(mmE zz~@{H*xIuG|H!8}6dFV;z`IFKwL?|>1Qdd!==e*d#g(jezZ~`A@$l$Z;pgA@{dDF7 zaxq}W$Nq=qij<7)DRPU9i^Zi#8hS!bmDQ6UxL~o8VMIQ@!`5ZZvdK?)v-*!t z5MevA_1Zaz=*E+K8m4Pm!)IQO3ANh7tec#OK9hf?s3m>2LF)0!jt2@H7?O zfp3>Gb<<;#KMUeYVt)L2LE7&ntNuP_V6C6n>*rnG3GLC4rDs=Pd`wB_t&iZ1-L6B| z&Q>Ijs?G0xjdFq7-C$b9j0|sXMe)7=+;A zb0OoMiF$($zFZ@(T|fi{Xaee)cSXtf-u$ML$+dV$7B0}U3T`cy&~>gO0d?NgnHVgW z_SKM|wzmJ~^$g--d3^rW(ic@fLZ!id(36-W&j;zKXQht^6!!J1r7SDrb-8Ab^j>>^ zR=|s1zcNDmMFO-pJa#mR6DoVF)SXZ0;lnJ6mR#c3bZ(DaDFdKfS@{W48sx`TU9l1bWqs`~BMZswao0;(%s9|^)4;cg4WevAE_noxQfu9r3fKl?z- zl?F*kd8JNuR?x4#pCn0=5F>fmodwG$DeKN=24)X$p`?JLr4PnNMgk!PPQ|^`+j4I3 z_w*U7-g13*_qmpD{y9us{IYwY5;J$GZXN(sT5eCO+&mnzT-h4>+rw6i{sUV{OC7*VtdgNVR-GJ9BX*F1LM zAX}B~t{-eqe9QwH(pi_4+$oW*m5e@4s^xofLJ{@WJ!G{h!9K*d&~LggBs$Q)!i<$u zqHLP3R###W7Ou}EJW(}1mhP8VUEa&CsIeCAd!yKC)Qq6(zF$#BSf@{Q6LFPDn_; z)uek^xPpEDanqk0JgQ8ZcO){#iaLys(!(a6>dS+E%^fjb%i^t9ydYen~pMV+f~ zeb+F0h~zyraSAr@+43X8dLjP!y6{5_8{gMeMbbKk6LytQ?lt1NdRgsxKdJCbWrOl2 zw3x{TS-EJXN-n%afjR8kXu&M~z9YbvCAHLq%T`flS!#u{hM&jXQU>uc!B~* zzq0RzIE!yje0oS#G;y?k@3z=Hny0&%Ba}aFXm}SsbujlbXK7?C{K&}c4TpM`oz|7h z#Z6c9H>DX1pAPumThzZNyLIOpyO0oYW;ma+r>vg$bwK(>^S*x=sH&n8y~ovQ1$qC3 zWd-ijcpYZj5u>j^2ouFB>BT|Z0nXHF!(w2Zj9-3YHW!T|N5INFePOM z`(-#6_1C4+;>_doD%@Lw6`Vtq1EfoEx(Q0>D9w4r@Cx13tygj(E4ImchDkFOc9*aC zmX{Y-A%Q!CKYr*u3KU}5SrklZVKuyCjn_7Gl+WzXiGm+WTscnU=jXoZA3jJw#OsR$T<9yM;up)S_%Hc!rba zd#$sXD3AL~TxKSQo)k4K6bB6PeiwpYw6AigX?XetLN$9>daJsGcm?iaA^f>XakODY z&YGw`n17>C%5K?Z1y^M%YsM^ot4;pSSD>WKyk%j9q6K;#_u6Ps;fC ze37%(iW*y?#6PwA&rq95KzV2I7HUU|Z~u$EGcmk*5ob#sLCeQj2Q6RP)G{F-l3#RD z@7HiZU|6FXZ}k-8Nmaj^Zc3Eip!t!d|Hm!Y%DO9wVzVuT9YdQ1Vud5A9F^UsGonb| zGrTw~V0YbZBlx$nQTy-1G^56A!(nDCZhSeld}%9>k3Gws*sWk?-L`6FhIMt7rQUQ0 z&kR=Nm?wtuppDPV0m`m4~OWBAG_ci{XYn3eHMti-;JRIPwBoSBt@E9 zndJwqor{epIoe2FaJyf9_tRI1)I@)}r~sUQtUzn?yfVlC-uxlCae{&eTi-c`_!*Wc z`K9{0I)it?Bfj~2D_`Uf^>42_Hk9z=bENb7;%AIH-`|Fr-D0cA-QAHn7@S%P7HNFe zX6o+}+~2P8k2Uw>@+P@e3=U}51@E2~=M1TBr0D$rZ2A-rZPS+! z0e?mS-y0CQ-4w6qbIB3GzqbmU%CCivK(k8l@5sY@{bZ-5pIM9^DLNA#tFi)4Lpg2h z3ivB^LT`i*m_7HZnA=A(ZcS&#EBohXX&dDhxAps-74z*VGy5`xuZN*6b|!E@(=E4s zjNuw_Xoqm$puj5`QDWQm-;P%4Kwje1eT~*2xxUFqG0Fz6UI<6D6_Dsr77yQcf$B!d zR7Hz_32Bh#ycIT2DFW*HgSd+30f@>E?mTH-blm z8(12e!iNu{nt>iFQnA|rQxhHB_+q1aquW1|tTPkdR`Z_aBwHSX*X4 zjTP7y5USx{e$>qXlARZ~>=Fy(fg7sFg4g&;KSf&%mprDl~ZnT8&ft1rpK@ z3ulR0hf5xZ^cg=e4#%&XZap2Wt*y9rkWt6p52OcYt7bnSI+p$f3NeKXt9k+%-5Fc{ z*p|!KA9^KklRg@~FlG>tK9YznRjMMlzArduA8Od;)Lz`qD##m_ecKjFrS_qpu)H?l zBsQ%z#d=O}0C-|^{Zlow1XlZ5{FOq3WWv*0_2vpb(J$oxDgyrrP=SA)(#8>-yu^5K zABbCQ2J@XL@Nq}{_6D?^k6d}vv#{~Iz#8x$SKs%UpK(@>00-Z;%6YuZ=tQ`+tX z+jekw56Q0`5Fd6KL}_+p#7rGt6|8w zY6EMedVCqZbTQP(K6q{}c!1}`I-g_G3)MMFR~^4&y!WeB_dr#lrsRe*vrd>hhurH? zL`#bsXf=%~_^vT2KhqZw+YRF5D%4x-4XB}$PkMIzy;n<=a{kInS>8Yj>3t62_lWIB zud?$SD+8fw)F3X~Bt~Ta7~S&GtUPqXVAsB(P+qR-w26&`p!Gy%u+}gx#z)}Stu?1~ z`ylQ@TE)b$ijZ8xgXPxd{DGF)h66?(cff6V9s>wf;iGzAmizfKk@3~l1-!j=yPHoJ zsH({J&0g_@K<||fFrn=FStNUDuNcfB<-Fgh!HoXvU@668OpPBaJ>{L;o+vTMzNrYT zQv%sY=sXrB;%uFzyc{sJY*n^zo75GqeAQ<*-$%!B`>sVp;#aL=cZb#B&QYH@%BF|N za5&eOU10S}+PbNpqwryzRJ~fNo=sMdE`@#U(3R0kEh~l!y=tW{<{Cg2_zp6LzoH%PP^%sUSp_Gk4N z{jK$W+nSo`((N)aM*|Z;nBkvhjq`4t_dB?!{nhU3XpWcL<{hiAKdsGtg5}(5GnP{c zRp+>LB041BHZtvW-&yss$hi%%tvcy@h|w3NsweNHDKBPqJ1frd&~27Yq0xe|wjN>OyIY>N>P7 z1?cwcfpwPU8+mo!B1x(B%<_&#%CX49YL>3Tv^_Fzvb@t1-01zSQm`2mcBGw8&lnpGY$(n44UfyCaNMFK~;S zp-ON`^PC=!_t;s#yQS!j(gP<=*XiKcZk?yteTm9lAHfB`tA@%k6wWWsT-Tkot)HYRMP9R&RwydTM}h4lOrXb@TdK#`1cZy!MsD_FW7`rv#Bfp$hT_9qHSeQtt!=5o~5sw7TUfL!`}~ z(KJrHemrDd-%VoMs_+F|;BoscYuUOfH6q$gy{{;9)$`tGho3li_Fke0=jtZU)x_N5 zD3MPl=O9XYY1HBq8hNR5TXJy|(r=;%;V@A~WTCC?j#XDZs$n&#@QGk~wM)n}Nvrf1 zwJH<+Vo~@5o3B0A*Qn@C2mK2p&A=(gqS?%4>L~OCRu3uP z(;EkJQIlMW=&Y5YDc6hLUy+9F!t8}Pxi#I4K|e=C6}*(Zf^POHEYyLtT%@Bhhs|>i zDBSj_n<^4BF21gAokh)Y0Q_#WIx2h=E*2G0$-4COAoETC6NW${kzY%T+z%kG>VzWq zQSqju6t#%A*&@ha4v-J> zm5zLeR{_gP}Lm{417DpXQq~B0?}7zU=K<@^syi;(@m? zU85pYQewZUm;jP;w3NpxE6-Wk;?EE#O72ia@muN_n7&cJwsyXhc~=Syd7ML9oRg9F zkE+C8j-HuVAT7N%X^KeE#(cQ=qGj>ubY@gpXH&C#q6pm!ebn7pXZpKx7`%;;t8C_b zV5_Fv`4uj%8$HTu`$mQ)5Q)19Ztw2YG7cxKjXZXA{KQ@guj!IXG@jtztC-OTrkQ1h z);h-|+Lckxt2~;Y2cnT>j8RSMhSGYHrJuQ$4#>WbBxH&oAW?Api_eR>9XA)4VbX6B z_*5-wXcd_#gzZ9*EU=E6Y^T0}8#{Ig)gX%9?<6({AP|b!K2k+h?N)45!?U~zYVGEv zqc>)Pa1$Pc$Po*jAjO zTbyR+d^6H_Qju5rP-w0<9p4#~Wu93(nsKg8=O>lX^kHs;d*%ingH_~sKyqQaG98h> ze3w34=Kn`_^X`%HOxY2S&(ZKj_YD16cWqdvl`jrv>>8YM(SPBA%zWyG!85Dr&)bY} z&VLZT|6+VzN5iU5mJBT}c0(vz7k%Ar!rW)T6+0I?hAZ3y^{3;ylDIvoVlNf(^QJ(` z*2@y!^fiAmB{m0vcOpFxaEsy52&T~d*T+t~?qh~h!_0`YY1s?MZPSMDg_Le#;zDpE zqnyVScT0WZ5nqfS4FAC%CsGrOIqz&A%qgCO z%lgbZn@2u?H6G?#LGtFJlt>OMM|G2u;^TX)taf&6Q4+O~4Ksrl@!DO?$$?+X)>crt zy?EI^3%dLo0j~u>m6oMM8wZGx6%DIjOf#lQ;r2B7R%Qaig47_0-8qFB<~AmZyF4M< zn<*k{c(yOI=iZ0_Ek@5nUDgyTR!9#l+3URW>bI=D>K=5n18fgg(BL$`aLT?_NR!>Q z+S4Ui{dINnb335|V9t`j`Hq@~q6v_!zjs21=PHH^`r9fi^-x>8e{u6RKW3a1R-?P} z;j+MI@v-4UzsIJXaXfWScQ!Ic(ZmcMxTXuli1!+OX7o4*!aH{3oCc`eK|}Jk0lqt*LeWBB=bvo%4adZ7ePaU=*^HUT4WB)ZBPAu=vU1oQWDAn@ewE)URVDk^1+ky?Y_A%Z6kB{l z)j7Z0%h=X&EQ-H!r*&@8=_@E4Qcw_&o_;_jKJj`bKGXdR=#3uF7KvicG;hw8y$Yt~ z(CjXbw#XjCIiaqfVo#zfoo(#%6U`I*Qc(l0L-qXp;sd+EYXqbF1xEUQ1MN0^4Fk6k zZl)ec&a)bK++;CW`purbV0WjG)2eoP+8x6*a;fM7~ zgC;$2Pdjbw?|fo)s{B!gTK-n78kJ7<5n=og;hb#OX9$|X;{eIwN9Oai{bM2Q(&k@6-QFKEBZCBiK^`!gH0Kr6^z@LJHLl{lx{7!SCq{PSCf$=;d zCkfRAfEs8$AT%+Y{uugB0OkMSSGG5R$Sv&N{wREuvTA(Iex=uyGPIR+baTgAQJ=i>#1#QJ7Ov^xUswX z@!R+2k#c)0m``&#^Ugcv*9QYs!ob;O3dY^_#7?Vip7X6AxcMsBMqYglvD9Y2g|yPv zew$*Ld;6&(bJ(lF64{O)2(z#GzU`JD^m3hJ-sU@BWS#gfshNYJCqi2;u|STqu-6<` zragQ3a!h<#%JnvhDK=plLDd_XEKh9(EzN&Yxu2-+#=?;v`6y>LTw^C9ee(Dc0bj}s zz)yw;jz(nzZY<}IO?=2sjQb45OLrCdYTfp4@fe~}{=YGeesxNi8-B46`JBcOsziP8 z^a}H_ME;$Pf)?tCP7|GkyLXuQ@?9|g%8{9y%FQ#k-!u6pUNaP)o%=!kGsMBfimv`*XM7k{2z*9p0^|0J6)$K8`vNUN-Vc6~==-yp2?@$A#jNal%5 zPlM&Um=?5P<$_Sy>xq**V&+1&*0C)TlB&_;t|wlzoU?;Jx@`brJ?dDVttR|VgQosm zAwm_dForUafoGb!Bz%X3S>K{Jemj@;(#E?){E9t|4X2>`EZRKHeKc{hw0Q|O&__lP z-1!VUK|klJdm(bn`m<*s;15O8u&^&?B8c9b^Iug)BGmtox)ZU_3RJyh@kBs;0EQ?5 z$n<4O$=cS0X+MHz==#~_judYg$e#}%9hhy+D1jyBX1W|LkM7ml@d}xZJnJr=ntRG0 zWW5LE9vk$}J&}j%9G@S*s&jLiEut#F1Jy8O^}nLdmQCsir-oob)KHG` zG^D>oapyFYeML*Bx41BU-mWhbDKpLc<%*e*4Mh&EH!5G^`&23Sw*1cTiPY3T21BMrek|@XJpG z))Vu=nqCK4kYM-|`|qz`*Z&P%lA*xCu|9p$!#hFkBUeIAV-+|iK5h*M^`;j-;<0(R z{xU##(}`lAWViu?!*Z=5N{TyEslJZR>5hlzi-x~mwJy>yriK<4QruXDtiLU+FZkTs zNjA3ZXeHY_euTQ5x{TNw-|K15{_wuRQKx#@pnphM z95Ga{WU(3CVkkMm_fhQr>KVa@Wu?>QN3pU zd%|H%_C^er@`7?dBJOU^1(v3Da^N=2M=HTQM{dj&>8p^gA?<98-Z&%LBq>n7S~07s ze4iuXPp$ph&IlR)`2%0pF|tNMN-;L1I(NVVsMQM*;cqM5{F& zlnj*`S;ne1tMyWFu}O8R$i#42jX1_b?syb3w60LM$5ya+9egE>2J?YNC?!q%CRs)4 zPdkfS4J9-m;fL7!6O%8f9HpXOL$|^Oor>FkMAn6-v9r_dBA$<6t>oIeNG;8*5>Tkr z$56ZVCtH)_rF2h!BNNi@e|vxo?hp;mEf%0Ozm7g3PdR(gQ@?C9dkvqNQi2SwOkk47 zFF9X!-U*u+eqEkbz+u+Gv6PN9JJm|$wq6^g4E#!T8Y#MR(fq5mQ{cDe>?J^tyWCzc zg@`$YYNJj}jl#HF8K#=x_k!vfu}F$ z;YA88S=C7Iuy8U3Hf_&q<$UDCVu4mwSPsp{$6mJWCWWd+;jF;Yb5yTwwPrWr)h>#p z`ppfa`{7-6y$xIMl>7xdYp3S)1d!GpzB`Ag@p&5sjpBTtf-zl$ccbSq;kOnp!R7N= zOytkv6FZ8k0nyj1RyChXMyX;$`Rok53&g4TZG3E`Q9E!qPl$jOokWzJGXbA;X!jSRkrN{`fRJO((9!v-@u^Rwwp0zW;pJZ z8EIxzX<9*ckLt9tC6`haoNa0uj`H@eMR~UZy(b*tvd6eu%ucS)m>X%87Jue^R2M-$ z$6|uyRz~px{tYuR2ihk_$BwctxiMSl;RXX>ZpN`=vo<@N->)0wdS3La{r|v6+egP{ zwPJRa^>vf(x0P)2MkN5Se*Lb)?`dc4&oY9e6Za0gv{d!NuM#}u_=9p+Qy6%v5!U4| zOwl++DhzKdW!|qA?kTt_m8Yd=`c`F0amQmNuO;4ZmL$O`)njJZ9N^jqiU%&3hzgca zfCDn>e{e142FGRDyYV~79v2lBc2S`dZamPC2*@y5uu)kGLcD(8&UxH&6HkS`(WrZw zU_qKrc9$3OYw3LJ4>0c+De(9I{ogO|gM0q85xn-Fx&{BgD5H_uogjSAdcJpXdPRVh zAJBmBQa|V7yd4W!76F!|ymr7cA6QT&jjEq5-sSOfk<;vLNfX+_^#;jOIu9mslQp_7 z&B8N$)^a`RZ}Wr@`IdY2Uf{%}ZpKG*QuZ@==uCQ#2yH-KXRh7rHz%1r{ zz|%|n0qfoA{bdtPl|G;SgF)#>wJH|o4>O7RqxNk}NJm7R`j+rM$DZ)s#ZD)Wooc$7 zQv?{$GQNmriAP34BtfB_lizcnEI{Zp=Oq^xE=VJL%G?M zD^3{WrcAZFn=&ja+lHv`^v+s?=WTSc5Wxh~FhFoQr6Bs-Gg$Tm9?nvBO@VtaecEX% zPu{2(B0Lh)jg7#bnn9B#O0mjQzo}OV_T0Uv<{AQqWRtL`ih8tR9O+w0OLk)6yz&7V z$T?pTmtM`dM*IuB+YR!z>`O6~mp9t+*6o=b+^+(ci0?!DF81P(J$KQ<$dk=Gj_LTv zHDBf{0C3lqSazyTCHAz@>pz?=%VZifye%P-MjzEA*Ca^zm9$3%?Nym6JCX{8yUCNb zUqE}_tjs!Ef`4XOTvt*XtYQq; z8+Ft|Fi_as>R+zPN4LJ>H(^d3>3mbgJDTJ$)M?|O4;N(UQoe z*$g5?`9Nxx8g?~Clww10n3DLr3C4^yW@UEW3TU})Xdg&ea6ezfV}3{wNR-ET0S?v? zsfhiu@~_*p9({stn>D&<*rBl+xHNLl-ix<#*LkAOv`^DhSklVEgEhB^SyiJ<2&Ufq zqAk@Nu|E zi%=LRAc5Y8F8HOG--gyeS0qys{Je-eL4y6M<$8wDk#`1ibi;hP*#!!XrbZfIm84r) zePY)E$zo5!r%{$~$7@`Ls?WXq$K2J4JYVUK>WHi?d`ZV9hk$*?BA>3k90uE%2l-fx z2~HD_dY5+6E%=2REW=2pwxR4lua*)x8)?^e-%!q_flJGAF1K^7z`RX91L-$6v+DOwBp`EHp#7bn{7uedY*6OIcm$XxI|CPx->{9_Cy~tt(+%2Hj;BPx3 z@ky6loY|Lrv%A<&glBDYTse*h(Fu%m6xzS9MfH`H>J~jOEVZOM(fB@(7-2ZBgarzA zD#1F^+e^ZqSv0G6?1$Ewc2AFbTD|uy_FC=+9f*{Ki=24Kof0cz-^>6cd`2@m=+!$h zNHgacESmWv`}a@9X-;(APcI36#U!&NK1#Sm@L{*xm+o}CU-M-2dv$lkMcK)9xBVH` za{g#_k!4uSo+Nmf6dV+OVm4c^|8<@HnUhqM+P&(o!gZal>9VKRC=}Klt*Mw=QV0tFDmhD~35PW{8$! zseGug&dhrYL(9+o+e-3dJq<+G?^=rSFC=7*Wklx0S%!ksgr6nz0Wyp3P7wRh%xQdF zn9Mjyl(4H`=<9JQ1wvNgs!rs&`0{jmbzM_AWYE_h6>=dJMbS7RgectCc@1U;3U}O$frOjOM12~NWeTCz%1s>~ za4oAgFG+~$nO#SF|D<+>YPzO4aqj^X7#I5_V<$`KiOx(-e^h~4HqV3j>dJ4}gxc8m zITx>o1$82c^@Z8zI<9`b;XDMX4vB_ad2OH@`t+ZMRfcLZ#~_zz6?(i5In&EUV9EJk z(s~a9=K2}Sn;*FVefa(I>%c^>_np^J{FmTQ7L6yyI#MP^FYqP{2hdt|3-7Gpt9Krj zJV-&RlmUZTvMIplZN(e3%&lY3JH0(u45Dyli$G+a^z!WxCC$-3g?H3OI?%+i5k6*E zf_37h*#w%pbeQDib9(HK-qer>rUjd;)t&PB#>I-%&hg=m9nvEH+|GDH^4pjRvqykx z=0gDoegR>u=e&~`Dct9?2V?UzGsBe_U%bqg{5J8FMUw`2JAkpT*D?$${FlWs{z_n& z7XKxVAh<<_m;4bBwEE+nvX<$O6RLysESk9wXwHKd^<9aS%MVTjEpE zyy-wdepRxFAgcy{oUirLi(5zEE`L~%2kLLTMI`ENHxN+lTOsC&sZ%PjW4Iu5n7-f>mo+vJaIgvHilbD>o$_s!rf8I5* zWEAb|{k9GJBK^AcdHV60wU5^>pP$lYKI1ktvCF1GnvY4?3^|hnbv*SafIyk1T6onlM!LIb@ z_1gS$>mg{15D$FIzVfK=7@}ON{6&kV&dbBHrKeQtB=?%KCtXdIMS17*wZpmLM@q{u z9`D6-!;|UPD~C*$eTg@^k!8_&b6R0v)xTIHYJRTWT_>#VTCsawtT}-`teWvDX7^=k zus^1xlyq1qOP9b5deW!AB>UKk8K0f?@lbDZ30Y~rO#Pu*0Z7{adLaoLw^l}m1+f_e zlZv7>>tUF;z*&@lkSliHdVZKb*^-eFa+s2b%*a2F_2!$8$y@IA(qpdt!4CYV@MzLr zj_#fDxxR3eoXEl1A!S!U+p7>?_k|Y+0hh>GfG{N&#@x>>cpdbVL9;XL&XyuGQ~<8i z-&kVfvju`jrn`NNzNvd~hy?1Bd|!V)Kxv&3mpAwk`o(P)SDUJH+_fe_Hv8HY*Xve- za(R5VbpOL!KOpGawye=G00x3B6d2RiVAk@G>b^%Q7YB>qp&-Dl-tUY`mJX}HHhs(p zr-PohQ*!v$VB@_~$HjBgMarDKZAX*r>NSn7Ox8|ye)2FR7`_Bd?L()5DY!P7kT1VD zr;_iEo8?8)g^$~hQ3sW}5@|ZLXsgJT$r-zLyy_vl_;~Xc!DT67u@G%PnE`B%xrV~P5=umDP;0g4=-Nh@8o1`NrJ?JSA zq!$+Qq*iGHCvHP;1LZp1 zRX#7ioXq_z{4tqGQBu!~F)8@@{CDVLnu>$;dALci({TfYY|UT-YS3@*slE&)LVRBF zIyj+jY(!`VeO(o2x$)Lz$E|Vi`k~~JW5N=)RO(JW3U_SS4Ye?amZ)hR_OeD?8oq~b z8G{V$M5DpC8S)~tWf$zDMET2^Ziv-mOf}Psrhimv@~U z_LELIIi}-p2l)8Nui~Sj8jw9+ygwz@{8r}Pg7tM8@85G?Y>28qgqPF%>^Zzi0BqoC zq5%N~&@KE~rizL`y(RqK?6P;`b`wIk*uX*X=-;FxmX~V@C zu7}t42zTi)sKdv5sWqJbBGa$ZG1K{xG##y&>t^V%)TKApcjz@2TDrt95s>EqPCU2U z=}@>-wtm=r!g%Z1#jcpt*@k(GBJC`8hAGx`3;`^1~y$(jD_wt;Tef&%DfRUZRN zbJ$p4^?4gt*cD~9_xy5Kz(7w9Q~-45X z_?-dHV!&BNJ3Y0Hr<0n#9;Z0g-y~;zSC1M?N^WpQm;U9E-vL0w=|p4R@d#(Y{ixsf zc>UrCLjRjl?;>E1_E%*#Lo9!p^W(*c|2JFj{I84Ypg83A#M1=8@&93FT`Y5kSzd}5 zA&HGDQx)k18S$jFwF!Qu`)O638RPw|PDgcZk@~ANR6-h652OqUhuNdRS0uqN z(yu(>i+keQ|GC+b0D`^sEf||TQF;AfsYDxwFqs9>W+bujM5$tkWB`x!=8LC-q-|vVbSx_Mr7-(JGizPIr8kbzNM2h)Y%-l?a3gv-szMUPa`9;9xs5k#<$$=5 zZ*zk#WIidmyil2v0eKbkw#%S9o%(i*pg<1OVtA;a4lhq_%MH);7+A94)%eOXI)fY% zeZHNuaCoRTy`_n#fuGE$Z^daVpZ%$4AFhv@4e6?@_QL|F%A!lYuqjDCuQk}~Iuv@q zf41&?Lz!j2>7G+j-5Mh|d*aMGt*KiPl?Qn&#Ezs*<AsNP9*nV#@A$<<}n> zT?fup=2BzX#Pt1Y*L4z9#&?&m8W>dWhKwD%p*9*2ty|5N%&ml+@973{o;x)3~Xy$MSI+vr}1~4G*WmJq10r zm$Ot1yMLwjl+Ng*f{=`bW>94Y=a|GT9Xf1O!=7E;DYbjiQ&n5K4P9ISl&fpZ3Hm6~ z{k?F5>$jwvl4GYERk00?KA*qpPm>h89%ZCvGpwgyKrnQtq~0HPq?6rVbYQkk7yJw) z>~k#S*p}*^<$=){D!9ciDNOgPl__6d)LRP|!;3GPB%1W6dT_GzG0mu1bg{ZWfu%4y z(j7T#O@w>uK|dPGUG6el<@$)O+Qgg$!g$ZCsC&0A)A~|5<$<4*kqiBF!}zVypB}H4 z)dFa&POs>Mt=soq>NJ!*O+w(*uH5OgR^_9Yj>qSPabj)2F{ zw6$JFkOTYZhqK%Y&{Su(+peGs1KC}{f?-LM4fgH8<|AF_kUL(d zX|-~`FjwYT*s1D00WH8e|V6N1dI6W2{dewxpcLlmkdClAMTPYNt(d0%SyLICYjt9oDTdC6{2#nm@zTkl= zs}GIu-SSt8(6(*H!tYioyvdp1UWX1=!^Z(h%iC|=D{~ICHUn0rT-AAHZcqv!VVdXJ zUS@tTspPRckqz|{M+b?NBvy&z@LWCSCFzQUQQyn68u1n$@sFTO@$_YRh3BRS5n@wA zx2PF4I-h}A(nN>NXV>j$o2e&#Zs<`H-_@{Gw9$HBMP2pxM&gJZWA#seaN^cwAc2t% zBe`yEU`hq|xQ*16On4V8a&F-uB~S2X9UnTxR2sojOWWV1Nw4jJ+-@;WzU#dGK{$2f z@*?YnrY~LGWv5noNX#dif>q@9&t{(=I*O96LXVV`Llt!uTRXH(9p7!oP|vP!#aF&O z*6WX&`qU!)otUeM@j;XAlViQo`(qvm(^o_X8$0Z?-apN8BQqfu;P}n-7-;p1oIKian?1K@yR= zMdDUa7b9PIL}K563V-{ADrM%g$`8Lcg^$3VkBCI)H1*?!Cn`IMCm31nOCb)iKgOPI zy0bf}H1Rp00M-E%sh#WB;PcS-6aFeSh-Vv#8jA+qPqS>0tZR zpau77m!7A|pxtw$GjM;7Fty>`M+952LA;lsX_#xJHe(GlJPPgq#gjZ;{##^HrSbB& zQ08%9`ImU%6y(_^RW%jfHu+8)1j2C<)k1j%2+fD#m~4tFvJF7L7wVM&d2?wk(s2w zuKVkNxK0DOlue};SV`HFrBlYazp-G$3hj{m%So{Fq}*>YF_fMslAb6EiHoQ>9_PbM z0iN*iGvq#eM!Q`!g#lk=Rxn@$+G}Gyecq?28G8~q(b#aP@978RC3N_P>&5wpP7XS$ zE=DYPq8H7^h<@E1!2Pr6dOsmt-HA^U*X)gi23Z#Wn~f%p-RB z#u9&uAU@;qs~+#h{qF|!>B7tr;pyj(X=`$DjkSmRrygzoJDJ6^uHXMiWZ{d#PkU9= zQ66QpeN^sZBq-(um%}lS1*vy!iUE!JEbx?%1~O zmfUYel6B4^Kex(e{$74MJ$x5tY=pq9ZRgPAn-EcEm&c}ej179#I8_hDO%R#-HG-Wj z@l=Gr@u*4Z;eY1VB_`o?cThT;mnv2eUsq{*!yX7iS=Te2T%#Gv;orHSiPCNxvjTyP;C_e ztUVM0vOwxAFRvD_4}pu!)IhpZoT*Y&)P~7-^cB#s*e*d2|8sGnndz!r*w!Z>{!9M0 zE@cy#R3M@HF}I}Lw!6DkQY}Y(tQrLVTI8rWdQ#FVU&r- z11mVR(ArL0dz90qFTY+xoMQN-J~OFo?Y^d{vW<@Yc1cxu(ITLE_a@2q00&Fp*r!-jRn4FjI2m62&gp3vO1EnSeug}FEA3+-u7 z`1^UZ^G?ljLD5&h-|8taW;d*5Ex;uQ)Sj`sbH3f$vQp{@!vVQn^(wNP2Sw^V?0384 zb;qmsYm)>?55BBJ_s_bf)0#^HhWS`xi0elRgld#@o2F0RSZYQfYSj2@t=zK~Z+j0y z@>OIDEngIWy&`WoJ&C9~S;t6gtlJwHebvZg5h9=1uraR#bI!smKfmJC6yn%@?%B;> z>BAdEm>M{^@g*%4<6>Lbp}eSUI%Ne``6Ln7YQ`Hzs*7K%5d*O2umLw%M)x^$8*q`mB?!V<{^g_(@14j6 zVPN?>y9W=<_BX>gtj-aJ1z(O zy`;Hfab;I;|GrZMg)sWZ-pW8S!SrMyq<-7lF$|Qww|gHSFzbscAT;2HL{bgi45r%S zqtM*DmA50jWV5%`?sY0D^#(>(X?3?*#~Nt%Dx0l+<=~%sI@~0$P1f0&cyP@3xnegf zL*ivl#*Z$$_)+y8+!(NFrm%V$KG*s}8d$N-Id+3sM4W{SR7@9?Q00P{l)je`MUmA~ z`|;f@x12K%jg|~)z4wcuCJVnmql;75DPXnR9IS*)XWv!xQ1^G&seCCZa0#R)>$$o{ z)sPKnI}f$&%`5n|ndL0vIJBV03|>P03Fn zmTIY6dTg0%f$OiBrzhTy&Qa(G{WiQXxVg&QD4v^mxWdPiXTA&UyXpx)6_$J~8KXh1 z9!7NnOCJ&8+bO8a_;zX(19^7!j=Br+P*g88R2cah_1I}db6ch1p2C~?ZQ8kzn()|S zaf^~n@;J`PB|iIQ!CFFKx8V2t_z(v+-L%$V9p&%~D5kl0AN7tZ$ICGF5C=nxja;r> z;cGDapnVCFBV*PH%1J0VkQuMfRzzLlFEb5CJhDO51-&l0qu4r`J3vqp9M|Xp5 zQkNb;G@7;j*!9-IK=Cf(gAbe6A47ra5CgNva(1zEpA=R#&ZAr>W$mINoc?abZ-&8WzDgi-3mkV4L&G~xZD3qIOOKrrJG|o@tKW#3Pamm zJ5CLm3Vp)0$3ZkhBPAw%Mm5}=Pw zdc`y>bNn$7_z)vFHVQ2#%&kFv0RIt9!l?xKb`}*uV-6S8-HKz~HXj!kDu)&qy?s9O zMv2;&uDe*pd&L{v68k64RYDEw1c{O-=%ARX^Q`3yIBmnhHcMvgpY4qG8SROOlIzRs zX5x8?4}A_@Pgi4|8d2U4kAr*e)@SgFMiu;AypT-p4KZ5m0DWeLql1a;AT8`Pj=f9( z?qY_2pT}LG=76~|?URySjNPW7Tb0Gx#CS4xq9Y(L3eRPo}O$aM1&2XaAjKVP!6`B~;9hz%q zNiycKUeE!^&3zz?sX~S`WaHo+AFKX^lLwHR?_d7de)&IuX7EGtzeR2U!M|qhd;;oX zHy7AYx}&wV^~qP3Ux~d|Wc=~>%LL?XKuU^@uj_UTBy&sZNixF5;?no{M}H;@8Djs0 zND60uhTh*uW+mWd4vAvhH8IZsHWa!I^x`8s7w&g0+X+-07C=f~dMT^~A55PCn2bv= zEp;y=L2~ndhSK~yc*n&h=&9vFrE7+8)TK9<|Ax-A1KD$5n{kjbw9yAwIj(z-rYvoQ zS*+DbeRB$amKeaE~c3!4=E$BJKKV)WiLmB|E{=|bE=@-6CC;3X$@+_H+E1YhZzDBI% z#9+4$N41O&CwXw@qxJS$y#|K>8G$SVdb}wMvHsjQnrSe1vf&akIqq}dWc)a-(W`rU z2j}X&urcmCU!DmsshdB(Yu5@aOA-Uqx+M<@U#czKwsfLzIG!N0ix-e`+uHZNXc;?{ zsSJ^21j_2c2%35=eKMw4d+ta@IlR)RKu!V{9U zAJDHecUbpoa^h z)>l2c9F4TDO4lGGXzSa2C2>(#c3c^?CF*D-_d8oOk~?#*98tBL zNZshuEnH}K+|Ba}+|%vnXMKcCu1v0fiY>2}qNh6`Pzk5)bi4_|3t4{Qog;eKjWg zg7Wdm)#mH;#xr4GA4kHijZaPj*FhWFYHM+;%KL43bpm%qa8c#M8#b#`1b^qS1Q z!-n%1u+TEFQ?ipc&d-p3b<4~7B-#l}x`OPt;hmkE;@VhU-$!W4y`2@>!Aq%n$B6 zjR>kmN$_d|u7Q8Ty|%$l=N*0fm4XT5-VO&5<3QMM*cTw2uxU9EevWH?6TiLb`Ww7# z8k`f2{7?}2H%R)X13BhC@93@x;U6Di=-;3xJg~|3cbEx}kpCT3!iU)jj^6&kp4}TV z0?n9zhRn6?+|ib&WIzY}Kf34*Z%dyGWLm3UP`MdF?!&*j|D$jGRK1dsQ2k(6FtP<^Ck%F}ZW40~Aw zcp|{PlTJQ~kOtmUAY1X_GXBzg*MtJZQgFa!(wBf~Q!4S7)Mm&(TtTRzIEZIMY3_N zcx*U{+vp|KkV?|i?oDr8lX*Me?CJJTgHj^PNRY-T@F>#1|5<SyF2Qc7YC)1dpcfKp1lVU{z2x$TuB;{>FI*R9k1hTZy%N48p|6D z$3u|sjP8aRitp<@zjib2pBw#%NhV3;FoCZ#i92_xlUqWfaeJ?0P}o&e-PrS(@w6a? z;?U@Ui1#yzgB6%9&XR{@W`onUw^VMTJj3E&-rrHYM3mvC@n$ce=abGPhHnReAS>L4 zT1hNjX&(VA)!NS=g10PGEFAvfC0@_m+YeQ@?4i`uqq|Wng)C=9(btaD?r4J_nI>XE zO+)Rx{~R>I1;CE+;8cz?A3DUN?en=iD<)5E( zWG?|2eV+24ox>RWaNCDIZl~{zZ}XU^55@v~``QZiOk(Bjv$4qSHU{H{qK}ESoyhN} zbNiv5qa@-pU-Imhj^J*TP`Ll=!=rbHRSkta6jo-WUQGdic+TLYme zu(Bn*Ugy)Lr1id?obJ0hWaFJTXo2_=C|~N`7L#(uOthEQ&+sfxc66NXuW zbr6ngIJdfVQ-zcscA%O5)7U59Haoy4*9d`L<1Kr%HL=@2-`v0b^l;}dz{$E*L|8184Hp@Sd{Qesb{|$%#hQoiy5}+UWUns!;?H&HxEdP(a17jw5vouMN z#du=W;i$Ft24x!)U2qT=5%jcK(kIH`%V?126PB09$8X{9tXQ zKI@35{GIcsCCc|9ejh_N!e7Tb02%uV#oVy3-2i!Fg5Kr@q=xmIM`Rouum}S##~ z@)*DXM!^TxPrmrR|AV%~1dT_wO3^||#wj3V0*-%Rz&p(VyJE7nn;6I3_sA~7Z-eQF zS9tvG@*8W)x%U;8gTlbDJUZ9^`2@Td z3Q+nA%olqoHC4YOyiACkX00{4jj!MfaC^XR_Se!WoE)U^t5t#lfVFvkkWra?KM2T= z=e4~So@v2th%0dW0)jsF5V5u@19ep3LC!47tb)!$ksj9|6!(-`w)K^fZaPm z9wz{!RSGr`@4uAhrW#M;BfZ_j$hhN&;|F0rR6U_a)|L`|#roJz6;ah*`t1#Hj R)Q-PDMLD%+B{FY5{vQ}2lPLfI literal 0 HcmV?d00001 diff --git a/img/elk/kibana_result.png b/img/elk/kibana_result.png new file mode 100644 index 0000000000000000000000000000000000000000..55b7fd3ff0f6e7f7101429c4a00ab7cf433b7751 GIT binary patch literal 73100 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 z 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%0AXGu+~mVGrp(XD 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 z zi;QYn(?Mor8W&&sCMz@S9fRXzlB+PPks@JFtU%h?rm@hc9MuQ40)9iBo{Y48kn^ux zbTM2G`*GqT>b%?OER93%sLn`9#+jY-1aCwr3?+A74L-iCPxGM_$AX{sGG-LPX+tU& zpSLu$tKb@K$@;Ll}8aInxAyzV6zxNEF7Zo4roaBKCwEllugn z#GVR1PnFo0KloxpEW(ZFKI9PNlG$GiannyPjoS3AhATIPi1wqw?_CHxP=mhD7a}YI zd}=@+$f#w?=p+U@Th&a&Sp}l0ShnYi&mj3d@Ee9JoN`A9usLr9*Q`e+H}iBz3&gXWrb`I|~M^lP3JB z=qLv3gi%qk#5`DD5tCjb#L*w%8)$EWwhm;2n}0)Vy`J3uW-#35%W(~rk?{-apmdWNG_D4 zu5>)*ox`~S$-IxYD!hy+QV=B9@vy>~Msz&0ch*FL9~XlO?YWp0)|YAVJ}%P{+-)ar zs8fW%-aVtaryi6O$_%tx6>L`?su@SwE9BDm9XnlrI>gVSO-FkG6R9Ij$Ju(Vd!2QX z+w6dx2di~W)!AMqK$QQ+0aD;nu{#XL)cPLDJaDRV;CA?$S=YK14DEK8Jur{vx914i zAe7OA7#1^coNVRA6e(1M+xljPBC>4jO7$k7`P*T=8pRhtut)IvVa11UccdAz1Ua~L z7a3JgHk9$-jbR5Jf_+o_%`% zgjY}q-FSF!Ne&|Z6_z{QC*nnP)_3dWTHiI5vmt6v&o5?e&Ay4NO@^qq?|qD$zeI)$ zF3kS0YuTxBrNs@zLaYZr>C=WprAg2n)te3eAe|~HtFW8Ln(eOPC@p)=X`wjEYL*^7 zFlm%GRc_p9TxqZz_0q8}vG7gP*3h8hMs1nlc7=y*zB4mRDg|=2&ElD;BH8GYwW;9s z!h$Jp(I*D70=ucfH<^85E+UPoh86A5t$LQtf_2K~$eRW`O%659Ma8|&ukVbl*D z0S3yQk@xkmP8`drntKow96<^724wZX0zJ}Aw=sm%mh)&NNum)W^}t;mlntau9A907 zBb`4-syikZy&?w1OtNvl$|(*8O})w0rxX0DG0>QZsNgBsFXt=@FZD@I!Of?Ow_Pkn zOMpa^NjJ`f#3A)P!zmF4qC(Z0WHGFtK`tCa>4%_fae#ixN}oa1zz)m->C3uiF&#e`c-2-WN1G(d!rf-eTZuEVF zEg&yl?SKFCn*spo-p{<51$~F!0zTH}{tI~gtMU7Q>vQ?}O_k_}ClPG71qkZ(=H0(7 z>w#lu%zqlxIP2E=O-CH-}^H(l5wRP?+*RS z&NRV4goyI_ndONI+W$SvFD-#Wwu1+pOOAbCn9=;(0cup8Jd?;HRG74HADfLwRffzh zY#whq(z%mVq&>Ay#s)kw#{&A*1?lqjb~KeHru@mdTlm%GIP3vw1cv3*KToXG9lGi8 zcq2^Vv6Moz{5Xb!T;xXy)x3@PxY&99qWtm^4$i3YUVroT7 z<79sb1t`<9RzCIb&s7tUo6mHNiU?pqw^}h$ z$kg8cBtAdpB53a-sPgDhRO{=ZsAtcEo06AL5Of$bwSjlYVqoC3Cx>`?@P{6lI{5sd zb_Fz!o!n)<1i;M&8{2~p1fI>y%sp$ZPlBSK%tUJn$=@%7+yU zz24666bo$kmEo@>vo3IDk;hq@mts=~UKV`%;+yL^eG>P;vPx#3qUIkq1mu=S6T685 z+7kI?9klKwmn&aryzv6{7%lc2F{LJC{FO`5{^LDM56<(mvpXk%e!vOZ9!pF4*{8lm zZ`YY<`b`hYq*Iq8JvXKdn$<9yT?%FNdw*LKu&s@f=&gfRP7EqsQ2st-I}T0$n;_>@ z9TgF6a8@l73weW0c7Ax3|?Dw|T(AWg8AUP2eNDXAN)E@Tn~%!4{B+)ysE zUv1wD0R87qP`Q!Q1cuTwi_)@1FQf@ot2`h5Ar)%rz%n2x)0VAG&ggqvI0T4a#~Ctl z@5m^nsUzBi`wGh&3zn}cCSKkzR)_qj=;aYedx`fSQe_kMTlLZ~r51;g?VkLg{P@v} z@+MiL9~+mH4~h?u=53|QkoNDj%r8j*wt~D+X^(Be{SJ`Gp1Xb`SqrG#W3b4(UyblO zO0e-sVU?Q!Sy>gsV8=@fFXbn9|Mo~44i}drMm?()cJ`)N+u3u31a-|ufK?gAXJb^l zXaR_ao`JyTRw@Ee54OmG`9G?u$-Ng5iP+}N`&J%wBvA=xsI{_F_?ovwBG5_Rj#Az( zuz}v&kGBJCRN-#anT1LI1V=qEuru{je10Mek-i6I_2lI{OnrnAqUJvw-3S1asB&|h zzfSTZh*=y(vac*zE}cT+Rtnm$Ejwo7cJsd3eE;|-75VWWW22)ncw4h;xRS5mvVP7% z##h18`No!)?&~cCw?Aqmn2%;K18SO&EtyD_>_U2mB4t^H8P16Mw|j0X-J!?0c05s# zQz(11xCV?7&%C*G1LSp@?*>%@F&1Xg z1BTL51tmXzTGFR5ey$k|kM~s%kz25+Rq-W~G$JkQWG0np@JGI3i>xP|>~f3~&&G9q z7X=v5h@$ZRjvQW_b6^rDH7kocgAecQE>{+qGTs|Zt7!??SVIg5sq}&wiz-lzrq5b9 zQ|ZzxuJ-U7)9!*(##J*iLaR1S-uJjK131K;u4B{ z`Zyp((uX9Rj z7e&}HSMvzdh}MBmET@bxx+sCqbr755I(X>0GJP5>NGPZrS9`#h>iia$O8bG9Ub(F9 z-BIlyFwRCKrbq;;r29ld%#jaC8U`4dLaVsKaMxBNf4ndI%=}g$`c%)`eBWO`nX0Bj z{iwDg*0KvI=>JM*4Cx5x=jcG3r(>eWyaco4j)@f~lcDF%R}F%j z>poVd9c5RkoHsutzzjFSH#x<|bKadL2J)8wk-|tlqd>8;u=2|dI4+)BSojDwBOqmF zFa2UhrKPNGXo(w+g@+s0HuVEnUl3^rx`<&>sKK`l4HS9$sE7@p~xx((xqyjyB z!d|+)HyTSW3?mCH4pX3w)%>BQHoL6BO0mAeo*_RW#{3ri%1Ma$%n|2COl$yOJ1YwIb(?QgSk6H6Cd zv6^tGR4kkO@hg!|YW^8X|40VA#D#abV0cbAb}3Kcn8tQM&`sq3$cTTY2GNATfY2mS z*PvV@%iuq~^dIS{sw!6Wyb>K(>&IT{ zuXq2By?$rfnWP0sZIj@R|F#m7TDXxOv$39l3n>MS!lwte8D*sQ(12{jR zsEi*YWkWLjE(#?Vlk8Z`f%^Qfs_qXt4ST1Yjz&hV0>hz6qw*0UD3Nw3uFfp>)j2`I zmETzu6dRvd3&>oo!Rz|`KDP*We{Zv*2Q;X6)Btqsue|4I8xa>BB|FK^ zAMD34B@q#~vh`SAY*@a9Ly|WMj5FN6gVbe07H&=X8b5b!ipUE&6S3~aySZvuCRP;F6VLT15h7bN$5})O5nW}vsYdBz7wRS|Uxt!o15)F$Q2KC{l8B9XcP z&XxgWsW60B--+EKLgv2pjvzLi@7V!S*=rO+T~nvC*~e15=D>aT4&K+zd2np-yffj` z9S!>ng*n2+dy1@$*pt|Nqu0+dFAVjwH%@qzM!GxS|6b;5ue1U-mJ9Uq)RUa<0r{Sk z$gg^Sth1%MFq0yySeZ|jE%gcWqTS&o87KeikAaFk)szLyeV}Cjs?WY9GNzKUz3dHS zUdhzQLl%@cB`3!)77Fd-f;34DP-l;vaCKm8%-C>ODEyrfYC|f*bCvYtgrJL(CRNW< zLo7lEdM=(`sUQtmv9;8lf{Nzm!~~ZTPjg8|I0aT<%)n*+8deTcN7Zrlwe>U{?bTL& ziiOMW{iJzUWsyg>-9KQVZ-c7lN%M#UQx3~}3D6kyo z`QsV4YTuG3?&b$3z{Djv1qR{XITjYp;s{b*GrWknjJ7EC!!fY7x=UEO%cwDkEWP^2 zXQ&Yq8TOKDn-I}*RhTUuU5%P<3gNe|@4!TZ>*e49MvF?thh~dbKu<%-HW}MrL@cz} z`jPeDV#f2kYx6u0R@}#oLh~p$e5>ixK*=DELC(O{qevV8^$a-Np>L4MDByx*n^`Wr zvl<<9!zwGNke0QoEY$Qv&wlKbVDwh#lUqEtwzG0jS(q(3tC6L#Kd?d0@AxuWNo{w~lFRCW0B_i}a^@bD9k{8?S8;7^@tN?$8r zoXzytoUm6K-$wCLo)0UlXIZb~RnwYU{Z&Z?t|dO>(HMjGzb2>0lk;8Da`9MS#E%3> zg*F$Lqag1VT;n{==ODMD*(G-&*eO7Pa}<#@q$R}sq@rIBJBb*8sZ^WSrKbcBHGfV? zNy-17d3|=u)}WI5;1=3Z*9Iq&weJVTI@?<7>4{1ifu)Qf%IZ#0S#I-PGq}uM;M--9 zMV~hF6+Mu}-7RqTMnPwCPky5;U+4rHdc&d-HX}p~I^t3B_;wXExB6qmYOetC@S}q2 z@t7Nx-#$IhVhX&YVbWc~;3wllur1~xrK}t|a7YH9ifhfLW9P?~PxHZFqYw_N28q!a zeXb5iL>pAdZjmR}md;iYS?Th+}uxE#8`wy z{;~!;t7GUHs$Yqc9^M4(2uquQvP%{GMK|vCL@Q`%YOI``{LroXprmP=0i(Qs1{~zN z4NkHs(tec7w69@JXrY^_?7-yPKh4qk)ee&ViHl+f1xI~Yt}#?wrE?2>ZSv*12ZPu- z^f@ud70dT)r?0KtPxEUWH&P68@8M*vZLrPZn9&doGA6asec(R zSrn#krMGppiHdaj>JZasQPioM5?}Cf{;be6Es}EgoZp{uhhh+O5J1tcxeH$Y+{G19 z)Ba#*vNFIYokuWJcZod+u5Ey9csD(4;NT{0-irBgjkVPg3J;vEBjMLo8NlN{j6QpH zyQ6bDbx@t?S4H6qDa((xvIw$KcJz7BisB#FM#50H8M#{yA)FsN0Dnr5`(VI@YbJh0uX-D<09y;P%BqpDcsGbZx`@sT~QxS zWeI8yRIFtqK*co!o{UezkhQWaY<4y|rmkCFEGzs1psIf&lZK{*97>g`Y>3z@Mxwwr z;Xq`RGvGq-_}NIF!Ga1$kpLdade}n%v~hxTgR*j^Gx~v% z2Sa&hO?}tX)mHBVEc|W(I)v$;2q#N9^wOE0hc3CfE-;knMsRhLYG-w;FYca1B!7ms zp`Juk1NkG|&!2YXgQ29dEMv_&&ZjTR!EgCcr`gi4CP;w~X0R0b2L6uHEH^*}ODz;4 zA41&vg3>AQIUJ!P#}56#eGnN3u=x9+QtKHo)y+)i>Zx7LK-pSb!*KG{931Z2M>+8tp^-b-?&wCu_*j0AS7hJh9SHXy9pktj8KNe@IZR zjSca+-1Whal(oVVPmLgzBGy9asa0`I)+>4Nh{4pinm~x5vDxmx_w4yacLQ&*7ToB4 zh|*yv65!+NVGD4Mz5ttI1As)i2xDx?UR?Pp5&(*N7(@@io<@jVDKAxanW?^Z3Ni63 zS4VbMiU1$K(J|T^eNVhF26A{ICsH-$ipFUWEi5bJX&Vb_TKoh@JEWr3$mB_JTG~T^ zj5UxuXi!@Mz~(^!e?X{647jQwhfo8w z%@=@#Qe&bXt{Ex<*clcj3aFIf_Rg$>CLm0*Z(iqHm&3=Ct?Mc4L3)B#yRBQAVFa~hoX>nl-;jfaSvctc@dmxtbFC|TfVYm5*GX}GKgUDFp+;OZJo=H^y(X&BUx1rGo0WK4M-+D$@H91dJG0e@9C(Yb#WYTl!vq*4nLDA1vy9HM5Lp9KN8G$mpDn0ol{s3ZF zUiFG=V&*MpQ?>Co2ASi|+44+gx-bsTZ3=tPkYZLAKVQANQ5V8mf8+f~u9^#148(ES zC)ENC9|eSaS{FVBF0V?Zi6h8D{jxZss#;d~BY$-o0*qDwO%A&E+n~tkN^_urcQ5Q^ z_5@BN3+IO^>477;dily!RiayAZW^Jy5hmhtv&j%>#w+F8i_U^X(#45!SmKC-Qt&)Y z1A?`D+Cc%;ms+NEWrX{Rt^FUhs?*Nz>mVQ?q(u*pw8D4TSHhG!U&z&bu|3edsVM~oM^0VSDiPuK0}p;QEdG| zeiYU+-U!{O3K@CRiBEcZHcnV6%V6@nPsS>HYP;ScEeW@xE^3|Dac5Ah(xhhiJWsV} zj$rCJ{>E0>&SpU$q9+&kM8Q0a`}EN%T_c*)-T>j|$nF5$1@5S9dh3_JI#nb z(?oC-QMvsG`02#(CESF5w{hi2bMWG<6C#I9mUlnb|=GQKwKaK`IK3dn3c5k@TR9qmkr-9td<8pmJKCZ&)@+@>4$~3Yr3?QQzg+;*x1XZ)SekMS-762t$sdnId@_DFQ#)H|~Z8Iv-`L^d?SEjyLR;k-qL3 zJUJIbr9vd$;+QfsbuzuKwXrPt?kdLeX~XL3z=ieMU5D{pFZ6Z^t-#5uPUS*Y)R>9| zS(c{7VAQ`_kwD%Zu>piw|HJ))fzW2nk!*S*Cfxi$2z6yua0vBD}zG4!8c}PblLtTuTHzph=8*wdX0K`i*yN zbo4F1RY5J#38>CT9|$9GajGx;Y>#jD(M6sE5-a~ANdqJ#zbePu+5me z_|)}G@V?%U5&kTE@4; zR)rz&6ST*uGM&tW>#rd)M+I$dN0!S-;YI|u`Ftm5aHOA#phv5j z>Pi9a$2_G){u2N7nK`Om|}YOD{TUbl|Q1@&n)mJ8FVc5fTDzXvNaDrB1GJv-Ldx3 znck*n84_+dc6f-kcAMN%YREZ` zpU>PI6CLen8zpbotMe8Jsml?i=mf)PO%*%k3aF^AX5jv|7sHe?r+?~`^S8=_Z!87K zeY2wXiARz~#yP6o0g?x-Puj{{GAGAFQ8OWttl4|KjIpQ3kLz_trHN8SLm(l2=Bv6( zj(DfTuk)T$S5JvG>ZUAO*S^ZepG`VBpR&RpTAnCIUA638Xt3aV>IQjucPki6$&=^g z0GyV$jNuyP9Jg@OZ>zsetZ(vbzz6J(;sRq}9?f&5BoG8@;iI^CIvuX7Uamzr^D62k z3w)$J=69+9SVQt;l|f+1AV%|GMoEGbvY|ecXJOvCo%yW~t%Jqo%+9~a0R$Rl%VfIX zpmn^=x~kjmXYiBTCmvf|UnljUI>{2!Mq)U27>+9gSzV z6*Z7y--JmZJ_3pMub}CR=7?-)4-hl%9I#50q=o$$$bwIyZy78x^-+wYK(56ZFpl^> zNjfhXHXdYbhg~4f$bh_hgZ=zx!tvLM0!N&`n$S4i{}@MDu!}Om0*s&ZH1J3rWn_4J0OI2n1&X?`9VvIxwma>%fRS9|!gX#V$D4&1>=^+a|4%8-zbbZBbnl}kaP zm87R@_fB3VM>E+VoAl)yvPi)ml!x8gTX8t4)W@M;-g^|DdwB5U2*uto{C;9OKV!>( zYMBev<>u-HmR51b8+tB9?58yyMuJB?gA-uSu^f5PTW*7LSIX;iT!f#UtA97y8L-*_ zuje&9IPrCm-Q&KA|K+fur;rW8+RBR(hi8upUyP7&{HDdI`Lak4>Z!J?-?l3M3iLDJ zy}#T<3k~Fze}%k25d5s7|;Grv2Kk=|4Q##4kHeSj~Cp@?b*Ro_~`d}tUMgQr7qpnssFU1 zo+!tSI*8L203D$|Vw;!+=7-hpKD;hM6Ejz=D?9EC&DRWSHL?=vB#pdYUtTV*iYEBk ztC+a+i+uCnA1h|4?Uxu%5YzeO9R3=Bzb}x1R;mp!Xh%hbEYb+faDww2Tdpp>C42q5 z5)_dUCV379eCm7A`j#jqGthYGMXQ?7Enmx}gVxAOjXQMbXIET(2H-zq8LTsq-IN7=1buGdXM zzKoxdZ{trx#x1P>1h75(#cbm1kG+}1nShivEAc@x(| zAShM z0Z{LV4S%&WZvd9xh1cJH(BQBDz-@{vrED+_;k*(aT~&7efB!@Kb2&Nn!MQofGJTTN zVwS=Pl@7Lh79D~bW%ePO58J88BjKu|pWSx5ij8i$bN}u$baFuaa{!)VAx!n=;`N*= zs_ON$s_H6k;xI|!jll;u5yzpEG+v*b`TTVa3D0EwhFJgK+$Oynz@R8Xs~x1B{+guv zSd%BZwdVx@AdWw1@j$Sze8hFX5zO?+(CYuig%IwaJmYq5HXHp>6*gc`pWf*zz7q{?VboHim06=Xc5fM=osDC?>J~;XZ zYzSDI1026Ylu-ZoYJxL9lH_FVs5G+bnRBmYhd)oK6utqmGcZVEt;T0)mQgTVDk&4UdyGDn@Cd5qz#ZVucvZ-CmhU3? z@qtqViO3P``6aEMZXtck+NF-lq;u5c!8dI3rV!X5Cz)cyp{&2d2?yh9+A$&57DlSP zlTjWy6`yja5i85;fgYZ0_&fe3Nu%r>T?{D&=eYAL*?7BnLGvCkYUFl<5l7AT%5Dhl z((BDDRY!Z`&R|i_vn!inNJ)ok%m*#=*Eoh3_@nP712H#TN^yV^U;opoaU2|?wM5`W zFXi|O4a5Ipf}W^mMa#B-Ss9ya))O}@CT+8xr5-h=;;1(dbyF+jb z5Zv7dcS~@0cPB8oySux)yALjJa?W}8-v6_2Z>{&%nlIC9@3pJD?AKM@RV0~>{A`?@ zBT4GwokYzflBX~9c*Q|f58ht2KV^vc3K+|B8N;>?*-%{g>b7S!!oHyt<7Ifxamh4~ ztZ1j6z&<(juN}AHvGc87YQ>mWZ4zIS>8uOQ)o{R;d7YJGd{xqdUEO?K!=GO?KwWj) zd(l-!r*JojICF`Q6?IB3#fa_X3NNC_X1w<`Nrtdu221ORG$zz?A;MIA!9A{*QQsJN z8wx)E^S}1Pb$*dW)Hytw5DFSIJ&Gwq*yc;vl*!*`DcqXf$XR7=9(umkKXuh=yR(OJ z$VZ=2m)JV`r&p2Y)cHi(!a?TPl=xmI!j+wEoE6LSB(-x{gy~}v1~3lws$q}!qx;j< zr7W8~Y0o|+$u5W|FQu3!fS3+u4W9%8-;4{`N5%FHJk@T?)LI=x?u*FzL=!tm3(M+F zyp2QTv_R@x-8Fs$@gdYUa&{%Uz!{FXSmlM;!T4Jl*%Sk#A|l^B4y7pkIo1Anr|Oyu zb%|f#kp_hr@8*^uYTAbETL-~9@JL1ZSKgS|vG|0-1CF#XM6TU5}2#??u zlks(ch_!7*8gO#H3;WE$+u7PA1kPRHjSq`k6=vQjJ}f#9g+gI}>22)7vuo2dqf^?& z3b}#=50qBrz=%bTcK_Ma(erdg}Vcg64N=-3z7 z$Yjzhpkq5~nk}ZEirF*&`Ed7A@txv!6t zwlwUd)w$u+;qV*HyJUYh_R@M0)>^D8I1kWm4RzyK4_mF8G2`)=(^D=?{8C^#qQ;+I zOVG<|t_XHjEM7fY6LI)ic%&t9@d(I=eM%L4X9{z~29>OJjA4sP!9)^SiKvHBpDNfA zm`TvB0t>G6lp1F^bdn5ov{|x#$qq;d00X{&MN8&Zx$mLLT?C`{Hr#a9LcgK8l4xjn zmA**!L?jr;%^<=HM|9>l#m4Lm?A55tY^vPriHsT z`sJD5p=lVGqxqYKW-^qDPNSSdRF>o;0Ol#{OEz_!v$v%Zq5G~2&gf+P?I|#YsSX9K z+{U7I5LR1_{TPXf%du81uwn;8OfO6m0v=&>R`P83p8z{Y*@uR{O@q)f6i5z0%kS)q zS%*7IO$;m!x8acnAaXv6R4t=;~@%=2TQL$)R0b{mJ7U%bvTQ`hI(= zSm(_Yx!Lo|qVU+cW9#T+HNd}^&FSEo{0MK%HL8k~VG|{Ef15$5!j*z0^$!th+S_;D zZbH!D16mpK=F3L!=ZzBXUA!_EJS{MnYkLlyI&U}MMT*!Wu>dH*3O(bHzwVke-r8&M zb@^P@4ypO8PuRKtXfHH>XSgOWOZq=_{{qA#9FgO)r1Kcgg#U@M2SuVh9$hPPylHwE@bYHeOxLU5bdjy6{+gV)gp?5 zKY8MS9DZp8oOr>Xg?UCpm<5yjGe+5cUa@;}eIUKITWy4IZ9E$xkLVMxLv$Mst5}3G zbDB{$&;Vzt_6jKYiI}R2>q?5*m{@q)Lkn=KI@{0Y5z9=f1g8g~9b*wvWC;$G7qb9= z{tJt){#70H9^A+nY*@eYQ*(!Y^D?t~>fl(dp!(+id$QsH-LyN`8Nw@)U3Xk>TND*_RQ0N?_MX4z+7lp?|`6EtPp@8AZ+-|Il45V{HOJb~1OPw~Q=} z5o>|laq+SG4~K9SA34QDA)DzYCu)B)0j*k)^FHxZ z@Dx8vfity#5kIf2{V=9&o4202^pP=B@T3IfDm z2fG-8@8^H`JB9*-3v(5&sThsC=}cM^Q9y%4-oWRP6ou3KO?&pE44L%p4Ee+j2SvLj z*|m}d3$wkec+d_TFT9LV`wfDkvfl63HWKca>`*x&LYYIE>&ESId^*;AKv)42e7#|z z{h|Epd%pM+458U%Y;1zBG0AahN8Rz;gxI~>vha$^0h+p0A=N$vd>2JIl*7Z0d`?~~ zn>naMTxKMC>T1atqxoX@jrmN9zs6AMaM6&o2sn(Kr(2{4F$CY+TJBwB={v14%%;l8 zeHmk}^09h|#|9J?$w?tLZ-eg=Du&&~6*JSSDWZW(Q#w&aZHUQzVIZQ@IfrecTW!+B zaNQ<$ANnHcAVa)V+LSR>7YW@hi*7a&kMi*C^RY5Q@z`^X&C(3@P26UIt>vTvjt@DpQ>D~~+L-{YQ?$;v8YU&$95Hl5%)=hXRxjHNF55gt z|It23PQgSDFA&XoX|XzCIRjmF7AyFpR}@>(|I}Ru$Eye}@sj9YT8ay3+*d&*)LpD? zzv!wN=36kY@VOLJ3L3vSh;Tp~G7O6{(*v(o3HEHO)5dlJWf!|iD1n{gQWDOtzt7y} zaL&>&l` zm2`<~Y5y=b5Kf6ab7NE5+fy3g$7{S*nQ=g*jZ}&^EuPG*G$9vq40TgKxPHOnSHGktaJ)Z z@glRy$mz;Sm|de6Tv99w-w^xfzQ-8S8V7Mz#j_z!wgZ z92(NK^cSuvW9>wGu5Q5W)3*a>;N{5ibSbsRB;$c2^hb%e+qRmPrjO?iYwq~88xsl$yz-!yEk&>cvqREAR z&0bL)FqfXJxMruj^5zX;0_|fda+3=~Saen(Z<{r&qN*P6`l4>jH@V_`66BpqcxMd(Wn|nK(yxCdqqsnt22eH3v^$s7l?XmhCo-IVJx{O zIL-|rh_~jYU#FjM#x$LiZ)WZV)HQ~F$koYxgP3k&VNSjcy9kyzrz7Yrf zwBm8z)WUd$x6TJ>DaT4tF8;tn>CBJ%q_2(>s}L=49j0W&#D7qxSRZ5TAgg;!en1H= zSbyanC=Hb)6y|gsCvK1e`G!`hP)`Tsg4Jij6%{AAogm@OAGB;R(`r(hRx~sVX#@%* zYV8{gw?}uaubS4&2D6ZBsbPOwO^Fpnl({-U9L=V)LHhm0SN0#yxn_P8tVi|J@l5%{ zlmHzEYNz8LI%ewX89pbw0|e@^uAXfN@Xhge!N^X3GcF)A2&1W%cae_>7&ojrJ-D*X zxK>J%iPBUBORe4RuxdULtR5gm+O3E&GS#Hr{>71c`McVK^q$XWy2wdDyyuJCxBs-P z2(8E1*9NqAcs`xg<|mQnBLy{n`e)S3rpBvS?7v!HXFunemJtFw+A|ojzMKVZZi4e7 zkUv5Tm?WT1;*%N~#J<=*bbFvK4ATa#O~RmQdZHe|E3k-ZV!wjITE9&mfz5DkA`7hj zsu6p%#piPJ7K>8o)k6BlYnYIjN_w%(nI%vp^jAdSSN6N^!L zlM-{8_`w~zZ06ZL0Uma;G095Uj1z_OMygGPEB}=P<=7?bj(6y(B8yfb`W%` zZ0y!ABdl`47y^DSqn9ESMH=BIe=Oi8n%+XGQgj{h;0YG~Qxaj}E=@rC*DLI7YM|~C zXxNnE$g5(y>U~rELmH+%(q>`)A%GwC8`oq7_vHbUsB?HF;*$!7VQuTlKsyCpik_fe zwG>=abufaEcc!)mP(2@MoC9Xxa?lRvBFbP1$3JSRK`EB$DDw7k**4I8AyPkwX-1eV%{$a2 z!CAmO7y}_~@cMk63bx}%iTwC?TY*1W3f)}29XHW7`_tZbF0dO|)w;=K#WE(ZHW~i_ zAjloMY)+q{jnT*1nrC(_jkNIK1v5o!!%~dRQOsQ=!M5E{juqxmD`x=IN1wj@jj1`$ zF(@y|FZy_~hG|xAf)Bklg<*b4pjG2NL~T;!o_Bl zlr6>;HZ;Bx9uU*tUx7yGSbsI9bw69bwp#r5M+3-q8&l%Yk+AxgUnvKh%HtegbC~lr zYCrNX9j})9$oZ+(Q%z|KnK$ZUq7;HQmh5HWcJ;wwrM;>LeZHM#3W@;bh>4WQt1uG9Z_!n~|06cLB>X{rr&;&^Uk0lYF?P zK2vC366CoX+e$H~rjbw{47a0!`7GlIfl5PBZqmtM!A`Gh0COx=N^*O!p)mzQ0A&H# zKFNS;reF_hBZYd)>k7y%UoBhVC`P5rM$Iy!Pvkbf*ni;W#WxFr4KncNB_k^|BcB6y zrEX%MQ)<_;rlRK)WSfC&qZzuqo5q{whPphC_-lxMXd! z7O8hLFSB>au-6ZY(3f%ZkhG(9k7meFvj*yIlIt*h#P40oymf82HTSA9HW!hc=It(6 z?irSo%1Q>YVH?jCl#JO}mECqpC$M5{)FV-b>sXyORy;hM3NWM9wEKW-mn2%Et~RE1 zAcx(dw=XR{9z3Qbbo`K5I9wVkuhn>He>}d6Gp)zL1M~tg%tmI3`)APsEgG&-&nX3% zx9IfMdK4+`8V|f8#8zG9wAOd=e*vTZJn-VG|15p?#w>Jw&4lZ;#pM9pL(3MPE^UhR zRW-hL25MW_gtwd5gO8q6>4-gp7xrtR#vry?+rhV{*$cGn!?}27T&EnpkWUv)N;_!a z%?x(ULt`99v(gE36&Kh=-t&q~I*|O@nFn&7qvAp!qB0JrjHj_V!Yo^qR2XWWm62w$CzMv}vm&>t?`<0H9*(n= zEs$;sJ{g^jK2e>^lbYLsBo_?)r|}QwpZ12}lavT^1u*;$j*gCZpI{Nf=@0Vgh1!>^NW_^72kw`iT<+9@vnN4&B4PcLkSDlS8iP;y)~rlWrWd!n~X)q7x2K>b_DZ@T)6_ntkw}n;GJvh zXDh9grdJkuxyH%l5UFr*7NIRq@w3e^4GRkWe~1Yfw6moN$VoxFM$bY{M8e0xG{?`u^R>FF$T|g(nf|?q!uW7VQzY&f zq5pu%-g}l-I=o1<0PA3>&$wb`ee}An`OVWg(gJa9?T}VDZ!Px4Rlbe=l#r{TQQH|& z%2Yw)Q4<%e|oLwZ*z;JxnFNhFKS$Ne5|o{Z9G4m z9<&rHT|U2Ctc=9Inz&<(Xrn0+bUpv&$lyMA>}VY`sc=rT&9`_%-)f#G=qc{s)Wy}7gZ zTIr22aQppD%gd(mEWsn2TuKJMT6yG_rG7MH5ynrP+EsA$cv^rk;?fOu zgytU7CkJ4i{P0I7ISDOBVQ(Dluft^}BStL>%%~LzuO^k6)5sm=3Z}E)yxpxo=qSbS zKCOFYmU%C#D@!<9IO^RUPkEgyIVx$kg<>`ksf@~+md@Z^O~oytetR!o+tlt?p;aqc*Yple#!dc zKD6#`TgVCR{d+0Rl7;J2icGJ^!FuGwZ8L6%Ni1-0+nvZH@xcf!4Rg^iWAQl)6r zyIUJh1$x-L-w=jL<>J_~>^rL*huH&YbXtk;dmi?vS+Rqc6U%Qjpfi*#FkyP|fx6Dv zR#YD#_NzAuX-pySdarWjhZCP3@4*v2U)hKhlbqrbM0SS%U0E`*d!xFY9QNYw1i|Po zi=KT>ZU`V~CgM>4`sLSapibD3Cv{(h)~{isFxWi-KSCb$_u2$%#12|c_Y0%R&r&b- zLv-=MHtx#6@wF1`&<5A(0FCS4LZBEiDm+0h9CBNW<&g;#Gi({7AFusu_$==Zw-ik<$g&O@3t$nAu}r>L zX24~th@SAOMcKM6f4IkUyHc1vW%J{w1H;j880jL)s5so-4tPzV$W)_5UxvR=o>s&UHS_leI|D=BX|1m~TY ztFD>5<~sJ3hU*E(2gVoLY~%NR9G9iCK295CPQ21EmzyGPli>izE^N3aZp@H z0paeKzS>%=OMoyY>uCoypVNckE)1)Or0nnlRyF`<#f)Mlsw7E$S|<53JVMSdwPD4 z`S|$YvTHtfBl-|E(JlUp8rn|}U9ZsZ9Gg~2EyL)wywF6pJyFoRADYEg-1ISitwtv2 zWpjqnU=g;ewX_$Qd%ek^i@7!9?d4L z6hq=I3+jBoQ2V!X(`LUQqqpml{LHN zKCC3iY~?75-StD4=)rMoT*Ya56gH-}M3Mk`jay|2zO^q2I|B-OA^6pfW zU|uU2KTtEFV$h=VsPtVXr zXEht`pjeWSwJx#?3ZT=r=JnkqpcP7sB_BBwi9U8kTev>4(O*RJrMT<&*Wq{ap9L*s zR`I)C4`pdFs!4};mOh)_bDcwZ0ZF#&PWaR;WFlD;@k7&}-d8KY^X zjr#onVPO#Ck%GtjrE4)Auh61qH%+Y7iIyK1u+i))elwDq4^Cmg`RLd6pRD2$92h7? z(jsYMwYl351T==umqoC>j*70yS+8$|FX#BO-H&S5nN4SdK~q530%2nLg-#n;0LcC+ zf|l~+Jf36PzywL;9@=sl{^gC)a1ymW{}*GwF5*#j9YCGk*+_LFLFPIEpowc?s=~B$ z6*rnXH>!aR4YFLvM?+0;C~kZ(@B9UNeO;p#_HpWign}xODmH72s;6e@FcEn-B0VAc z<_hfck~YHfZX~cM-7h}5IkD3b1wQFPazUY^GizqeKO8Lk zBMxYnb4hO*!{w9UGb7Qvus~|^%elEzjb|H~^@p7dzkveAU6t~l)wp zX``A4NpLBLB)(i1f^+BI-&O`ux7Qis5V42)e}j5VE;Ajqip1smhT;L5#Uml1o87-W zBhfSW>GO`C3UK)>cZ!6EIdJHQ#5E{BZXv#BO~4S3L;)ZLv;)m7Ev3c9gCZjM>;ql| z-uI}gsbRY?F*Eyr@qHtwpztMt;9vJ8`k3RWSu(;=#o>j?S7LWJhr|#*KQyI9)bC{wzWfWIG<_i>*q}9D&*wm9-gnFf!#Rx_u=1y zg5M#>|B}~Ma3C%%4gcak@%ICMu>YdtEn@Q#bPV=0fr$7^)h0+s3~e+C;Q7SIJ3drh z%DJKZ{f09G7?cROh1s}+p=1~sh8}kL!@0V;_D2%(4-F0s{4ObhED9j|=tK0^@8+|u ziO=TxUL zf7zJKzrR4lh4JrM{!Js~WKmXM)rUjIuG7v7ioZz-l7;%081VnKIFN!4RR5mKr@ud% zqxgS;v^lOL*a$qz-~9+%w;#Iy3*859ZY9}mO~p-Z@9RqxbzBUc`>(H#crUk z5CP~Jp8u0Ff4ahcoS|vNFJDYlwhJ7`dgyU5VuEq0^7;V=|HG4I`Tb)m82df`4-Zf$ zT+xXts%r&zaK~_w1hnYxUHzXsCw*VRuW2wmuLfL0J&ojLHZFM-ZSDMe>6enwM*V9g z8>s&v(ApbS$G)`+ke8R&E3PnG;3<#7FMw2>Ujz=uP@KxkVS}2%`hy>{^tG7y>>`lfREG?Evzesaw&Upu-hZ}8?mLBXG(Px<#!cdddI$o~(SO6cT(_q=tK zTx9h16Zw1!0)#=q16Io<^|Uw$ZYS|(sSEpl zidd<*uyv*Ctq6SoNYdFSuuMD9@RT;~pAg{v0N=+^A>hJC~0bVJ_prRp>7ba%3t7>%cQIO~FsOY=~C$_JB z&*=6Hmgr}a!Y#9>5OhGE$CYG`)N9G#o!8cD1A=-F2VpuKi8#sLMnnjFXcXum@A&-5-s4SW09_KBKMT8Vd>}5O)-?UjOqTYiw!kc=(8=3 zDm!=^<4vf?=Ca38LkPIhSdHRL6!LB63TblhFs%P@4WXI<2!HqUG|2p36@OFjoZoS> zi4%?A>-53ov5nVLcp-puo6qCapRZNtO4X@^AcRG!Fu=u&@u>BV|MB4EF2MUrOI+O% ztvrB;%O~KOupRgIuD$(njN7{XZm@w&?6^Y-b)OxyilyUrdOEM|`EWYE2N*1Ce&2~Z zhUw+0@Ssf-qqhy|Aq}crZogQqvRtXadUH3Hwz3zVJd596^L))$S#!INpI_67>Y-j~ z)oe_#7txDKu#?zGfQl5EQVx|`P0!p6ee|5`v+e5>c$3+~&G4#FyVW%SH zW%5+eYL;GIgO)$QdpmC%yIF1&TkiFR-F|#p@qn~b*WT;O7`!m+ zups4oyf>(+_@E7GN+T62wLpkbSPxN20lTPS069rswr8DuIeAgPj>~(N+K5|ENN-^| zrhVPA`YLKe{MN+tO!{%)A*<_qWcr5nY(ikf2JS`lA>-4*0IWwPn>)yR`P3Q)C)v`_hBHM-za+;f1=gts?7z36Nvu@W`Ur;6J9ffg=?hOiWPFya@0wWg5Slc=iX3q- z2z)VE7k)6p$j89&FTA=bchV{vk>sp$x890StvT>5!ZyJHY|KOIC13Ay8u>2HAS(76er<5ARbFZfE)eiZWCW}=3$I+Q3+Y8aL|)ZEk+>}Gvz*umPgi8yb7 z{j1?!0A#^7mLKjfu=dwTMY8JfR37E3K({{j;_1B2z8)vg-%1s4lA$}qg!O!$^kVX* z7}GjJ>fGag=`MWR_a%f&NtJSv@qFqPJeO9haO)h2)W*LV68ohl&5r@u#(Xf?uanZE z+q&)}asDD_-AK@!g7)$K${Xm?-cx1dX-{fAiOSP|Vj_jip0sxf_m2x|Kmo6;P2e$O z4)sqkQRtS~tmZRQFOCh1n)Tk4mV}1%rs>=Rd?Drc`|_#Ri~D=eqn3o)1rK(;uN{qO z{XY$6_G9+}qYg=d)FxF55#(PAqdt=^$$A)i)AK|%F ze*x84`+fHq_7^w>`{nvv^lvaL7FKiI`Q_m@#wo^@Q%1K{N|A400lQweHhhM!R!;FhcDMAye|p!lt(D90YLig~t8LrIZk#{9WD@89 zS7+W{s!RJ1uGoB65LOEDubFylP!j(GbSQL(7P$UjpP_2=?;-9eXH0&ybf|#;0)i$$ zH>%x@ODRkC2n|N*_GD%-SH(8l#$U#3-6=Lra;iHnD9V)g@u{sk!XpZ@Z&bBGN-O`s zuXkYa_!G9sCb^z?&240DFiQ{NwGXh8?ha2C1Y7KP-RoKn>gnDms$L-0N~kK)WmAgy zO#-LPA1kI%eHkCi7zxGRps39h+=}>|A}=IY8a`P@1+^)=YN)Qvq$!J}ViXG3HUVnu zl;?~jOgIaYS-MSd1^cc|lg*~hxtH3j`+@p;)Qt1r4ZZ+RYjgrDZY0D|tP`O)&c!6{`1C3}zi z?I|}`ON#fjHq8NJ83baW9Jc9Q&;;w+_a^7b`}sAK7B)bqHfww0jHO_t7Wd{IUHSEk zv-XXu1AMJt32ip*R$}|Y`~+Tuuu1E{vCDq1TBjT96jj=f)T3#YAFz=7xz%K4N`x90 zWnO)%{T@A^7bck0Q5|bPUAqc?KI@Rk);Hf}CN0c%82@0@)?a>Cl`BogmeEuQex{G@ovO1Qo^m#;appjPLs|?eN1?I;J{B8>BB|vy zSyp{A$xKUc=y_uZm(>N**yRU|tCE3rbMFTo!Qx_sFQO#g2g0mGB>54$Wo>Kqh5s|E zOQv7?H3H>RZJyfgFE63w9cz!u^SpcL$s%63fF+86EAx0ae}dSX;poSeXSd5Dr+t^F zi4OhSN@76HT*A5lw*|0~FWM|&LpAo98qTBsJWf?x%&O}SBJgovP2<*9!KygYo@@lh z7~PA=b57Rvw70DZ8@SFn#>W^DnLc=uueLJW3Ht@V)h%e$j_&DeIyNW5rDfZ__Glx6 z4%(szE4vBpIX8MOFJAN|x5cLK^M-mpHCZPECZ1C2!Ag;-$^L438G4|hbKL5t$r(Q4 z-)PmTtVMSnbHX4sCt}|aE3V$mQ@XtW5&pKD9ZRn4^MwS%bw)S=yYA8%)256DqrgFB z@xiBCTijU4RPu%PP!lVao{{7_Vk)!TJLU+d*Vm~+6^)z`Z_g44a?ka%K`Rh^g z%dnRk!vb4;-uoGp1VmIgTReq5XFrq#9Z%9Wed-0_MBo^sxYqd`z={UxlSUA8H(`xw{iHP7*s2U$5^%k!4)G%l=i zjOO9ueFC8~UEf>vmJMfsHuqC(emS908I8B{JQO$icZ1Ww^qO;Wjt*18t&!CxCal!T zyQ+j+C0148t}jm$8%(c@BzxwHo@-j4o$)w!7hIFDoAusTWYhHQvu660d_;N)+l6Vr z&N2B4gebr_5q)=UP>%~*t4&cXF|^zm*%U0;UjK#ZWqPVqLiTd&#e;Si^cDk{fmUM^yAGlf_%@N8cn} zP2d>6cHeYpK-G4kc^;CI8a9+RrUL%T;9u|#yo32!bDGsJgeuQa`@WR`jgVt-O(>Gg zb$Op04lC=~i)L||ZzDb%$6nv>l`D|}BBtsb_2>a}l2P~GnMfs+#N=xXe9r=m6ylFf zcB`LeF8n}&h*G-qyi6xbDDq|L@=FaS>%U1q z4F8pdokXPzD^||ClcadNLL{P%$B)TVR!${8A_@Jjb@Hya-qqXOIl`j1IW$Xj3oO$x zB2td`rdrb_URnryd%7Ft;Tk<6{g;rLznq?)QzN7U8ke4lvKe&n>lx-~2CsZK;W8oX zR(edohH4MNXjsh{AQ;)cDz52;py#FQv4*JtzMD#OSMIH8J7guMVv737poWc={hmZKBP`m+c8WXWiwPOUR;;$mQU7YcQ;A?6;M=s z)irZ#XjWK_C~7G;>UdGFyMRO*HT`)jC{hF_fQ6nsipQBDtGqMmL-Mj+#N3KZsKsdQ z4CC~VIF2Ww^uQ8YlRza4Pc+$b zkzjTil=a+^qj+KX)X82$ltByuHgL3JY}iJoC?z6vBp!=CQs^i?R`A$ z+^o$9R5>1dofoW7Hx~WB+)Z@4SsfIyX{YNjX-y^DQvQL;tRPigOD{*z;t^X>R_a0J z%+R zxgYf+VV+wDeumh1{9u>kG#)o8%v*3$1f%Ec%BD%!#RJp+La;sio{M+SWtYi#ANG-2 zWmts~s((n3`2w+Jzq-%FlrSoEg}O+lrTpMt4Ka+C&t=b@zlS=;xAm}));=B*u{Lu1 ze9899=q^++ptWAFsL-<`g~vgoYcXx73|p5FN7Y9IwQTO298MF%EhKWg%fUqNB}I=` z&;!iKipshs?m0xDUy_8Ti-Zd5K!Z1_sD>rRH86M`~#K2buHYj>4@eDqYK0c z^vL+K?~`=M+$z3SX+Lb_*~P;%KcVNzrFP`Y<$A!Q!;i5VXWR0A0z%w4v)lSSS_=*`7Am3~RND4E{Jl z&cY845+;55e~?S!v_Ydg#QZ}k!Wu?q1@{B`BaJN@uM?xy%do-TDY`ZJnf8Sc;pJ0h z4T5zW1F3*ZYz&h?g;KgCY|>MevvhB7mFan6D+H6|Ki=4;4D(d8B_~}U{^v1VGxB`@ z+eHRa-c<^LVyvaK3 zutkM!i7f9*vt1k^Qn&TG?DA{yf!KYtG~XIc-Np;VuAXT||cX#KG0Y{munRH4mi zxQcLc+UW_tkEk_3QOEGRWqpwRy)_%&KE45!Eaya3^7|f{<%^ZbV9|Wq1BNyF>V#YQ z^&J*E&N>Gh4S&i?j`UOho6fgK5}HUWayplWW%u`ui%(7`-xELBDLProY{4NKjkL$B zDX1qeu$vu6%;bI-*x&ge=i+3EF^rGMZAUF9Wk-|Xzyft-C~HM4baH063n`Z0c^yf( zrEyKot*AtTo7yhsAi$L7x!7>f2}76G^7(wTsr+%l@_cmDtNR37)Cw$yJ}#!HhOfMN zuxTxP<@(=e_jk7>EaPsN?5^Vk{2HdTgRClPdFN$I@ryNCj_x|hV7(W=`f6>(p>aBQ zZ}1(t8uqbZgb=`WE-E8A>lHK2-sk<4qfBx8HluGJVD2VOT{P3@%L)1lO`vSbmy#nC z`-vCRr?g_58eI26gz!MMpo&9zBDOU!<~h#2?bDca1I+%(66YTLR@a< zzXkxa+Q0t>%k>t2?=kr}OmF(}Y-f{>A~$z#`Bf@*Gp;c-&W&pFBUJOa&(%&O_i1dG z-<{ut_*U6y`)nF~LA8fAlweUaU4FF=TZPWvHF=MWGJ7WIk{LSauxW9m;lJ-RDtV0L zc9ca8?cP7q$fInJev3PUps-3;VFBcoxnrqe;cvInDY;PRv`##oHLp$PXHBemI{RKZ zU+ZC&n?6f7;DDnn@5|@|;3|vzuNGKoSp02SJcfSih2COzI7((H&G)@s%;`q;(8dwmI)l36nH;X8OhrUr=;{sdJ!s`^r3pvCKR% z5)W6h>S5dgdl{qGIw)3JKuXK^9U60$jB=a_ z?Fh32)yle{Sc7qNJ;Y<%UJ{vE8X(y6Hoq0c$=xu=K#qy=)biwz*?PPXk-pra5K-x zZn1BB-8Y_votG;dIYn|}c`%&n?0jJYB? zU7g0-9(4F12{2K+_sJ`x7MfK@S~y6!{|3y0aPpf@({qy%fB_4n%2w!qCimzI4F4%=^<2!w3OB9nwoci4nQ zkad$&-F;Ol`SFa)_yq@6i>> z)tKa~9?<2eUA|aQC!f%Gg=XSM^6;pp;oD><@#6*3%R=s(1TH$n!tZ9LB}EZ9^b?FQb5fLn#}>=Xjr zIu0%mHv9GuMZJ?L7L9@z4`2&^0->#^E#MHYa% zah_}-R2!QDHQtZag?mhW&SZhhgQ3T|fkBHs89VV$5=%=qQZ4srh8O~|91j)nE}*^n zT_SupD+B#U`{TVwPyUPJi3+{zt?k9x;9$R&EWH%EDF{$d7rZv<^;e~1eyN}8;ktw@ z?M3pdh&k$W^t;8SZ#11VNmS}JmsGs7Jg_+xW7at6ir;Q+xed|sh|85z1tj)eGs(Pu z4>2%5(~*4d@7=`sDwdEWC6b$vT{oXV)qvshW3cD9lrGSMFQMOVg32y* zxG)HVw>7nNy$8hY6aufxs;xTem^9LC?LsuH%$)q}ZZ~Ng9d3JS;&B{S`2FiC9=zDD zfCfmlKG5rDKwMb$$wY})-C4EkbnseKiWh;rd`9D~V;U^E%E)kb97gj}_;-$eqWg=|%&eY^0AFmCabQ z_sE{4#7pR{JFl6qU#iHeW)MFLYE(pMKg@ODameM@S&~3rQ)Jr)t3ad^Ds3XebtiWh z0_x<3i_8A@pA(LDETem0IE-LcH$6pY%X$_oIn-W;Ox>~GcC!K9`(>FN_nYHsz3>(< zrL~78W9%v>LK>cXgum?b9CJ53o6k3)+&AsF6bO=If@4Mte?(SRFR+aS;)jCJG9d}w zGwsh=IMOMgEt%=2CB_k}56Q7-%*Oi@&*Ia6KAxSXBfy4GPbsr?j@r;pv1f;)gy~FY zAq{D}brU%W6!c#-@iKF0yZS&=%v6ZTZ?27uW@y_vhnggB?pR%lEnUHh7^uxCSg$Gx zd7@GwtN*U#aXZu~`E)%k(a)UniFtQW_B4ailZAIqOzqBKSTQ6oP8#m`_FY_f3pDw) z%l^ac$nXBLIrNH6-@a-&*xt3SQFN9R7vp3G?{}GHm?nK9V8GUeU)Dc0lTY`nYC)s{ z?el9-y10SbZxd?5N3;ZnFPKIsnagWwY@QztU4RtARG9CtEY(ZIJp*9SmG=YS>mBcm zv4aOFA0(mJ6AHx9h%&?l)hWR}d$?J41On2OB+gyf$h~rM7Y`yqGi<)zly_(7)m1k>7a z9~R^U9}nK3KElk1eY)o=1etRM5QC?Mp~q;5v=%n}vTFp^hebjOoJ>u$&vzn7JVJ{*|~rAV(X}Ao>V<%kSdY=9a!7zKHDVEaVx_Hwrg?e z_$_RXl<;BYlD62_1KoF@h)Y}ExmN$OXHEk|5S+ARQ^DB-vFU@|u~Q~y=c@FOxrwF? zKDx_6gFbO*Lwf|43!OYPjWgVaTI`!7KkSsQGmecpZ^l6)R!1&(l10VBL47P8U;X4F4PHcvgw)N5Fe#ySEhVeOPp%b&0 zvoW-+m8{B0kjnudXp%LF7^XPH2x+nvsS>OH;^BtRgwonoO?GQcE4nD4K&e}va|4H$ zJON+GW!lpJqRkmXRehYs_E3k=fZm?B@xbpw+=P_fQDtXL_|gAEs~*2Jhk0J#h)8aG z1Y-tb`0gi*b}woM70hzJnEoLSQsw$q-~#+k-N)K-qk5aN$fZfR-Fs2nI@=JI z(ELctVP_%3Oh0X~f)`=zx;ZHBIm7u$c2UrIf=695eT}(@o^K;c4RG`fcJ&wY1V{)O z=mYC7u}NsWeWSMM#^61$Wsc!>5w3_{7bJ4{iTGu;i-M1#2p#jubw9y_7JKSx=*LUD zf@=%^G5Dj<)DuW_d6bU*KwgF;HcJQ{DN7}^75I6QwVr(q;=Y=otzN1r#Lhu#9qS$< zrz|io>w!K(a}tsX!74=H&t9O}hOLxN{4bnqNOC#M#4c%QcG}7JO z-Q9cidH4H0&-?B8wU7NaZFDqnjf5; z172Mdi`=!`sp25Mz;QO%8BvEnfmkz@+CEH*DKeJzU5Ex2ani(p=XDffFa0mh01CU8 zc0_5E>umH7Rz!6R2G)KrV*b_pF$9%JNVeBW!}l@>LAbW!9nJy9J!+T(T)P!iwQ()D z(KbP>U~M=KA7bM-gZBy=1$>=SO(JcR$Z?Y?ITPb#1`NArRd!){8wa0&RZwuC?kw|W zhGrX5$*xK@YOH#X>sySSt;f=QPYO2az`To^eK4#=@GcwDn2}tx?$|ypn=na673)74 z2z>mEaYoG<@k|o!DN@k!CbY~rtU=M(m+xaBD42|j?NQ`R>q)Cdgv45Fq=Tlzgd~=7{ zMn~w1?DASp3z~vIo^D#Ep)fn97=c|V;HP*axV7=+OlT)-NXo7ct#M9NK+aV)i{?DY z$vr=4&VO{JGl_=8+a%C)WRc6t2Ui>zv(IXl&61K$5+fIDCDf0FXHWsB+~l`q%-%6< zWO~!*5H#Ln$8IMAx%b*`^A_ITIQa9&>E8tC47^%-ZD;%-q?WnR_UX%V`v(D93X3Ui zbR)5fb^)?9L;)0|a7)ey4`~gy0U=Fqp-j>l0k>~-MSEDydMDUj)mYNNcqxUYt<=`K z*vHw(>Nsyjap%kxPK}5DE<3$_Qb6y}PIGGlg6!+{rJG#loh9|RCr&p=TXGs4cW_T< zl%l0Qcg^J->C+fo=B@ppp0dDeoLR?kT=tmc@*~RwSX$L1pU|251jPp46au_|XkVrc zWf`speLF3i4$x7cpJS?OTR%=GNOLV3;wy=Nofi~wYdK5>C1u_5-kSoi9vEWFsCQjn zb?{v?st9O=)zNx=AEr}G!4U&i`V>3LzL{E`QKObarVMJ;aZFq{gx`HG+Fal z&DqpQ6u1XdWwGbqvRi)D7xyUaif6#~G?2Hxk=`a2Y=4Jk%C-0|B^5;Mq-Y<5HDWbp z`D5+DYV-|fR_tjX4VIrqwvY{zM2jyE)uq?ryUF`Yn%H$sYC$(tFWr*zCNS4a`U2Yq zoK~hWJ%XW~w_QZ|2*!$KDn3Z|GwiyCQlu8^TZ7@D%KI#OqGEDmyJLj`gd?Uix_sn_Z4bLI4OZ)63ATz2w%UEYBTcKSd}*YDF8RJa$W!f{c21ySZ7?H0e|73#8Prbq(?&lkRah4+1u7wR*UGgk=}ppl!y#rB3Zm ziEofQ#_hM!k8QR8+s|tsVS$Q;cI7J3j5UbF*eAw)Ybt|N2#b0y6W|^Rla2P2pkbiK zDXnDGM*@H6GFSNu_x9u(0`3X_BGp{z=4PR!8hzJqQqAQi$vw#L@2ae6``f;_WQT3C zTss#(#a0bF73(alysXDG7nerax6zA=691w-{w09>OAh4w|6lGUroP=BPBfjIT&hRu z!0wj~--8xOA&eoG0RQ)))J;PU$D=Q_>?#9YhH~JexqnxViKz#5Cf*ai zu%a|HYw0WoJ&Z?}d`w2}s28zLu2oV7)K36`>jH1Q$8pqOKX`=9F-~Sfnp) z3M4|&t7sc9_~@d;Iv^hu^m6U)3mM{Xg!y0cJ0xE_@1}0<`>*XSE^}thI<@BZ;Gvr6)T}*U${Tf zsL(&=m57B=%hG4p3P{UywZ<=OW;KARX|A}e?*Vu78)UZXcF{Y9#lm;&yhNk7eLqM0 z$6{5awl6i}DVhs}S`b=%kHUGI6S0-O&~bTZ0q(y+Tid}b(43WMd@djK4V~Lo;O_xY zxY)1&>}OrutBB@RRg;ahA1GM?YuDhKA8}GXtk8uzJ+4B!&R+7ERZ7{=1uTBVVmh=_ zKC`+{nAc_>O&Fps$#};kVuu-80lW4zjVX(Pgs$c9mv(GFR zc*d||GcER@BEQWID?2 z({s3uUVOPw_PhWsYj~Kls7*Js-n%9 z+tgvkVFFq4Ae|&ccG6+U)O$xSrtIXF{iLU0kEFC%7lfROp!2OUI&jL#tAIvaZL^M(YEb-@_e2*<0n=}hjFoo1aYhY{IorQLK$UtsOkS)(3k^E&v zDlwbf=MlCugY^RhD>(zom!Z3);o2XE_bgJ*&ji))QsP4b{C1 z!DGVAxofTqGgE4`QVN7F6k}lVb5P8Ohw}`t=VQph2hIrd;H=oFg0iRWjOUB(56@4_ zL9%Fu7UY66uv|&P6__#&8!wV796Mpr*|)u);4kri1?R3m9bOl2bfA0GM-~0VUMA<7 z4>ATlt}1vxbwD1^Y-83xT4CohJf0*xqmihM(FpHH_I?DyDG*c8J&b4I9lbPD1g-hZ zl_PP5V3NuQ3ejiJu#>(Pc=$FLSmJ@3I%KJRvk7@lSG_!erHm)(E21sy)47T+IsR^M zD;mHOf=R^I@4)TZyzO`|ROGEYHznrYCzgW`2 z+wKCza>DxARL}}9{66PFHMs{ms&1O5i(SZ^IHow0cq3AdroZL2cD&Pj<02qymNFNq z3k}_cgK3|Hgie52hN?o}0qVf*UG-1c+1%}kSPq01@}SC7DITDnxBbBxY%b#`HfWvd zjvZir9wfs4aTlnkID`0^yMN7SZA}Dx3nfB1qvIIl!;RAuM{MtcjW&Z??&e7nafbI4 zm(&^fcw(C8zBFb1JT_Ao z+OSV^D>LQ^vQQC(S4GwLBGcv-e#P?2IxT5%fcrj^l@)qTa$v8{oc6x690Na%Z7IVB z`??9D(RinrFLE6Ck*-jDe62k;=VbSg=i$> z@6_FnXkNV0B|w3S*L7r-JqwRo=um@6L@kW+F6)Nnr)Ug5Mm+yq>JSxM%KcI0{MnX@ zNVL*3qY@pRu8UDp_Er$zTmMJsOI05h&9i<4@8|6gzAOf{c99yd?>8ZjA7&mNA&c}O zyEvg)CjJ*dM3;wi(%V98m)DAUgm{2rx>6~&5GVcJaC(AuqaRa-x`WY*)VEScfq>DO(R~09|6f)0pxsUV< zOa}^Rj2mkidA9c~xl4iGR{&sIPb88!@VNQNzg+HXA@;Yo#FFexjcXP4{B&$j}dBEtV3?vS}93fy6Pc=XosjV_eifet`_?!spFq}ekt%q=tB^3ojw z-6jmBxtTXh-!8eE!`r;q>C+QxzJB9(J@!-(<(an{PYHS;k@^C3TEGS#QBn+kx z;eHTi-{|oU-8b%2QgBlhp8`etM@wCMF9PnrFuJ3EUQ{pasW*M)eb%%5;YKFqu)pM{ zR?p4rtB1#c{pMy%;X;k*agAp=t4v)WF6W`1_Oly8V%}P7bDq`pF#O;+pJ05`9%@Pf z*Ytixq3bci@uPtoG@h_4n#{GDI^>MY%b@AHB)nlP*oYd?8vL;(H+MJ9@*%>2mqUlax-m~X3%QCg}o@;(!%0Ot68mqe3&P4hY`gGgI_=z zVtG_KKnZW*Z|zIK95gg}eH=!T8|;+CF!$&9eFIemmco&}L9ImhfU?3^DR|&XH3h?*C@9)yIsT;!I6V30R39 zYv1yu;gPQ4)zcIeXWa>S&0AQ6DB+w9eQz07-^iq?sSo5GGDpiD=t^E|4skHrrcnDt z59_7qzk~6oFu#vFxlE^hS_*8>t%_RN-1tby;c+W`g|sXp<}E+ewn;Ml>UBP0pzvg;#n|99DE^7hF^hxZW=Z}X;b zGy1&Xw#6b%UqM_Thkl#QIpdrBEDl&JvdcF^EiA8@u-yojUS+gI*=968XO0rFZ(w!F z4!mFjB|-OYiHPT_mOPuyAR$hVF=Y&u18db!#qQn&u|v(h{gR>rtdH$)_VYZh&MUPx zXz@8BeS48^A6N1~5@&=jFdK^zmJ#)VH=TKbWwN-?mVa63a_P+EDL`=yy2(%6T}$oX zHoSQBJ;7-!v(>szVvO(%rSXLYsw%rBqh~nSJ?0SbXiUvW9H`_Z*Z^{XVX9wTJkZv@ zI|6bay|A8zUBZ2dNC3Ohy>Jh1bOmd(-i8FI00iFW+-aYDyPT-v3*Xx9OR6O zc>L>{k#Sj%8<$wmr8;GZS&aXhEVJ$%BCu2UwlbaxFMBptd zJ-5w$RQoK%QS#p&qg5p`8Fm_~C>eq_7(Pg?jNF0MMKHp=Z=;67g*o)D3>hO7md$Ge zcaNtFNpz;58H>pbFAQ%jO2anN=NlT1(~`B@cRV);K}H!j3^yB*Ism(tcc}yQ8f)or zAv~D4=y9}Nc9MW*^qDN9;vkJT^rHgOQn$1hX>HLBM1rxN75LZRmn|z+zod<7*`HZ5 z8KTLlB#`Qk4LcwEE$!*)L@qu@(NgacCC>RLzNBGXQ=Cw&Q|CQPuc%=7uJNM$z`Njs zSLO~=y2d@7J*X?@+f)n0>(g2}(?XpkWt@eNo(Gi@5@&uPR$;K_5q?p^HEV>dC z#7??)`LdC3*gw1H@?VF(y7EEP~Ibg?PEE~rxfrFZ;zL!S4htOE&;%sNkU}YFoV|8DXG{j}_q3D<3 zPd`3;6$Z;bzR|fyiCh~TDI3VI24=3;=I*9CLXFX?r3Ui{W{~-HX=1xWox8pY`Gj>u z-yIg{*)$V*x8k5BlRRbW_SP2VHL6CBTCYflh|AlGdI5M}tLd-=eJ?ky9YqW!oj5A@ z`IeYd8Tsfs&(bYgBw|jw*kJY%<0Yx~p8khJw|q&%z^r9Ns90D5LrlFVb~&bIY|K~a zvFyXs=oesDu7V&>6hcEg;tOWiZwrgXeaZOne>bZlzyl9mr{1U3d zk`D`X%a@D&qVQpJDt4zvebErPrCi1Y-DX!KDM*>Br1jjGVaD?>wP6%sSlldym!*Uw z2maGWHCPpANg0d#T=+OuqhzHL9tE95D&i5d`DSYXi{mEAL*-kN@n^NP5Z69m*CsO^TH8 z*H_sdi=&^s+$O7{abW%ryrnUoq(5Z7nX%!<$g4em(BAq%`+Acf^sKwuM0^vSIn)sN zzB-hOAKY;W@y>gwW-uLGR<}0{-06GpyhB?&9!A9b{fNJW`+v-ZP)isfX)c-rmg*uf zlgRg<|G2OUWH7~HG9V9xV``U!ay)-`4IbGEN;ty((_i;5i}^pE@b3fYpa1-S$FrvG zq0UbbXdj9={raV2ilK<1j&JzNUgoDv67+UP{ohWof7>5d`IvN?|I%>FNo>*iefO@SLp#S`asOBkK+OCH3_HZX{ZBYnTa9&H34Q!9QJugY7#zilUL+niS3aC;V9^t z$}11`a(*O#N5x7z9Q7HPdly|;81oi(sx1Uk6qxN#>gHd6jlN1_V6X{?blj~>ZCSw# z#_#dZ0H9hs)2li#{5G$elYh`K(nIl!+xRFVx&=xWI-InRiY_CsEuDA@KF;f2?opwO zdSuRLjE8tcshaE*=dcP+u4W$^(J5`u3sRV{JKs(ejt-+dk@|RZWeDCss60&h-~xY= zezO9bq)i?Ujuvh$<0IrUdsKCho$t{!$%qORx_+ zqyV6Ahn39q?na=;_nGS-SkIp~j7+wuLe-47aMa>VA5@6=3VlNgnt3bcTTpfPvZ1G) zr304_pdaz(<%YE9q8|8`VSGa zma1hvg($0Xm%FB))74l5^!H(FsP=sme(18W`gyVwKUi~|3)Go+pJ4Pgc+jmBrKEeN z!TlYK(FxiG(_YN9cUE`ihz3iU^Wy9<|MHQuxk1yG3Y_7<=8uW#7SuKq$X$%aF&oQV zU(2)-Up>tcCE#s<&nwk1N*>Rfdsu=vX3)M5i7N-Hd017UCStZZ2MwJRx{?a%b;z6v zRgrIO7}ce5we?VeHy>5HE!n0zPdT_`dK|uLvKE)CX45i#BX(f7lO_fzq+lt&Nt>f} zT6L$Q-Q~mp5 zmHI`E!iO&tpAsxx?ohNW$6(~}*tond4{cg#qwN~5#9Gz;(vNa`3qh26BZ$CWLZNL>u(_n8G5|nmTa0sTnz<*Y{M1qd^;xFLOabp4* zU^pVJM2+z?TeP<#CSTUHzpe+5QxoKf{9%z%wpX+z9D7ieEWbbMiK;{gPG8tRKV+ zsKwA!hPQE$c=d+)iWJfyDP@#+eu<#j`+PIFLcl+Bn6zB}frOt}TBI!x@YYw`-Cnr8 z`X$8c^8_y&+290ymqrAq!NkV3D;6x^z;ABNYsIsC_6Sq(!POHuboXNhA^(T!uW7d# zFll7+fB^avur&-{{2ZTgC}kRD8TZ|g>)teah$k_F!>mkgo*rrU-Sg>$%M6oDWHk`` zJy_JLR?!&pnC2Btg{2xz#A^Ht_W5OvFl*xHtE-<^99r&Zy3rL*-TfXp&!;Km zF{>nes>*d{-9K52Q&SeZ-w>P0(qGBGH zp^QFM$+#9*KW)|O`aKB)E*NCcZ$73{A21Nrz&Jre)nvcM^YZ>s_YTX$*K^CEo>w39 zFQz$I^P@?-|RF1X$MBpNrWdJSJaLcTHQ>v^IXRK1wj1Li~x$#Dx@RS>%~+oqNtC7g^+2BMl{|;S1g35~Nj}5@I-oF0V)VkMeFfpL&8wjY>XI z7m|6z9;VklBwCEIu>_OQBbhao8ul3N59C?b7W^36R%TQDYRt@8(5rk(p7B(x@7)6$ z(tsV9?8tgHV)iri=N-`!?1t-&B3BlPNGr9f9}lL z^WA;RN2eWHGS9?X{qex_y8X2?_dZbAw`Lbxd_3S_o#Hk zVv>}tD|aw^&P*Fe_@0=c+h<~ybRbr`1c!&`RimQbkV`!aooW|Zbfd-(D4xJOuG+G% z!p>7MQ_W?+Qg*mvcZ(b$3D&h0KZ@alf{g+O6R?*Q?A>giYu13GzQZQ=XG@^};AD?N z=U~+jOPP-b(S=^QDBF;JL{p4LAP}uXm<3$htbvM}1}zI<9hM$jz4PyZ{GZ-e*Sl%p z^v93Ixi}4g7FWXK5*=WIU!sG;_nt_+?W?!CaOhh@)=LS>4rM6g{BIVw8tV;9xiyV%Iqk$ zcj?o_)#PHiT&??12YSV{e!8A3ir`vs@g3zW%?Q(rqOFk-HPFV$#mib7_S9leRqUfA z-dAH0M~f0A8)c7)$Se+7JvVg`*(^y6;W4t<-pzx0e%QpgNKt&Rt)q=W%hv8dV3vva zPz6oNP?W|S5J<krH1hRxIYVLQaIzzg;$X#^-?NuT5@fjy;N^1ilgd2zj&ajC{e` zt#N!9$=v#^>;V}ETI9U_H@!E7wvA5=G5>QsyW^XmxZQgbGdKqvsA*7{Oy^=Se-CO7 zp6X?v2Q`grY`sn>lmL&$;q6I>!q#1I!j#t6&0rzPKLZ<`)pSA#uJkIYf5hwgZ6Wwq za?+nOkf$Q3r_jay`S||W4RBZ6aUYXp>dO~$E-_r2Tej@Y4cXl)CbEBCq@4cva=CZ0 zag~wRY_VstX;$cRlmAFz=vP2$tMGdt96Z4HzUzBWi~Xs^PzWJH_t8#cd*$2E*(1&C zWxAhoG18t^b*EW|&IK#)TZEfx6K7fNN0Nr5KwcfIlV$ZMpR2 zEY;pdko%HtQ*eji^QO(3-Ff>1ZGKWxFH8Gdmc5F7RI|`;*bwxCW$`KnaVJ?E4kT_2 z!It5w<@dHIfZGrJ-OS=Qp6QQF$(%|=g1Yu3^Bk*gAIRU8zD=|tt&JG|e}5_+uF@#+{ib8j|KbIgvXq#x%BpAA z+>Y&?`-)?3>%@xdWP@NWaG;9$4ykSSE~$Y*0!MK1scp~rU|h4}Aka&#MDlsNLhIJP z({HGG4`U*_$)K|HhxiPC{!n!Wn(|F=Db84x6)n&=Z#fcL>XoSZ`*VQBWa=tjuJhN! z3!cySc2uigUc8fnH9rpM&D(p$F9j8?rWdAHtTvpw2k)=%kB^=onHCcCPg5^Um~~*w za~{^Zu{pum5hWf5=I z-3Gm)iFsI;1o%svf#P)dwLpWq;Q5sG-AQI7cZELBM!ZE4@i?o8a{`zf0ImtRH`}>;xqrnNaA~KzAT| zT)B*fx5cZw9+Y=Q_*vgFUy z=c3HEn|6M?dHrpF<_zm+WoE)v-$K4S{soUy@eV@ucv2t^dE4hSEs~7QNG2bxdM=3q z4RuCrHJtCS>CJWYn%4Hu73s4&*>0o2OndCoF!SP^$9kDz(B!@dCUJTeXE{t5Q8sS})1&hcE4a}Jj>f4d zm{i#dPL(v#nx^wTiuoily>FbILi5ooo}3QZN4@u;Cd%Mki2rY!weAcGx@A%vfJDfn z)#Ra}viJ2@;t=8?m#Zp_?3&u(l%!gFxp?F|mw zOdM;t&?K{eVsVbVf>RoCE)RAV!i+YxKFF$22L6P7741J#z;vM*E~!QD6<%MTBhRI{ zTv<8k5~)lE6h?2vEf@1eXJqIr>1zMbSISjWQvcx%O2^?*R#k;rW|!vJgxBYR?mRF5 zBLf4PbET@K5(ObGx9R8(Uq$F2vG!TBR!%>9)PR^}xF0pV|8XCGK~%$q(533Rz}|ejAk`_m`{5TIoZyvI z`PpSx^oU}!U1eR%^?1EN_YGeqF)g^$XZ0nM4J`a35s`rPoBSytzR#TadRacE^_|Zo02OAVrjx0Pn zQ&Td&9uISXR*e?U_Z#5;3S^)Mwm_EWMiOBWj3cps4iie^39wpk7bxdRcV%qSKG}!m zm6i3}l&lepj~EMPoJ3$kjj*Ycwyl-f1D+mT-@xfs%xFi_3xt0?H#V)lpv|X4bSB{E zmxHsZ278&8&SqLY;>5p`7=F(^psV{A42-wQiJ?NFZ}qvpXEr-%;BFau8;#mOX*QSf z*!G&}iO|EwTC1k6NSsP6y!q>QLHD?tk{VKqSF7tZl`?}*&V(fG+Jlqlo7-h;W_ZSg zWSR*a0yAko1vDl$h5>o@%sGBCMnoo=?zK6OVKfS?@|Q$D^BSikxsN6G!PGR7d@U{A_T z)zr(m?}xG}nwRBPGOZJbnWW~{alVjaY7Ji?B~8bs!>>w}s^u}wZ`83L|QCpJ!Daqjz(C=MlAF_hsTXvCWZ1s-HDZ}q2KN8{ z3rOyHAU63(&v@3?zGz2-VQ@y{%Xl)<4W#HTO;*Y5iQ-n`eS^12n-yz&`mXQ{@s!iq}R^v0Jrk+rk%ZsHY- zne5GUOF^SVZci=dGuCEu-@)(Eb!M3~DhIPisHLyps;i@H$GD9t;E1I0zr_)HJ_ zUG#tD43wQAA~g^^%86x z@U7t2%^7H-7Ls5Dbx8G`80^1*2L1UwU5H~i_mt{0YTd75VP(4&bDEXzJ$FjB%l81!OYm_mS?sHtNVq8Y`5&XUPZQT~pZn*VN$@>gI~jKk}u zLxDg|N2yW)wCpIIb8XU&t+raOKw|V)+*D|&+=Qd0;KVi-7#-CAK*B*?=jA@xG?2&n zqi5ipM5$uCjBX)mTAUt#D90*J8;f?jdm6y31?be zT~oGXN<>T^?FXFz*4N+;zVQgflVGFA@om(`;PzV+w^jCR2=J1-`DEuaRnf|AmbJyZ zAJ!;6-O{EFLcAj()%xc(wS%z)9BgLk^{ zS)J4eQtnHACszIVs?+nPMxUTKD?>x&eUi|&VZW8neaTU&gaTe-pX>&EE8S*;;qPtm z!z&mmG)a~s;3tL7$MzwHs~3|hSCBF<0ZL1eukgKPu+jCVevdkiev>~f-U#uT?aRBC zJMCP|T#l_o0wWd`JxwB7wnZ4Hl<=+|ST0cRV;i!{dgeI3AM>3zm03?2TX|hH zx4|C*X%X-@!F=jr;=hX~GdKNqYL1OZFx52pIpttSCX#I4Wo75I%rD5vEt{@LwiX$9 zJ+MQ8z=>LxZ|kN zwwq)zMIf#h8DS3IO)@WCAi2@LdXQ^|8%sJKdz-{GJ;w5M){Zwnp=n8{U+lYc20(s( zC%kyW#?~Xg7lOmLy>WN#b+27UdsDuJ^DB5-q{8>BsCQWRQT+&iefGZ6%Zs9hpDe~N zS*(`}7nP4I1*;Bn?&5|jAD4V`-uZ4anPQUlfGW-oN#IgcYuFou*UloZ{fDnwY;O(e ziUByYUdPXBDy5Skd=e32Sz^IcZ1+`ISCH*+?M_AHRIWPP7;KLqyOSA?*GnCUW9v4( zpAf7~00}#>y|d2Bm-3m=E0X+>$#J*=2M(v>V&Ts=>bFT)A5bb6`H3ksQ^uk@kTWV! zQ){$I>qH_K@4N4;QV%uDks~pVTO^eo6nNbhm}K!(+yReQb;qT{@toxRoQ|gjVr36v z^GLd@Lt#eHtlXdzXAZT)B1`$o3P>dz>KN2>6Vad2+J49W=__$mCnISwk7O8Ujc#?M+D1$o^pA1D=@CfBTiEz5Kanc*Oi_*V3H&%y5lX0@Zy$H5M< zzO!MwGOTistYQqdIQQoO>nC<0BEYqi>@jqEsGoffJnk_-m&~m*jDLMnn0R2Hoc)D2 zsN#(S)7s}3vg#7V$yX(S3ihKKPjEx=-Nn?f_4Uw-Nd98BK~*8{lw7QNw0J_bs2x^^ zXnx1fh_GGrqDzfo@bHPF%TM7jDZHL<+L=AFlBt8ky4QkaXmG8a7E<;{bEECIDbQPy z&vgS~b7Tvm^t5QtIc1MHN!rzgxHeB2KUD>==JntZw8ESa6x%DG5j+e>U2OT`@nVy>ToEaI;2M zC|}n4qL60lMoy0sOg8ZCL6=g%pHC;VXCqpwkq7=$VT)J6P`yp&3WZ>;JE6=$G|GF1 z;Tb*6q(Fp(L6bSc#L?4v`q{TO(3pu}xB;?95v(K2G2?|93Uqasb;{W`7=Go{A3&vh zf)s`m6S-gVs7^d{1n>AqM>Hh*1HM)EtqMG-7<>A;8LZ~)vF6DoB2YA-eOgn~b{&;y zbHT&f6a%cZO=Uhm;zxr;@@h);zNgJP95~~8O*89`m3$BI`tnSn6fCX2%PRHl)TpfV zrF|}m@a|0R%PstOU${|O78SWvDERNT)T-G8o{oW@H6E*ikg(;&M`|^_ShK3S? z)ch%~tX@@icMRx%bx(iyK-p+j3ZT5|hJ`d*{xp-FtB4u+I$Kr?$fN+C*Ds1hoMd$J;pTWGlNRbL`?68u;NJPF9Htno*x9gkrBhF z2pZe9h760}S#*1TAl+!uwuVVH-`9T*7&OKzi`fpa(pLnG<9&b}zpO!$%z?tgcp;RG83oOClQ<5-2dr(ikej%<+0ZG$VIgj(BlAw2sRfpu&@%l_& zAM$i3cd>j^W=RpAt51E>RpgXuxx(dMav&zOGkqs1VEx!+$Kjg8+Rx~7akOz)ck;qI z{fZvfgC)it{JgD?auUJs%r>+=ssErOYkqKWf7}$xe+w31F##3}sAKaGZ1e7v>Z9ro z>qWqRV z?9!{mTa;)W1QUBA{`+YN#`H^T>|zmCMT&G{6!cnXQ)pSbczda=Z-v3k+C8{?K7b9j zfgi=GPq@do7xE_BDGJOjx=4K23f(}26;3AZPY|Vhn2=edqN>?i9q|Z6sVcK=g?v5q z_283ly2^s+T->-7{>##T7`32+ zjd5T8Q^?akOZvI+-DTNx2;{|T22Q=#XThq+DfD}F`>G%Ti5tM+6G^Dgq0jK^W`LgT zE$-nvm8`7$S*Zzzt()PEgKxh%STaLF$-@0FVX{4$v1dtGAe zJNp3lse~(+<`25G*3&W&81z}vdLq`Rh|MnBVmsCc+!uICk7Jy)wS}_mqa0TDo~=}$ zZ->3Dng@Qj(iI{rUJx|NJ2IlySVo)a+fV}wdgCm`Dwi>42~;PMN5udB<{ zflJ(bCjp5C<7C624#o#GpG+qOGsb|nF!S{|6s6!{!{uS6A+p|J5VEoHLh|o1dwCNg z2NM<%{#~8c+&2j~-=q0#|C{lGv}ESQR*o^W$1y364tym>ndM2JB_oVw{Eat}DiOGL z(d>Z2!WlnRrVdaNa_-3<4oULMaeCR!T~q5AM=Q5aJ?r?Yf#kmH19Id8Ondlc=P8gj z*w6_cBuD)77s)IN4}4-wo3x}M+oR75F|55$(4JT^CDW_L@Kyakyl_w*l3WpTN{8~^ z*+TWjIyJrHS>jbKhk!rvP|ey(MSnPCahFUM_P`gUeQK8(hrOLd$t$Nx3w}gFcQ%8b zKGnH`J~?Pc;p3j@0`idMJYo46Jr$a)|5wGigvm;A`FV@`csE1o_+?Piahd?Ag%K6q zFes+t%(9ochYx1_MbppR5^sboS>3p=KhktQpulQ$?1~8I5s@4WwNAv8TA}^esw4|e zTf`jgDjf!BX-rl9_i2}1Sv%yoOyPk1Z%AXa#NjujF;pE9`Ww>tF9sqaG=Vvzq=a8t zS#(PRJ_rTvElE4mD{ng!SAqSXVYPq%?jPCP|I-lscH*1eyo}Q2 zdf_Qe`143f-!E9$tu}^f_}hQ)QOOWpey)z?hU_Ju6XhBgA&%pE|V;s9U6w&@gM-Z;S1GtV4=_SHJ<2ne^(vLN92T)oIe82d#C-A=lug z_>aGeRm3n&iA_Tk1XTwgOc9YFp(3in(TpzgR@*f?k$`&NHJPeuX+_1yrRm#T@v{pU z$orHZN9~CG0p}UVKSQxYU09oHyaY9g{6A-HppvIVP|A@xcPYojBqzQKybF24g$ws0 zUZMWEc^rqXNJ0T%uJ)68;n19oSry3n4uv_p#o;*V2-Mji% z+=vN2f3QN~3K$wuL`q(n_=yCfyB z?ff?PntA~a$xMgW)$^Y6E1+sdSZG*YoFVCl#?~8gWZ*$}T$UW^KEzb_1d|=M3ga^! z06x_r&TDWn=+WYF;G-0ei6pK_y!B3%+D&hd!1a4cS>RjKp*=+On6qmC_hxjz?Q?J5 zY5oRj7`|2xUPar6_(58r8bys{n7#+=1HUS2E%Pat9?I1hZ#C8TD^y6wH{0K+U1*Hw zDz_PT#=SD)YzT-6aJx1)n+H)~?vEA4yc#!II(oU_*1b7C@d?2@h0*D7e$nf3|JZ22 z3)-g2$}5}iB*-YN1zP^g#zJWMS}8IYXKEGTPA<3w|JM`@10HNtdOhCBEnu#4v^Cm$ zls;B;t)We;H14kVq>B-NMjShp8STEF8aoeDGHez|eF*0D9IPEaBn>)kv{mts@NgX9 zdJ-S3WsQtLDPj5k?z75yh7JIn!lf&H!OFeY8eW82&iox$HB!}PbZ$=QinXQ$By;I2 z6BG`Vy@!E+(M#+BRHW!jm!as_}rvS(g|2hy~f_OZJ7R21S^v1 z(|X3o_3+hbEXUFM9*MwM5gc3q2+$+OW71#CFK1!<)>LvpKp!eQ%W@EzDwWqIV%e0H z=4(1sk+*@@I3>7Hk1dx2+H@>Hu*yNz<=`)#*)!qLoLgH>neM8}pdhQrk3PjM>Td zgK0H2@cC{=Q~oJ;1>X{ds2_@2$Ruy1F+wt_+@QLR}THaBr~b(`BML!py{B zz74OM46xYvw??`B5^Bz%a9crr9h58MX1IR0x=%_ms?dcZ<3@)nuR{27&R6o#A#(2x z!>{sa0n)>o*y$HaolgzFvNfo4_c&h0#_ljVhaP%XT`Sn=yhkG*cX8wUPNk}{!`83` z>PVl#MNFBE6h!g`=|j5C1)YEc4$rGy1M_*)*;c*zfP3}wmv={_dY*|yVnrH1{ir42 zse>ZTN@+-m3K$;kM{g#ts-a1}dzyD=;FhgJvno}5p;h`Hw5`}ksPG)bN!FwdaCfGj zfOnxNiL2>zY^52c!%p&fk=i&Uk-Z5 zvBj0$sl%nFZg}j<>w2YWFkH%jm(%cYx4*$09^X}|yErRVTHIkjE@?U`|1GMWNLz(r zu36@caK?5g_}at&5;iC55d8=zwmGOtT=E_k(ScKuPR zn8ku_BiopIxgP?wv5AhU8+|8NF2K2DhDh2~cJxFLkyX!Qf-*Hs6n7=2o>wJKB=80; z@lS0aH@-WII=bF4OOX%mDB=GfwOwUgRA0BITTlTdWI$3RM>>X4P>{|)DLJ%&(jhGZ zN(^0+l1dKUAT{*Rf-tm0htdpj2l0Kc@BRJmhx_54&$G_iYwzdmvuCYmt%tA6NBA}( zj9w>(nu7^In8OzWJ>8Qg{?cnt8I)~2X9V?PcaF#BD9tay$z=s2=fkm#ci^%FA6y~i z=-!eY`+>;!MX}txQ0^|e)HLq3zSI4bK1i*oSz8A~QR_g73SC~0izn7wI^raz$X`wF z5yU<3bnR8KbhZKwGZ+L8s2}9Hs7~N@XGHGMRn}L^gbsh%M{Ay$1Ji~Z0+^FiMK$LN~GjYNW?fEE{^oeK2hX{}RoUMl^-3id-DmKp22A}_j+3d)$G|jz=EV7+1AR7|eT+>2J77!biM4<>E&~4} zFB{)#yEsKf);CBJIKoagOAlK|3WP6L~4K50)-IVpwOvdle1&z=%pn zFTxJN2hQ`&715*YjE2~Q-*hIjP3bk4E;KjZuD)P*ayj2d9Z`Eq7xf5aFGRm?Er6#) z_G>3#)Wr~%T(ZCR0@Fy-Hys1T0IVy|_NG!4yfvH^d|uXAqLbvTB(#`RM1FcOCS@vLibX?(_`d{Y}%n+7^A}2WR=CAoT9{R3wr$HK5xG zqAh;GK3zsHy1z@bZ+i}vJw+A32X`)Kr6ADq_M_J$A}=J*WDq+?&QA#D4$l_KVr}K2 zu4GrmEw$+wI{vcVa&3Bn>SXq++#8;+iGFti(8o8trHaq0H;T504N#*cLWr-H_n$w^R&t&y@}&Z)zEtX^8*@8 z)dxy-^&1vQWv6wxa!9(0VuY(0sWJA6NeVDiQ*FaW7{L>*< zKv!yB`D2O_%7r*nu5aE`%D&~TQ^E}^wcQmrFE{PzX}br7S9CZ8F#DD(7O89g)@ePs z`*z5X*+e}S%1bF!ywhBHHT!vl0gwMUP@y5QYTX`Ku!7p|)0_j?aiac-6z-c217ZvegvydDdW&zjO89AnH({dKN1%^Q#oOx)HXdIC>a3%`|G-W_PHb zC748sZ!nr07{zx=<44xzbRKQ`DUhDpl;uri1XYi^rlUXnF8TZ0M8(66?-Rs67tp5@ z9d06PO4r7vq67n2>Nahp>eMz`$8)B{L3!lZW5{e$jbkeguYR?5t6M@zE{~Y3ys2VF zh`nEI67nci6+J}C_>k{&%`c^gO;YKl(zbds_ubY!%Z(sEchrg&)!VRBtL^C(l;-uR zpcc>^WL37()VX9R@8_5K&=c0wNZ0Yt&xI2+&w#rhslFOfa8YP#-#14qjOsZ61)eFO zH-8E4YbC7wKv|^n!re&?v*ClR2){wMZ!Xoc3)bcA#~PC{EOu1^rO&O=Lmn z>0_^o7ht*DJb@;^y^)jn-N4mV(YKs`?MH5^{racm*uq$r-zcyu_L#Dy-&?XlN>l1i z=kZ(vU%yH^s?;(paQV+ znr%XSW(v=RHW+@l5}Yz+QR=ScDG<7I5r|%D5z>)b436ce(ROOr42u zUvb*-NJ+=YbMcof*QOFQZQt)?rJAq3lD*Z<_stPl3hc*NSP{xrWGCAAW~c+P-K=BZ zW?s&&aX#0P^@DBT4e=2V@4~>3A3Gl}XTY=PT@Qc8-q%xoO=YIdKn4xMl?6?tHgEO- zO+Cy2sUg_hV7`aFW%sc1tM5>+DFXboi0v9pa`=4C)cI~fiwH!I7Q!kz_3;T;zyS;2 z0s#Vq2FlB|aM13fw!tuBZ|6Z zUxI5QNJl>OC`|-Cg}(n99H2&(<)C}7`t}M#vnatXO}Q+leLHQ##3`nIdzi8~m3t+Y z508`ilN~tdDD}yglZ;uc1@j{n%eg=R+S*>+*E2Y*k|iwNd*&sd`0J3cyJ2loXmeD* zsuXGa4jf*89J*!B0|Wj@JozF9N4}aP0UifBIvP2 z5yS}!B1uf{KI>V1lj|%UEMj!b{&ZXSyWFysnv=JA&Il0G&kU|hDG`^#Fe1@Sm8O)a z%@g+|(U;tFATYs7wnl>4R@>c5M$`MlM~svHQogOM;Af z`v1fgxsaM9&c_dQ-7YHp>JufDiZ=%2DfQ1I0m8(aLc*phZ$3HD-M}D%+k`Ac6@S@23Tf&2GI_LaO7 z81Z}glzGj3`ddk+W&Xd4J4IU@56TdUD)H5Y|LO;#Nd64Z4ojGz<45KWJC!|cSiW(F zl<}`0JSe@_K|VV5KNQb`msYjrUM;J@8XoHxH)Aa@U$5ZE5jF8A!z8D?61#QV_lul7 zT(=8J#Fw~i)_H3>cArT&rT$aw9<727 zor^U7`61NxsQ{L3$?N;tD5kYk%G|VXj}vgU2unWcGk*Ar+DY-iZz<7|4BsJQA=;Y0 z-r@oLpE(KaQFFH^&Y=d0lY?tCKgGktOiF|$P3US?BZL1gEe(84I5;+zGQwVNVDqnF z-sYW&_l}YO<5#>!%`fx}bkq%H+%|4l0{#`&d*!z=BP#b7E%vVp-T!O-?C-{L{}1w? zI_t2@1Jv>5PFm@O&1%k@U}b{06lKIJnlND+6cX<~?tilSUPl1XAtG?(!FGpLi!sc4 zr8zraVbHLVjDXR^dA^@|mzs)y%dCfghn)x`zkcoSwM1zk>HZ|RQLGsrWKk8z?RY~6+uEYF1ATvwGd_{Fbp@y$nq^N|qW)<2S zKQft{ME%idz2;qRjYBS1!lvR^cumj)10ud=^TD?s9Qwig|JxwwKMh78mm32=-|OK| zisn}yzR=sM%i9onJxxUAFr9JK`uh|!i%e8p zm0^_%^egWvPO)Hr1F&MU;sMV>kAWoeyB-!H7xKsFr& zdx|{iZk=TQyO{iYE<8bwu{D7@2!Mvya5S!0Xt!|Z;WVtiw9dU=_3Hmvb+u?)P{`s>>iz~>xva;r z0FV?h_sF+zQOo1mAwCX|9A-5Xq-DXqo;h+*xeg9!+3m9tAy!Nu1PKc}djggsT>s21 zoOzQ!{*qs%oH2BdiLka&QcGsIy1}uJR}QN^5Fcbr8Kl%-gPy^g6 z5b8h!&TVE=dr$X7Qdhh&@0`C`9>W!g=Hj}#g1?cQ@|Q7s8ig`f4O=lD65W8vdR-GAs8El4L|o z5Tp@b?xudXQm5n^n%4!b0rBF*VcPV#RJ+8d7bDql7C%}BCpvK*8bK1Dj9@C;GyzN&UW7Lx zC^Dr9Y!kT)T6CRnJf$@-#}9l9W1R1R#R6n{dwU-v=7XnkWc&l>39hj}9G%&vQ4k+6 z$5|^2CEh@9Es7aHC{U>-bwfl1j3@`>^vcK1JTrU#E6;o!we4s^F^p&O+&pvYZ`loO zbg`D0zF-|wqN3B=uFuCM$+FCG5rIpbLe)&d|Lpx|W`s(!6E2|$BGhRJ7K<0$g!^3uc7=F{~) z+19rh&orQ}siw0?x{>O)08)AG_JNN$AM)WWX75AWwR2rE0T8E7iO(>Y=qhE2E!9?s zYoxFHVX-dyRIri=rBhJ8?0F`^i%!ahVSt=pJI&IYK@h!|ES${4M<#eH?mATRh#|&(7f+@xm7)Z>+Wh6f(SS06&T z**)J5jg-Cs($Uku_Egm5boTOKOC!1W?z=pPO<-8gjrbtn({2`!>^rI@VNHwq)dklw z*w4&FLv_sv!uSJN7}KGbBy$pnWX~+fQo<#2DHDFLVVDkdNW96Gig_1Ul)b`LanN*9 zp=&qym^W1O0~dB|F&gUETSx-tz_T2$V}uPPxa_oNG1P=&4zv>9tP8r>r~0g(gDjv% z@)wVTzGGFrO?f&FQEHmp%0y0DDbJ>oUsS>iS~Y7$ba<31neqc=ffl)9y!Uo51S|1! z^r2$%ZI0F@r}=xaO<-b4o<;?^$8De4s2Sn=XbepCbK#Tz9lV5%n4ue4YaP&dt5K(< zQQWg^FEP+)Fl^m*7s`SE**g_8yPR5+X>c)zp_klJWu8soGPm<|?tLWQ;dW-=F^GDP z$Wi0AZK%YwOd zBC8xT1=dwt@K6r^GpAIQ8OI|trri9tV>4pCljFTvH4pkxtEY&$4D+<%^+x-Dk0|ux zFG}==#U@2kbTnHCeUHiAb1G3g^hZb#XqhpOASRmlt%rYs|KyO>2^CLGzC4BYo9kMm8sg2) z?o6D+(mWtZplotNi#XN@gy$Me*2&qqLQ(xZ;5hdM1jHoo$}9mx-w{T+%*!C-awaqA=@Y_7HkJQ@kq+kq7z?uapQ2K^O=AaBu$1e`rG8 zOMU)g*PDa>lm0|sZ(uy7AN^`e@!y$YL*KS* m?p9hUy!-FVp=zM_;u72DL4KnxC<_}4bICtbd0HZE68K-Zp$YW> literal 0 HcmV?d00001 diff --git a/k8s/helm/elk/installelk.ps1 b/k8s/helm/elk/installelk.ps1 deleted file mode 100644 index 3a77dae59..000000000 --- a/k8s/helm/elk/installelk.ps1 +++ /dev/null @@ -1 +0,0 @@ -helm install --name elk stable/elastic-stack --namespace elk \ No newline at end of file From 0dcc46caf4ad351834a90ed3aa91078385129166 Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Thu, 21 Mar 2019 10:06:03 +0100 Subject: [PATCH 13/20] Corrected a Typo --- elk/Readme.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/elk/Readme.md b/elk/Readme.md index a012e1c5c..16c2bbcbe 100644 --- a/elk/Readme.md +++ b/elk/Readme.md @@ -9,7 +9,9 @@ eshopOnContainers is ready for work with ELK, you only need to setup the configu There is another option, a zero-configuration environment for testing the integration launching via ```docker-compose``` command, on the root directory of eshopOnContainers: ```sh -docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.elk.yml +docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.elk.yml build + +docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.elk.yml up ``` ### Configuring Logstash index on Kibana From 905f8552d977b3a1faa5c6818d51a5029ead15fb Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Fri, 22 Mar 2019 13:45:02 +0100 Subject: [PATCH 14/20] Updated pointing to ELK external service for testing and demo purposes --- elk/Readme.md | 18 +++++++++++++++--- img/elk/azure-nsg-inboundportsConfig.png | Bin 0 -> 17565 bytes img/elk/bitnami_splash.png | Bin 0 -> 44123 bytes img/elk/create-vm-elk-azure-last-step.png | Bin 0 -> 61110 bytes img/elk/create-vm-elk-azure-summary.png | Bin 0 -> 81931 bytes img/elk/create-vm-elk-azure.png | Bin 0 -> 54959 bytes img/elk/discover-kibana.png | Bin 0 -> 62954 bytes .../Basket/Basket.API/appsettings.json | 2 +- .../Catalog/Catalog.API/appsettings.json | 2 +- .../Identity/Identity.API/appsettings.json | 2 +- .../Location/Locations.API/appsettings.json | 2 +- .../Marketing/Marketing.API/appsettings.json | 2 +- .../Ordering/Ordering.API/appsettings.json | 2 +- .../Ordering.BackgroundTasks/appsettings.json | 2 +- .../Ordering.SignalrHub/appsettings.json | 2 +- .../Payment/Payment.API/appsettings.json | 2 +- src/Web/WebMVC/appsettings.json | 2 +- src/Web/WebStatus/appsettings.json | 2 +- 18 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 img/elk/azure-nsg-inboundportsConfig.png create mode 100644 img/elk/bitnami_splash.png create mode 100644 img/elk/create-vm-elk-azure-last-step.png create mode 100644 img/elk/create-vm-elk-azure-summary.png create mode 100644 img/elk/create-vm-elk-azure.png create mode 100644 img/elk/discover-kibana.png diff --git a/elk/Readme.md b/elk/Readme.md index 16c2bbcbe..a393e4a29 100644 --- a/elk/Readme.md +++ b/elk/Readme.md @@ -2,9 +2,9 @@ This article contains a brief introduction to centralized structured logging wit ![](img/elk/kibana-working.png) -## Wiring eshopOnContainers with ELK +## Wiring eshopOnContainers with ELK in Localhost -eshopOnContainers is ready for work with ELK, you only need to setup the configuration parameter **LogstashgUrl**, in **Serilog** Section, for achieve this, you can do it modifing this parameter in every appsettings.json in every service, or via Environment Variable **Serilog:LogstashUrl**. +eshopOnContainers is ready for work with ELK, you only need to setup the configuration parameter **LogstashUrl**, in **Serilog** Section, for achieve this, you can do it modifing this parameter in every appsettings.json of every service, or via Environment Variable **Serilog:LogstashUrl**. There is another option, a zero-configuration environment for testing the integration launching via ```docker-compose``` command, on the root directory of eshopOnContainers: @@ -27,4 +27,16 @@ You can wait a bit and refresh the page, the first time you enter, you need to c With the index pattern configured, you can enter in the discover section and start viewing how the tool is recollecting the logging information. -![](img/elk/kibana_result.png) \ No newline at end of file +![](img/elk/kibana_result.png) + +## Configuring ELK on Azure VM +Another option is to use a preconfigured virtual machine with Logstash, ElasticSearch and Kibana and point the configuration parameter **LogstashUrl**. For doing this you can address to Microsoft Azure, and start searching a Certified ELK Virtual Machine + +![](img/elk/create-vm-elk-azure.png) + +This options it have a certified preconfigured options (Network, VirtualMachine type, OS, RAM, Disks) for having a good starting point of ELK with good performance. + +![](img/elk/create-vm-elk-azure-summary.png) + +When you have configured the main aspects of your virtual machine, you will have a review&create last step like this: +![](img/elk/create-vm-elk-azure-last-step.png) \ No newline at end of file diff --git a/img/elk/azure-nsg-inboundportsConfig.png b/img/elk/azure-nsg-inboundportsConfig.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0371e669ac1a0f0e42cb99b8c160ca4060c224 GIT binary patch literal 17565 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 z≪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 ABme*a literal 0 HcmV?d00001 diff --git a/img/elk/create-vm-elk-azure-summary.png b/img/elk/create-vm-elk-azure-summary.png new file mode 100644 index 0000000000000000000000000000000000000000..b56ae5af31421331a1294471946ccd2544fd5115 GIT binary patch literal 81931 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Û!$8q3r-0lrYfKkcUK%R1G{KK8STZdVBNy~#2B3*FVesr-_xf@OW2wh? z$86#Y=_G>Kfb7y+?uT#UIL<)gD3u`ZVKkAQ_l#7rIKJNrz|9N-qQvJ5&*g`kf>VIY zrslb&TfgAl_V?oTaaKF#2r3s@T}Gf{>I#SuLqU>N>DPO4!HbB-sB$< z>v2N&H1gU%oH9kEU_PrC z#RFQ-1_Evp1zM$6*F?ncfziA-0l`baxME{qlJa(Dh)xmx8<%{Z?)ZBfqP6Gq9V0Kt zrL^q?c!Zc*?6zqCYGMT|Zk3i*@2W)P8`vI)1`TPk3#<1$09Z54{kY?i{IHOMVhCej zYh2C`N5fAc)<+dY^ml2jGZpglKuF7oDv*zA)q>K`={st%?oz5@9pi_COVuw6ug4rs z5TBxITeAd-g~VRUwlP>=*SyF5E2XD+825O;oO2wl&Y9Z>+ZbP^kFfX;L4V?QjX~+& zHL%U<1Dfy}hts&=GjRN3#uap*yVC1Ne_ zt)fR}uXShmaILF!2tXlAcAf1!e3Ya$afeTW#ipeKxiakqp~XoS(s)~LhmBjzqUu2n z6QSxQCi?|$1#dH6(!O+K8o*YDj1ylc{Znx1A^KP|o8@NrxCDKcI4PNelic%4R< z1|BkUyI!k0h|ICsd-`2sXttY~EmBj^&s3rNlr-7Ke-Mw{dj@^hWy@~=cWBZ7?$Dxk zqt-pz|4zjmRBzkkUW{2xokt9}U;MPj-nC@7*gp5m0dM~G_Cm6o`RYMQdzbb(J)~V6 z9K~xF!4;mKPERI(EMp~CYrieEB%WbTdp-w@q!HwucA^9iJ`p#NlV|tF9&~~?IzBnCy>qvrFJ1{ zPW2_VOi-^}z3rGXs+J?2Lm@L=m8%vioHv(zMw648dM|AHmqbr9wLK0#Wv`$-qcBWR zi2o3^YKt*_b*BK$L{B?HgIZM-8qg1KFTnbQKiE*8P$|eF6HQlwBbt~F7qrIZ(nGD^ zUAdc$?;7yURr@N3$a`F7i((mnfWS1bz@qaVAQ#6KQ+Q8l{EH6S zn0?zBNyklkRwIWwN2Bs~cG(}8G3)j15MY11( z{t8=5q)-k1g^&8g)Q*;M2+G+LrjBLKikHAz6S}ghS{Sbb1`u9$Mo+#Ui}|RHy}-B@ zh|{E5DeBLTrh<}7a5k(<*Qh1Iv8`%03Dx&?6yEMAuo;8TQEubu6IXXF`FY4eyu&KoOM%GfDCGqK#L&9+`uJQQPQEdUAub zBTqOJA5e@p@TSCoIW4>#nf#nd`b1&qb`Tc|YlV0KjgV~CNaxenr3#?X)`m$)2uO3) z@uA9xiEcj@1J`;jjXxguppeS8Y%s%OtaS#+fxzG5h1TAUYEG*%|6w2Ww3dY60vBnb zj6wN8L`O+S)RX0w@g9Il!CaYzaRqw`5VX%7`OZJUla5MNqMm8d2$#sCoQ$bNrN!1p z%5DJTaP|rPpbB=2^D1fklhsM1vKaJPJZta${l(~bRVCkm2=xZ&u`n-S;~*GrQ-2oa zd*k)Y2%0m8*V8S|lxlc-uRZJP%l>XJA=tINdirh z>?&ry?wb@pZ&2#tFDl{f5C8~cE6zp=TR&j^TC+K{#XqidV~Hf*wmlX*o8cx$xJ&dU zJ0Dn+#H8I@xWx6koIan(6o;f_p#($-#jRyI5z@4OV#=$XXrpO~#Vo~^l+lt|H%Qzp z9}o&1ePvOLinEprb_Cp_=z%~K!bfp1Low5L&Z$$(BO#}(FYmDU?SEH9? zgy{?|S)l#~@U;*RS(v)#DhfcuDwr#Ae1}`~)|OBaZ+&~9rl;VrHDC;C=a9{0%PlKI zlk{^_-J#Vqo*UI)KrRWR9?}x(2*yKN;XG9(kB&2)U+kwQ;EaQHeI*xNFZHUk?+@wZ zWRGphlie@{(fw{cG%BBPRUeuJOY=MoIbxr7uu@5t&a45=O@>&x6<-rW`l{fB>Nse_gI+cw$Jtr13lJ!I zC)2@d20bu%SPpXI0y5*8N=8{L=f+wZ;=*J}{J)og<+6P2-($FS9CE`W`P8m1k z198KT!UdeY$1*zMr`j{~jc9Kb{s7`)vDNnb0e6hHGhs|9B7kI%!_kiV?~I@6r-*IGL@?teO9kNrP7OR)xL| z*6{TotY^O`ZU@el?~#mKgC3!Zg5-k(zI!JQ4{U}c|CQzftZX*JNTdHb-v0OW{Qqjw$KU;bDOy_HNzyIN_Eu^A zmi{k<3A^w3sE2%3B&*CQDT=!YSGMiB7E$Pgo8NqP!_TJgs_PxlpR)Z$3^4o~oq5eN zA&i2~etD@r(mRWLSUEopyFZgM65XO?wX?fT3vaVB0?i~sd&DX!$vsm(Z5mYo8Zr>j){|*0KyOpZ(@o@HT7vhw3 z?9@9e)Y4(&DQkZPxh`@mo2Uqkm>joRfc>3ec#o*{7@>5X3pfXE=lSRVdYJwlX#mi{ zhRmY~;gLJD5i0kWiu|LXb8|{9{HuNrw8e=<;%Q1IY}@{ zWPuk2dN||A0q^}vF(pN z>n+5I8k#3K8a(TS!bSY66-=|h;xbHDM45O!S0o+^DoL|bjD0}nS#~2Y(b2hPwU&X0z0(%pN#RvmdJF3B= zW!p1erDdvYM`FU);NvK@tJlgN^&Hf4j;NZW23-yE>N)a>(qhVc0TJylQNBb}(hra{ zIJnAB0fRXF+YKZpS~+`*mC6fC2T&wY2cK29mjh{~D~uJ?;9J8Fq`?HrmDk8TA{E*n z6NVGP!NhG+AjrLeBd&e6{D4OlZd>S4wN2&!?AlcbL}zWj9dlGfDa7IWnS)=>~L z57$A%RY(1P^g00q0ytm(IS}~^4gtT8uy_e|RnD%PIwE?6z3E9S${9hgilQei&m{vb z?yBJubIB&nGlzaG36N<}A#hjl1`&8zK`h^$vr)Z0oOZpM$CUo3`saW6?(p!{lK39H5y!$4zq3Gp@OSVi&4o!(f&lj z$$|=pn*=xOO;}1Hh@0BEulIO8gr>#}g=|u*QaML?h|) zLuw%v&b7Q{Oz?Cc*X4JRIe`Rzz*vG|VQa|&98!NG{|1Zm`7 z$J6RFcWI0uET-?EH+0jWF|g_Cj9OwD5SjhLN@zpW***;n5%s@dTbs}N#RR_PajC?USp#>X1Ik6OwABb2|FVuAe1(w6?tK~80Z-BFd0*K05T1o{>|TH z*G;00y>3U%8kVG|^|5^z0zAC#)@W^mGK$wbN33y!#o1*!B!?-Ol!Vpt?7V&XOjccvg?%mS<;24+f%6dLb_xHsQgdARZC zR5YwLT4>f-pG2_2V?}MQo>m?R;-KwPYv)mIzTFy=>M6~pDq;;x<{p}ec^haj@9wWI zth}%jxMGlyj$H?pjy7(?MSR>E6sg3?Odi}1v0de&(b2^3=?s1vIS*!e1CdH657HAu z65y&dIJpnp5%Z`(0v9VL zoq%s34*4%n$p>s>nD+^Mg@N?RE)7)Axl`C|v;{}Lq{OC$&JO&6?!ON&>uml{*U%RW z()DIL+!@SVnzTyz`r+f8K7)FfTm{&fMf-xUE{X0IZ(_KnMoyzOevCHOLgt@Z65`{P~|~ z1;9RXD9a%4@*W$O@5NWyGc~l;Cb;~UV(qQ-6=aW;ji@h8SpD_%8 zNJktX{C~y;oS1;zy-|~`TEQgFgxGU!T#vD#zFr=H8FR@m4>nQ1Siy<0U+sSWT0N1( z3R5oG8G9EMJFQOU48T|xgeTV3S&xB0NZt*?qq8BQirfN}L{|ea*F#_QR?;vfGp>t$ zz@K+oJ}m%iW9{>Efu*sIGMs7GWt1Ul1Au=gukEX`ME69TS(}xk@0gE1yYPO%EBK=8 z^|{b1;K0g7^q?QsvI>=X4mjWv;qJVe$ETA;qLbxbkjbw^1CC3`va>BiU8^Q4UsI&|^1~wOS2v@tdczV|ah)<@_VcU{b7DD`Et3|*B>&;n= zH=8lUj=+3VNeN+!MuPvM|Ccg;n-O|KZDMecBOPiTCRICr0q&VB^a?+NryK)Rp`~UG z+JBrMI>|>MUQVR{XXnQiuhC?VLrT2ZV4}PoKjY%$7FZDLI znmL?dl|fk|(g{YAME6uSSRaL1nDH7TX^S@p0nf77Us7{jx{(e|t9je~0%$z9V}vN| zNXWB%9g2F=`Wy3a;U~2QtiImcaI7+^kCaA`K*QRa)IE-(YIHf?w!Ivy1GNo`v!~tZ z`JljWD}5iP0twB!4hEM*^MZbHy!u?LoAup95({O8-{*qA`cGk02DORLY zG62y3cH|*(GyiA!LfU5sQ;#(OuL)QW-vh>ZBWZl&Bt>o_mOF{+FP7%b%7-CL z;9<>Wc2u>1gL_~l0K1eqKa|Gbe2G8&nC#{`7~19MTy^nzTP_dgYt;3+5cEzrvAmq> z5ni*I(GysuqQfA)L%2Jss<>V8A~d{wBM;G1gqce*wBwTyp*gnXId4VT$W`ob#`XWG zRaE6d8yH0Rej|Aj?MFjci^z2ZOu5VJcx$pSd?yQ4aS?RIy$b#-RXMPf;sC5FT2FLR z|5{bD?%cU=Z1ts}!m-IKk*&KTYB4aTawXJUeNfb?LdEClZ{X&`ek1cr3mpxX&oML-nahO3C-c4Q5`a*E6p- z-(GvSjRk{_{UrM~AKN%yr`a=tF4m4Qg)XdqAIRKDnQr4r44MJ-b6o?j-gjpIdoS2HI zyg~vaf`1Oiw4u#1X;)fZnb%(>>O^_-b=q3DB`T|7kc!K0q9>##y!=vYH0h|j8eTk^ zHJ=fu`N4e?i*a}yERL!d@ijU<;X{w8Ea+R+!`s;r_**P8@r*%;n)jbhy8{K6h!lG( zy1AM#&bO;-a|o`}SPvQt;>rC8CG50l`Z-_DouzQ44+I=$U9;MOQYP?Kx+o$9`sQSV z)6~-Cy|{9Nm54b9Q7`xOJZ$(fNvHbo%gsl#23I z2J>4!974kT1#Z4tx92B;P($%tg(!O*14}c#&eiWt(n>lO1cU@O+2-qClZp6_efQ&j z2HgCvdnhAM5_L;j>2})>de`|KocFGKqDxX1*Cwfi)%522i!MnM2fj9(v&p{5wSTD0 zk|9QoGAK3_T}|0W7f1&X8u4pd0Pz<>V;&~8yJl6LW_Q4&2giImJD^C9okChL#9niA z22+CHbo~5#fXvT6)|tje9rQ{&%@e4 zJH5`AFffQ#GaWN)G7w&E#|EbwH z`yz2Qd;ajFiPeE7cac8r@ftg{z-1sdx%Nxk%=>g~MiMAt1g(pD`M=(Gee`%f`$O=$ zlQLEfsK$G4+G9vJZcmRT{jSB&UbjwxNf3S`+%Gcu%K{l+ZXj^pImE~M_QH^TfBC9* z^vw}M1Jl_61BH`9%h9*{96^#SI=q_v6&I%Ub>3KsA_}YIl-}{qWc()6N;?q}8BIVJ z6KE6DAU2utw+a(%oJuOOQBtXlu%7Ul|2O!ew*^|yDd%5P;EGp^rPR5>=x@@TQ3YcJ z5Z)nvl67>CknczZZ4}T3Znb!L=SU(i09Gq(TdLA0q{PW2N@4_^M@CZZWG%*!i(d%w zqjkq$erpH-wG@T)$WJH`?}MG>oB0weD_!7KPUx+67EqiEGxW8mNqg|ucdpQDI)5bq z?ifG0a3Sfsco1132Dbx^6d`*%Lue_IC`a^Qblvjy5U?P~(qI^~T=eRu-rzMQE-~%A zd#SJ|$KvZ6bLKxPl10NA7+BTQRZm>u=AgmT#gD8sW$j9#a50(`a)&EXXr5K$NY%_% zi&|`-W_Z8`*ZdI7y7mN-X%qznypvfP8wFxI{5xh;k;HwRKNRY zyGe%~J*u65UeVTQSORTNw~F?XM$g;OGyClFy68uk&|M+9IYDQ=l%3hen3p)vuRJSm z{*c_mcH|jAa+K6&rD)U>v_+grDy@dCk&I+WFa~LoGUJmc6ZY=iOlzRrZ7*KU-zQ4@ zMC$PDR1I4RpI4$>^#DDIIYSPMoz2HlX@OMdN{J?#Yvg<=Q z8VZsJN*fJuarJ&~U?X$V%+Ba!?KhZ+J1KdqIQ6l}laAQ$Ao^?c1>g8hJ~f@2JKAU` z5^_uLG^F6|wNsQV&{6LpS2&OvQSgJI6=VK*KZeDdH%`=@HcvR07;HG*nb@~ms>Ats zKN95n=XT{~FK%W1@mtjyKqej~lHw5_cs72`{YWQ!7XCv{FMV2TQ5R1{1l)iNS0;p% z0%VgUNYO2|mJ7j$ZvuCSxJpGs$&_1DaQ1)UC|<=g8FUuqV9_Dmtzf0t$PVx}%n|Ms zj>(hvEdD9{OEno-Cv_26pImchFe3>!^8=F_!**72r{nl-s_zLbFCTWTk;B_QNSo>T z#L3Psp1Kg(X_r$BBV3h?Q_!ivxP7ulg?Ep~{2&~Y-au)XB!0SJh73<==tYX{}Xh^Tf;{F_PIeuf>5v#3<+33eD(=R!?++C16h(i<{ zPK&o#1pd5RApqgbuMj5=syQg^1ua%`6i>{vQp9_VSAU$ZG6_zIA7JEDF9t7f#!NsF z!SE*F06eyGK5lPzl8tuTVlA|+mTkQDLVTBon98S-j)nCy(~QEfIV_;})~0_*|m3j1QjDS71)DOS)n5&(MRvJ^}BaJEWi8lF{g6^rht7ohjKJ>Gl4 zl^da4w3@_zy~MG(Ev0DNT^A#FHP(SNuMwKFG@P1y0#Nh-glvI)9|&KZOe|H8t3<(K z@jOBg>R4>n>f5Ua#zYy`QEk~-ci{RFAQ{5B=I#TF4b8anjTwY0XUApF+Pir7lPZqo z=7usBdT%k06-Mo25Z&07 zA(fy6GMV9uW|?r6;fi11>dMO10`oXy_OUhbl-u!y8e$m)HgAk- z*4+^Q#(e&_4Uyh=Y&nxN*1Gx#7{I3${{R*=%AL<+p-G#{q(|49 zNdS^}`43B_=`Jv<6w?pt5KMUe050JE6ZbyY!Ro;z_FPCuwr3jg-{uDUYi%6qXX7l= zuF6|va^7Q-ctcF@H&+tF31~M+dH;Ut%{3M;qZ(tW;`Mu{ce{tyCITS7#0>%x-ac=H zc7f8LB}hrU{ENr_Q2&LM{Ajz_I`zY`SgO?HyI81sm5qV9F?_y5J+e`2;~2C>+fr;y z^EHAB;WHchefvzsa_f&Qu7RT*w8t*@c3J`n{5+-8-_#^mO zIv_D#Bi*`_chF(~Hl*p17pA&W3chYN2bes7jet0EtYrcLG~HLntCzbeuiF z!y@qNl%#>B?4cE&G62CkZMY~YiNVwIv6p|6_xApi zwK|`RE)W||%VSPJ=;`_IEUUincwT+KE0I+7mM+w#$$N%yc2|un%TDKWBdS-6Lc#c3 zdYgTLydQGqmKENGKfVgrZA(%C4 zALt->*y_z6OUSwsLB59;1E7c+=EI)D<9uC!LBc}^d-MbE)1O|GmL?Z>}B1hOH z*6sXJgAdkhbpmQcZ#>Jf%FM|q8VULWqqML2gX6Uk6rdfbPPosd?hwbW=AWZW5b^nh zZNs2%NaD)>vK5t=i<3!U8&M6)G`IUlH@TXQ8^A&+RJoaQoVR#Ys}sJ~rkP_2>&3(vwmOq#oO zhKSu9D`%p8q3)hXQ*Tqbjcb%~Jfz2hY6nn(DwaqWwJh1=s)BzznnPQ&87>k^%1pNZ zA}Z6QL@ng0MaGhRqfqhK(97VFKxN*!03VVwbm?ALsB|IND!`Hek>5O!KPK3n{O>Be zoT^~C{p>9N(|hm%Ce?kPBGMAI$nS~@rO9Aeucgi;d4NpC;yT zo4+a%wj=`*A;<1qPk54#a%JC{A*=7vrDgpZZ*T)>gk+MVARWAN{wzX7!h%L{lkPNl zNtUjTrE`oBd0qEZHz~?8$3oUbBdKspn$cdFaD;g*;04tXku?5PXYgW#@~oo3P7Dkd zIU3f|qn=3-$3B=K^_@bpCi~~XixEltA)w_D9tkK?s7nv6qAhJ>T>IN#1;lz^nD6mJ zE5a~&Tu@m#zS_si5)G@eGG`=x&~^vwf@1Hiys?d!znquW3;WL1*Kw{?|9j?~-hEst zDGvv6AIT4N`L0*YW%bTU`z8#>u+0|$9|?LgW&S2B!eI~`T34s5D<7X?%(7i4=BMF<3=1N@g`ph&6t3wPLmK-=Ihye1}4X z-jZMcN^x^U(mmzEP}JF>5k%OG3Cn2abkT}I!zpa!P%NQ_N~L_5joR(#U2Cqihu+4M zi#L-?pe>8VkrtRMi-yLNh@qq_V*9PwISVjx!nM${rPon**xxE*d z$a+AYa zREcp7+ac{uTm)3!RAU$$=6e}>H<3IyDe>s(D3|~SG@?huC@i6;KyDMn7@J@fFeRS7 z>)YS1$H{K8HBfVP&Ey%)YUCGgU4P-bhMzy@Mvstm!hhxJZH|P=e!}wLPFS!>id#Wc z`E=}_&%8X4UyRI)s`vG+@147@mO^s;{QI(7FOyYKvD}KR{OrXBTr@mAxu$3rPOS1Z zWA0k|>K{O;IIc8-@C;rhH~CZJB<8F6%Ojl2Qf@DV5KC>l|- zYK0OVwQzM&#dr2nowy#I2m_Wq5%F4Sph;ot;La|Khb|;xWuX=-K_e>cmRUhb(M&5m zO0D5Dx!{sA%NkLElq_KaP6447cy8P{{@VbQjvJAAlXr;{?7BasJeJuYDIxVn30Ln5 z3|)hGoq*x-?asZtk^_SwbpAatS7{svMf6T(MenFC@j68~EY!$shTv?L734a9^Pe|R z?8vWQA_)vwx`hHT$F)|zTw$jk9boIxJIYTpsV+!x|M4X;6MG<4K-|+As}7J{o?&1@ zQ_x?^2b_$QBEFvMg_R>o^IKz>`77g60h--PV_Fk1?hRkR{p+&$D_9}zy;wu*8q*Am z|1u3a|NV_(jR1$yrkqh+TkLyEdcO}iFmKWesDOI@ELyZ4<1zk=Um(dOG+a5F-Y?O! zL8^x-n(TbzysdHMl>ya0AybaNCF=J}7&aC-+9?;4C zj|wWZI&S}=w5CrWp%467)`%!&^BvYa6J=YbM+^G2#7aL?5P@=}8h`}am|6S%HShb& zwu6`VuVdbeah_Bj{WHM83ph7c0V7h+(ZT8Kj;Ls|M~?6E4X2Msnm2pk4fJF0mdRuH z9wot<7u6CW#Z72ZfaBPE$v?#7iV{y-@6R6DGHu3qa(DnGDbTQ>8>>Hj6pZ&fZCcMH zJgo;sDfz6x<^_#b?Dt$93s!VL0;iNcClE@LfK&dJcYjJa17fOyCgpaSwo&@MPBqk9jaT;=H03I_U3?FTjf20RImmkE8|Q!$JamrHdbml?O~jKV7E zhp8P8|LGS`{cTy7t>6CT2D^{9xL>dD8gtN@B9dRAOa`7mpXIqte`~PP0!Bj~K=z9< z$6Ka=Qo*8n`nK^C6=4l6$3zBaoy=kVzouYiwQ2+hZGOjZp(TFo;XK=3CbTbAJ?UJF zNu{K(9MEb{`)&~AJ<(#7(Z9ChlqQE)22pS50CJkir)n^zQ~C4$>_WKd7m>e6R=l`(;Vrgg;BS&e&qyVYwQd#^ws>u7Jp~NMpMER)HZ84o=~XP?I^tL0ZY|lbyzSO(U?SKS_^a>d?N`y4Uzgv_0_Uu^uU{xPz`qmv zq77H{yj~xcja>o;P;<@PI$_;}Iof->u6{Uui6MS5~>*`6D73LBHJ>T;3bZ>l~IN2p&6^#_1* zkc8jabqA}9j_37_ipzxxXButa#lmZ^-`AO-=gr=kwXy>PycD#QB*>7AOIfPpnCio4 zk6~R1v&u=i_DXxc`+Ov8k6z_S*rWkkNVWe2Pwqt>b#XBk@`ofab8fT>S}@S*br!g> z0Xiy&FK4@urPtyDahT$(<^H|FogcQ^fV*O&W-Xq9fuZ=ecVViJsg=vcfP!4JbBPB* zxwSBu_1TPrWH_udBW7o9@|$W~$TnP&hBfmq=%{zEM(@kyR=w>L0+Awz<-UG=OT03G zHWT}f2h@w^l&RI3BT)$_6`pg!xPro_uV7(#B26BnmP<|z(^QW;TTB+lAKdSY^B$Y1 zv6M35moN(Ul%QvfI$5rw+!!|Lgvk0ZF<3FbE>$84@D4gU(udZ;O||tZUz0||UND6RY z16KH5=@;jRZG1_cc^3@r+4?uKh6CA2(SEnoInf;S`WAldTRU5?u>iYMaaJs^LxB(Mqih;NtQDG|BGWTi?dvX+ZovCXA`6UVq6 zN=a{w*C$ZbM@Ra|^WbGt-Q>w_eTsU5cfz*T0ZM7Kl0fDu(<6Cj=QaC6pUKb(iawwu z6`<vl8eEH*E3BMw8L#!;q?C<=sWGZ+7oN-rMO!o2zD;5v6ZoA_|!d zXa}{wK0uAmQ9ZY6p6CJVKtT+E+?5wxdd~Ef((DGR#K%<$W zhnSa)*oQNGQ{10d**jQ@lWQ9dPVjP{U z#;Iqbx1{nTg{~qwoZ4P;4&ut|Rr35?GC z4MgkE(wnQcfU$|_NoYr#jB0ef!R?j@&Z`#9xA`|e8UjXzw%>?3pbjDsplB|mlW71z z-)VDf184x~%QSglAPL4M4Mu2;e9QWgl=0VA;XfqbHt9op@!TEeCP7RKOajob!Y6pc zZD`3@+*zqD|91dx(DxDSLaV=OHzMzM7Stc~&JP&D{c(93W~}QzzWMp``{t)}CupjU z;ZObXiuhyl*Vx_$A@UfewsJ<<_=D!JV<vd%sIu@)yA?OG<>JQY(trR8^K%urkL(-v`@WF8*Kvu`Cw=@A~X8 zt?yAwd*vb^P0_RhvoQOL9%AA)mCGRH zJ*^G+-wKSNNLdAns%nY&rYEeH>Ik}hko@YUSb68IrPIAZKZ^J)cdoevfK5`((-!8> z`$Vrd65BPe-Mb@R&nr%Sre3eM+O;#LCiE7BKd#~g{Wo>J?AYY9WT+c73A8nMe#p^$ z0Ja$dafYZLstM>lb?1I^ZNv3ke)+6kA!MAzb6mJNV!^A)9no1j+L_!#CFfXOCa*n<&cU!-vhfaxYPyxR3|5T9ld<#|eI0_gx+9&mhS3VqViSI&Y{Iosew z1^K~5_-WqNqet<=-)<0!w*|t?C9Q|rV~!-5E=JZUZp<|tD_t-Uw#=Bg$~00hT>wdj zQ?3O53aiA~h__>jWkl*%xrs6|Ob;x@Amn(aooHIHg9U>=4w+lCbh-qI5XFOn3;e&_ zVVXcrT`Nv*V&yVDiXZTqMKkaSpXH$ogILjl05t3$IPqVJW3s+~FNgDB$_SLkA=vS4 z9xm{~#a~j?FXiRqro4MJI^-YGHbJG3EOzuID54tx^T@42Mh zVBR^s5$`9D)1HxWeY5@HS5i=S$Dfff8Rm~4Nc1>++#^!(J4dSJzs30S2cqJm_xqp) z7S9=g#K@RNA*xl$$35H8+`9NMnxCSpuuY^LjgU&v&pKBP?<|0sPtGd5G!Nvdo~g|{ zzsr-DFVG{T^!v=!N!YGw<#<}>2zp$RCk->bm#?Z!-F8TEKS=|(K&+tzy}ZCyE* zbuh4j-$gvo6O$o%*1V2Y0>%i3s}gWEKS;oMZzt1r{jw#VaD$Dy#_rk#N3hU?=kTE* zIH1eLWKs>9^eiJf-@Sv)({G^#sJ7ZPoW`we_WdS8zC#Lz1>*+lWGp-+-$3@W!1Lkw zJxin-p$W1leNQ>-;ejSL9ic4~a#|(8rP)Cu8L4<14k2Ag*IFh{B||4mg6N@n%nEX- z$9G6DDOxk55)npKGX_+AxKb*}*tgM_pOnCkXH~&POyCK%J|V3mFe-89L^TrUOk~Hl z){N3RA{<)2WLK^(V|!hk*hijay9)r;K@aM9GeT0*_1c4V6BE6^!OjXP#M=b#f_-epeD~ z70epbO3Mo3kd@d{8j7u8;!te&M3R?iQ6($pYB@J{c2~xoGc1*q&9obT>lvwYycqjY7aZCvC zT*le~qvbmw@apyWVm~o?pG%qVBcZe;5-_&Z*+t5O6=rc|S{UZ0C!sOF!Ee z=rxMV>65&fu$(wBE6WcQH$TxMA$@qs3N*5bI?a2@YLoZ{`#ue5hLo}Z{2qR^X5yvW z<@Rg$Fw+x>>t0j>0=35vJTRRmok~1yO!B0CtZqVv`elxNcbO3kfNO99P+*WC@Q!uz zj78U{JpHK4bN_@598S%vxAQ!&4-0V*{iQ=ekB9oM$k(ZDg%!i29`F6E@4tIiFPH*m zBXmV{|InXk|ATwl3;)L^FuCxb+6w(Y9H-2(|GY7#{*#jYFDCe(K=|H-mr0c8{cSrU z?Q1+3YWnv*W+*0vd+TS>;C=rK5Fw02vob`;zy0}f691tq!RKn9q^WCW5~X_U$BT-f z8%00bzmdo98y*+CpvfrTv&iN~PSqf{GddHi6pw4s+Yn;UGAyf zT@?4cveNC@?`+BM?Db}&)o9-*7Yh+f6Kt+otS-cg;Q@-%HEvm|#4q%)$H&*z#naV< zV+1u9g4qfZ8!#&L2BG9jQiQUbfThXXFhq))z7Cc0S>1* z$F8pl+j~mon5~1og}? zdx6e@72{IXo1l&JG^f2M?vdA`uxnvTQq-PgO+7uEuirHMzjOd`bt?(7HD@w|Ms)Hi zxPcx;KluhSQVi@}Sh(jO)e?yfueYc?K3{^Tp|Ce3!T{(P^ym18y-rtT;mjW{??=C& zC|sB^Z^$_Ql%e1mVCFEy8p}34$%f{!qKvaaFhe!Rj1shTtJe-}g)WD!PLMAosd=u3mKS2H&vpKB~t>`)-{N2`Taj%@oYOw{_vLA}SlW}gr4 zi(Ab7^mMy~ngcKH)U5@>oJg&Kr*p_r5)vl=H&r;#VIt{AK~={15a znN~gZtxz=ZykROao37Mavckzyb+ZP3tQRIqiZ*M^=Q1#$?%k&S74)To!H_eYfz1Zq zC-J+O$$P2n&<(++(fHt|5w1yQX`j`o& zFFdm>37ln>in%tURv?7Qa%sI_rB|oTdU~xSbMn7n(EVR!*BqM z?>BJ-ssReoUTQ*4(@6n_B$W188W2^e5T%Dso9$UN5>|=6FBd+!{pDc^w_p>}QuLGTASpTMoHcx~3GtQqHp|A!) zBq2SCaL~mjW-0!b9n^?C21!dx%d!Hqq_QJ+u{@>ji7q#NkXd%wujEw}_UVE8tp22k ztU1KEg#$Pd?EhJlHwz)Fl;%(05YV=h1Ouhcqu^gxi?E*-&&$eV`tEQDM)XqU#oCpz zF206r;=%oalOD276kbj0SQUtVnH^U$dUOlVh>WZM}Oed4VHRazl*1?l8_RddoJ zyqDyUlR8*vvDOkA?$TeRlbM%yJN;+#wpkdFXZQ31PeZGM9ax?&w^HvrHd7th1ZLMM z_&dMzop>fg8qnnYIs3;QaZ@ipHH<{4#_@hWCQTEDDq3C1_!RRzeU&z6&OBHap1)4s z&s_g~QsK)PeY>=re%*!ugN;(*p_y>;q#(GK&u zO~`d@4sUb-n*^~_aHK}7dFsI=tSj;`w42ZtOIrzAT8&fNS5q{S0m4!Hze|foXzl49 z%`KpagoysmzA!7ucSv91>ly-0pfadPU6YJon0V7=Hi?LxLhSw^T)cgJWP0wKt+d<| zT9NCtqwxp#%4kHlda`#dq%k$-0|x$v%~~jmlyLqM(zBRz#2^2;6wi(a^YordVkJLA z1v1q;NlM@8Bst|l&DIO8&GlUu4hY2MGXNeHCs=aq-5G2$t#JkFz+4b;rxRb9e4fc) z6_8Stf0*un+z zc!og<`}As|$6K12;l!(lj?a~aSIu$4tsQ`hXs127!iVRk^?u+yNoggAb+wY4{JlCM zu5*f~(l&u1pT`6qEQL0@>Vm6O&A;3_;1gMs;-A?5nHhLb6U86$3S)t!4moO?vd;As ziFGr9MZA&(3JQfHH=hfnhngp*MG@ucn3KkPmf_Dw@Pk0SRck*3<3sbz?v$dC0uMH) z>|LZ^h#Dn#?_g&VZ(QQ4X-A)|M_)kwGuUz`BOI|@BZ0X*A=tW2nM8rPPh0Eu8 z1{q_JAJg!^{zfucjhhL14MkfGpX(3*7?!V=G&5dmKL%>*QcEfmKncwz%_}~07>f|I z{@N>^jC?mcOE2=izX1Cx3EpZeHS=J2>%^`pKLKWz_0FiiF+kDh^B7s^!wUk~ULPAR z7bi*z%OjK;_z(lS7m!lfp76?LXHqdmXx&}6klrTEou^5kr(z8(t#ZQE&-r*oZ&vn6 z`;BHBHw)F%yzHZqs&aARk|LEnWk8J$6xn7|CH$m#@r%?+c(G^@hNUY?_$?9ryBca% zDm>uN479K(az4W*;V6y)qbJPdp*!Aw=kMPA+{gD~SWB?HuR=Qw4btZukH5e8Kc+g= zbxAPMDEa(-!kZ*-A{ruwQs&&n{Fs*HxTlH1h|Sx($vt3mhX|LY+`P(ck`mD()Rs(* zT}R0`QxA7=cvt+K^gbLSu4}D+G!x&Nc@=V4!~Nvk!~XX>7cm@6OcHk6IVPcl5~g#T z2|t(=PT9S34((1#4vgidqIcAK=HspKyF-pm6(!Ff!ZTj)S4H!(uSSgr=sP$n4AT6} z^a<&NYpZ0Fk8zyTjry=Yn4C&En5@{$uzUAOJXV|%ngs^j9>*nC`F^b(_fQ&Eb}*4a zqMlc-dbct|8F>8Cnbi06K-$T1{xFjF+Ui?Nk9XY3qL66t*38V%ka$Q1w~`$guMgf` zNO!A+H!>ws``0_||Ku+T`0v+va0YM{{oX;%%YEJT%VRg_^uPLZmUFwl^q>z2~j$oqU`@H_V9sph`p6eG?W4`k}_H>@=tCY(=A6j|q&k{UkM zza!T$XWMT|FxjXxj$?hP^IdPl$9+B>v{OQF+j4CHw59H8(ZH z_^aUe$EiLRJD*6N)0Po~fltjf&mgv`M`JQ{f8p^qH{n+ATJhnAG2{UX$D3}hb8)Ok z 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

|39nehMbK^YhJz1Mtx7AXyI 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 DhHR>Q literal 0 HcmV?d00001 diff --git a/img/elk/discover-kibana.png b/img/elk/discover-kibana.png new file mode 100644 index 0000000000000000000000000000000000000000..3977042c7e14e0cedc00a52b86d41d2279c25b92 GIT binary patch literal 62954 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 BH-G>D literal 0 HcmV?d00001 diff --git a/src/Services/Basket/Basket.API/appsettings.json b/src/Services/Basket/Basket.API/appsettings.json index babea8454..fb215cf56 100644 --- a/src/Services/Basket/Basket.API/appsettings.json +++ b/src/Services/Basket/Basket.API/appsettings.json @@ -1,7 +1,7 @@ { "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Catalog/Catalog.API/appsettings.json b/src/Services/Catalog/Catalog.API/appsettings.json index ede3744dc..f56f4f3a8 100644 --- a/src/Services/Catalog/Catalog.API/appsettings.json +++ b/src/Services/Catalog/Catalog.API/appsettings.json @@ -4,7 +4,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Identity/Identity.API/appsettings.json b/src/Services/Identity/Identity.API/appsettings.json index bcb9ce3f7..80dc3a50a 100644 --- a/src/Services/Identity/Identity.API/appsettings.json +++ b/src/Services/Identity/Identity.API/appsettings.json @@ -7,7 +7,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Location/Locations.API/appsettings.json b/src/Services/Location/Locations.API/appsettings.json index 8cca61af2..619668c77 100644 --- a/src/Services/Location/Locations.API/appsettings.json +++ b/src/Services/Location/Locations.API/appsettings.json @@ -4,7 +4,7 @@ "IdentityUrl": "http://localhost:5105", "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Marketing/Marketing.API/appsettings.json b/src/Services/Marketing/Marketing.API/appsettings.json index 7c015a8ca..6abeb89b9 100644 --- a/src/Services/Marketing/Marketing.API/appsettings.json +++ b/src/Services/Marketing/Marketing.API/appsettings.json @@ -1,7 +1,7 @@ { "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.API/appsettings.json b/src/Services/Ordering/Ordering.API/appsettings.json index ea87d5b07..4865d62b1 100644 --- a/src/Services/Ordering/Ordering.API/appsettings.json +++ b/src/Services/Ordering/Ordering.API/appsettings.json @@ -4,7 +4,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json index 6f1e21d06..3f6239256 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json +++ b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json @@ -2,7 +2,7 @@ "ConnectionString": "Server=tcp:127.0.0.1,5433;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word;", "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json index 8360223cf..68efc2800 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json +++ b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json @@ -2,7 +2,7 @@ "IdentityUrl": "http://localhost:5105", "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Payment/Payment.API/appsettings.json b/src/Services/Payment/Payment.API/appsettings.json index d7ec8301d..e47377a06 100644 --- a/src/Services/Payment/Payment.API/appsettings.json +++ b/src/Services/Payment/Payment.API/appsettings.json @@ -1,7 +1,7 @@ { "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Web/WebMVC/appsettings.json b/src/Web/WebMVC/appsettings.json index 077fda891..ee80b8b9e 100644 --- a/src/Web/WebMVC/appsettings.json +++ b/src/Web/WebMVC/appsettings.json @@ -13,7 +13,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Web/WebStatus/appsettings.json b/src/Web/WebStatus/appsettings.json index 82331d00b..efb2893ca 100644 --- a/src/Web/WebStatus/appsettings.json +++ b/src/Web/WebStatus/appsettings.json @@ -72,7 +72,7 @@ ], "Serilog": { "SeqServerUrl": null, - "LogstashgUrl":null, + "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", "MinimumLevel": { "Default": "Information", "Override": { From b449dd20120347a30be679015ada4084ecf12b4c Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Fri, 22 Mar 2019 13:46:27 +0100 Subject: [PATCH 15/20] Updated pointing to ELK external service for testing and demo purposes, documentation update --- elk/Readme.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/elk/Readme.md b/elk/Readme.md index a393e4a29..dddeab3fd 100644 --- a/elk/Readme.md +++ b/elk/Readme.md @@ -38,5 +38,51 @@ This options it have a certified preconfigured options (Network, VirtualMachine ![](img/elk/create-vm-elk-azure-summary.png) -When you have configured the main aspects of your virtual machine, you will have a review&create last step like this: -![](img/elk/create-vm-elk-azure-last-step.png) \ No newline at end of file +When you have configured the main aspects of your virtual machine, you will have a "review & create" last step like this: +![](img/elk/create-vm-elk-azure-last-step.png) + +### Configuring the bitnami environment + + This virtual machine has a lot of configuration pipeing done. If you want to change something of the default configuration you can address this documentation: + [https://docs.bitnami.com/virtual-machine/apps/elk/get-started/](https://docs.bitnami.com/virtual-machine/apps/elk/get-started/) + + The only thing you have to change is the logstash configuration inside the machine. This configuration is at the file ```/opt/bitnami/logstash/conf/logstash.conf``` + You must edit the file and overwrite with this configuration: + ```conf + input { + http { + #default host 0.0.0.0:8080 + codec => json + } +} + +## Add your filters / logstash plugins configuration here +filter { + split { + field => "events" + target => "e" + remove_field => "events" + } +} + +output { + elasticsearch { + hosts => "elasticsearch:9200" + index=>"eshops-%{+xxxx.ww}" + } +} +``` + +For doing this you can connect via ssh to the vm and edit the file using the vi editor for example. +When the file will be edited, check there are Inbound Port Rules created for the logstash service. You can do it going to Networking Menu on your ELK Virtual Machine Resource in Azure. + +![](img/elk/azure-nsg-inboundportsConfig.png) + +The only thing that remains is to connect to your vm vía browser. And check the bitnami splash page is showing. + +![](img/elk/bitnami_splash.png) + +You can get the password for accessing going to your virtual machine in azure and check the boot diagnostics, theres a message that shows to you which is your password. + +When you have the user and password you can access to the kibana tool, and create the ```eshops-*``` index pattern that is well documented at the beggining of this documentation and then start to discover. +![](img/elk/) \ No newline at end of file From 0706c724ad1990d1b8d59c18a1ef1ad618ec4010 Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Wed, 27 Mar 2019 15:58:57 +0100 Subject: [PATCH 16/20] Changed default logstashUrl to null --- src/Services/Basket/Basket.API/appsettings.json | 2 +- src/Services/Catalog/Catalog.API/appsettings.json | 2 +- src/Services/Identity/Identity.API/appsettings.json | 2 +- src/Services/Location/Locations.API/appsettings.json | 2 +- src/Services/Marketing/Marketing.API/appsettings.json | 2 +- src/Services/Ordering/Ordering.API/appsettings.json | 2 +- src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json | 2 +- src/Services/Ordering/Ordering.SignalrHub/appsettings.json | 2 +- src/Services/Payment/Payment.API/appsettings.json | 2 +- src/Web/WebMVC/appsettings.json | 2 +- src/Web/WebStatus/appsettings.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Services/Basket/Basket.API/appsettings.json b/src/Services/Basket/Basket.API/appsettings.json index fb215cf56..fc8fc544a 100644 --- a/src/Services/Basket/Basket.API/appsettings.json +++ b/src/Services/Basket/Basket.API/appsettings.json @@ -1,7 +1,7 @@ { "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Catalog/Catalog.API/appsettings.json b/src/Services/Catalog/Catalog.API/appsettings.json index f56f4f3a8..cc7b1b1fb 100644 --- a/src/Services/Catalog/Catalog.API/appsettings.json +++ b/src/Services/Catalog/Catalog.API/appsettings.json @@ -4,7 +4,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Identity/Identity.API/appsettings.json b/src/Services/Identity/Identity.API/appsettings.json index 80dc3a50a..2f05c2d1c 100644 --- a/src/Services/Identity/Identity.API/appsettings.json +++ b/src/Services/Identity/Identity.API/appsettings.json @@ -7,7 +7,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Location/Locations.API/appsettings.json b/src/Services/Location/Locations.API/appsettings.json index 619668c77..7fbe98b3e 100644 --- a/src/Services/Location/Locations.API/appsettings.json +++ b/src/Services/Location/Locations.API/appsettings.json @@ -4,7 +4,7 @@ "IdentityUrl": "http://localhost:5105", "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Marketing/Marketing.API/appsettings.json b/src/Services/Marketing/Marketing.API/appsettings.json index 6abeb89b9..d4a58cc8e 100644 --- a/src/Services/Marketing/Marketing.API/appsettings.json +++ b/src/Services/Marketing/Marketing.API/appsettings.json @@ -1,7 +1,7 @@ { "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.API/appsettings.json b/src/Services/Ordering/Ordering.API/appsettings.json index 4865d62b1..f74c312b1 100644 --- a/src/Services/Ordering/Ordering.API/appsettings.json +++ b/src/Services/Ordering/Ordering.API/appsettings.json @@ -4,7 +4,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json index 3f6239256..51250be9d 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json +++ b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json @@ -2,7 +2,7 @@ "ConnectionString": "Server=tcp:127.0.0.1,5433;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word;", "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json index 68efc2800..e43c354a3 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json +++ b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json @@ -2,7 +2,7 @@ "IdentityUrl": "http://localhost:5105", "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Payment/Payment.API/appsettings.json b/src/Services/Payment/Payment.API/appsettings.json index e47377a06..a73471214 100644 --- a/src/Services/Payment/Payment.API/appsettings.json +++ b/src/Services/Payment/Payment.API/appsettings.json @@ -1,7 +1,7 @@ { "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Web/WebMVC/appsettings.json b/src/Web/WebMVC/appsettings.json index ee80b8b9e..96c75b932 100644 --- a/src/Web/WebMVC/appsettings.json +++ b/src/Web/WebMVC/appsettings.json @@ -13,7 +13,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Web/WebStatus/appsettings.json b/src/Web/WebStatus/appsettings.json index d98f24c26..da478fe30 100644 --- a/src/Web/WebStatus/appsettings.json +++ b/src/Web/WebStatus/appsettings.json @@ -5,7 +5,7 @@ }, "Serilog": { "SeqServerUrl": null, - "LogstashgUrl": "http://elk-dev.northeurope.cloudapp.azure.com:8080", + "LogstashgUrl": null, "MinimumLevel": { "Default": "Information", "Override": { From 1255e5f6044168f55c94e7c224c3f11ad192c0bb Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Wed, 27 Mar 2019 16:08:27 +0100 Subject: [PATCH 17/20] Updated Bootstrap to 4.3.1 to fix security issues --- src/Web/WebSPA/package-lock.json | 6 +++--- src/Web/WebSPA/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Web/WebSPA/package-lock.json b/src/Web/WebSPA/package-lock.json index 8386a6cf9..ea4aac4fd 100644 --- a/src/Web/WebSPA/package-lock.json +++ b/src/Web/WebSPA/package-lock.json @@ -2887,9 +2887,9 @@ } }, "bootstrap": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.3.tgz", - "integrity": "sha512-rDFIzgXcof0jDyjNosjv4Sno77X4KuPeFxG2XZZv1/Kc8DRVGVADdoQyyOVDwPqL36DDmtCQbrpMCqvpPLJQ0w==" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", + "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==" }, "boxen": { "version": "1.3.0", diff --git a/src/Web/WebSPA/package.json b/src/Web/WebSPA/package.json index 2adfb5d84..11cb0b882 100644 --- a/src/Web/WebSPA/package.json +++ b/src/Web/WebSPA/package.json @@ -39,7 +39,7 @@ "@angular/router": "^7.2.10", "@aspnet/signalr": "1.0.3", "@ng-bootstrap/ng-bootstrap": "3.3.0", - "bootstrap": "4.1.3", + "bootstrap": "4.3.1", "core-js": "^2.5.0", "file-loader": "2.0.0", "font-awesome": "4.7.0", From 9192046f71b3fc48ae57cea835d70175b7af178b Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Wed, 27 Mar 2019 16:50:49 +0100 Subject: [PATCH 18/20] Fixed some security issues with npm audit --- src/Web/WebSPA/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Web/WebSPA/package-lock.json b/src/Web/WebSPA/package-lock.json index ea4aac4fd..9a1e9af96 100644 --- a/src/Web/WebSPA/package-lock.json +++ b/src/Web/WebSPA/package-lock.json @@ -6959,9 +6959,9 @@ "dev": true }, "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", + "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", "dev": true, "requires": { "argparse": "^1.0.7", From a7c76f97a250f4fe54febbb8bac4ddc7c893aa16 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Thu, 28 Mar 2019 16:43:59 +0000 Subject: [PATCH 19/20] Simplify Enumeration and CardType classes as proposed in PR #704 --- .../BuyerAggregate/CardType.cs | 24 +++---------------- .../OrderAggregate/OrderStatus.cs | 4 ---- .../Ordering.Domain/SeedWork/Enumeration.cs | 3 --- 3 files changed, 3 insertions(+), 28 deletions(-) diff --git a/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/CardType.cs b/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/CardType.cs index d6a92892c..3053cb678 100644 --- a/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/CardType.cs +++ b/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/CardType.cs @@ -9,31 +9,13 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.B public class CardType : Enumeration { - public static CardType Amex = new AmexCardType(); - public static CardType Visa = new VisaCardType(); - public static CardType MasterCard = new MasterCardType(); + public static CardType Amex = new CardType(1, "Amex"); + public static CardType Visa = new CardType(2, "Visa"); + public static CardType MasterCard = new CardType(3, "MasterCard"); public CardType(int id, string name) : base(id, name) { } - - private class AmexCardType : CardType - { - public AmexCardType() : base(1, "Amex") - { } - } - - private class VisaCardType : CardType - { - public VisaCardType() : base(2, "Visa") - { } - } - - private class MasterCardType : CardType - { - public MasterCardType() : base(3, "MasterCard") - { } - } } } diff --git a/src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/OrderStatus.cs b/src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/OrderStatus.cs index 1716cc32d..19e62311a 100644 --- a/src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/OrderStatus.cs +++ b/src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/OrderStatus.cs @@ -16,10 +16,6 @@ public static OrderStatus Shipped = new OrderStatus(5, nameof(Shipped).ToLowerInvariant()); public static OrderStatus Cancelled = new OrderStatus(6, nameof(Cancelled).ToLowerInvariant()); - protected OrderStatus() - { - } - public OrderStatus(int id, string name) : base(id, name) { diff --git a/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs b/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs index a1e4c4c7e..d3e415df2 100644 --- a/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs +++ b/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs @@ -11,9 +11,6 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.SeedWork public int Id { get; private set; } - protected Enumeration() - { } - protected Enumeration(int id, string name) { Id = id; From 468f117df53f849dafebf513d94b7486e8905293 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Thu, 28 Mar 2019 18:22:15 +0000 Subject: [PATCH 20/20] Remove test class for MVC project --- .../Application/OrderControllerTest.cs | 86 ------------------- .../Ordering.UnitTests.csproj | 1 - 2 files changed, 87 deletions(-) delete mode 100644 src/Services/Ordering/Ordering.UnitTests/Application/OrderControllerTest.cs diff --git a/src/Services/Ordering/Ordering.UnitTests/Application/OrderControllerTest.cs b/src/Services/Ordering/Ordering.UnitTests/Application/OrderControllerTest.cs deleted file mode 100644 index a60ce3bb3..000000000 --- a/src/Services/Ordering/Ordering.UnitTests/Application/OrderControllerTest.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.eShopOnContainers.WebMVC.Controllers; -using Microsoft.eShopOnContainers.WebMVC.Services; -using Microsoft.eShopOnContainers.WebMVC.ViewModels; -using Moq; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Xunit; -using BasketModel = Microsoft.eShopOnContainers.WebMVC.ViewModels.Basket; - -namespace UnitTest.Ordering.Application -{ - public class OrderControllerTest - { - private readonly Mock _orderServiceMock; - private readonly Mock _basketServiceMock; - private readonly Mock> _identityParserMock; - private readonly Mock _contextMock; - - public OrderControllerTest() - { - _orderServiceMock = new Mock(); - _basketServiceMock = new Mock(); - _identityParserMock = new Mock>(); - _contextMock = new Mock(); - } - - [Fact] - public async Task Get_order_list_success() - { - //Arrange - var expectedTotalResults = 1; - var fakeOrder = GetFakeOrder(); - - _orderServiceMock.Setup(x => x.GetMyOrders(It.IsAny())) - .Returns(Task.FromResult(new List() { fakeOrder })); - - //Act - var orderController = new OrderController(_orderServiceMock.Object, _basketServiceMock.Object, _identityParserMock.Object); - orderController.ControllerContext.HttpContext = _contextMock.Object; - var actionResult = await orderController.Index(fakeOrder); - - //Assert - var viewResult = Assert.IsType(actionResult); - var model = Assert.IsAssignableFrom>(viewResult.ViewData.Model); - Assert.Equal(model.Count, expectedTotalResults); - } - - [Fact] - public async Task Get_order_detail_success() - { - //Arrange - var fakeOrderId = "12"; - var fakeOrder = GetFakeOrder(); - - _orderServiceMock.Setup(x => x.GetOrder(It.IsAny(), It.IsAny())) - .Returns(Task.FromResult(fakeOrder)); - - //Act - var orderController = new OrderController(_orderServiceMock.Object, _basketServiceMock.Object, _identityParserMock.Object); - orderController.ControllerContext.HttpContext = _contextMock.Object; - var actionResult = await orderController.Detail(fakeOrderId); - - //Assert - var viewResult = Assert.IsType(actionResult); - Assert.IsAssignableFrom(viewResult.ViewData.Model); - } - - - - private Order GetFakeOrder() - { - return new Order() - { - OrderNumber = "1", - CardNumber = "12", - CardSecurityNumber = "1212", - Status = "Pending", - RequestId = Guid.NewGuid(), - CardExpiration = DateTime.Now.AddYears(1), - }; - } - } -} diff --git a/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj b/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj index 6a3d3c284..e94aae4f1 100644 --- a/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj +++ b/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj @@ -19,7 +19,6 @@ -