delete marketing and locations references
This commit is contained in:
parent
aa32e5634d
commit
98552b7785
@ -16,8 +16,6 @@ Sample .NET Core reference application, powered by Microsoft, based on a simplif
|
||||
| Basket API | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=199&branchName=dev) | Shopping Aggregator (Mobile) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=204&branchName=dev) |
|
||||
| Catalog API | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=197&branchName=dev) | Web Client (MVC) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=209&branchName=dev) |
|
||||
|Identity API | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=200&branchName=dev) | Web Client (SPA) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=210&branchName=dev) |
|
||||
| Location API | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=202&branchName=dev) | Web Status (Health) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=211&branchName=dev) |
|
||||
| Marketing API | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=203&branchName=dev) | Webhooks API | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=207&branchName=dev) |
|
||||
| Ordering API | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=198&branchName=dev) | Webhooks Client | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=208&branchName=dev) |
|
||||
| Payment API | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=205&branchName=dev) | | |
|
||||
|
||||
|
@ -14,12 +14,10 @@ $services = @(
|
||||
@{ Name="eshopidentity"; Image="eshop/identity.api"; File="src/Services/Identity/Identity.API/Dockerfile" },
|
||||
@{ Name="eshopordering"; Image="eshop/ordering.api"; File="src/Services/Ordering/Ordering.API/Dockerfile" },
|
||||
@{ Name="eshoporderingbg"; Image="eshop/ordering.backgroundtasks"; File="src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile" },
|
||||
@{ Name="eshopmarketing"; Image="eshop/marketing.api"; File="src/Services/Marketing/Marketing.API/Dockerfile" },
|
||||
@{ Name="eshopwebspa"; Image="eshop/webspa"; File="src/Web/WebSPA/Dockerfile" },
|
||||
@{ Name="eshopwebmvc"; Image="eshop/webmvc"; File="src/Web/WebMVC/Dockerfile" },
|
||||
@{ Name="eshopwebstatus"; Image="eshop/webstatus"; File="src/Web/WebStatus/Dockerfile" },
|
||||
@{ Name="eshoppayment"; Image="eshop/payment.api"; File="src/Services/Payment/Payment.API/Dockerfile" },
|
||||
@{ Name="eshoplocations"; Image="eshop/locations.api"; File="src/Services/Location/Locations.API/Dockerfile" },
|
||||
@{ Name="eshopocelotapigw"; Image="eshop/ocelotapigw"; File="src/ApiGateways/ApiGw-Base/Dockerfile" },
|
||||
@{ Name="eshopmobileshoppingagg"; Image="eshop/mobileshoppingagg"; File="src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile" },
|
||||
@{ Name="eshopwebshoppingagg"; Image="eshop/webshoppingagg"; File="src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile" },
|
||||
|
@ -12,7 +12,7 @@ Write-Host "Tags used are linux-master, win-master, linux-dev, win-dev, linux-la
|
||||
Write-Host "Multiarch images tags will be master, dev, latest" -ForegroundColor Yellow
|
||||
|
||||
|
||||
$services = "identity.api", "basket.api", "catalog.api", "ordering.api", "ordering.backgroundtasks", "marketing.api", "payment.api", "locations.api", "webhooks.api", "ocelotapigw", "mobileshoppingagg", "webshoppingagg", "ordering.signalrhub", "webstatus", "webspa", "webmvc", "webhooks.client"
|
||||
$services = "identity.api", "basket.api", "catalog.api", "ordering.api", "ordering.backgroundtasks", "payment.api", "webhooks.api", "ocelotapigw", "mobileshoppingagg", "webshoppingagg", "ordering.signalrhub", "webstatus", "webspa", "webmvc", "webhooks.client"
|
||||
|
||||
foreach ($svc in $services) {
|
||||
Write-Host "Creating manifest for $svc and tags :latest, :master, and :dev"
|
||||
|
@ -14,8 +14,6 @@
|
||||
"BasketSubscriptionName": "Basket",
|
||||
"CatalogSubscriptionName": "Catalog",
|
||||
"OrderingSubscriptionName": "Ordering",
|
||||
"LocationsSubscriptionName": "Locations",
|
||||
"MarketingSubscriptionName": "Marketing",
|
||||
"GracePeriodSubscriptionName": "GracePeriod",
|
||||
"PaymentSubscriptionName": "Payment",
|
||||
"location": "[resourceGroup().location]",
|
||||
@ -135,46 +133,6 @@
|
||||
"entityAvailabilityStatus": "Available"
|
||||
}
|
||||
},
|
||||
{
|
||||
"apiVersion": "[variables('sbVersion')]",
|
||||
"name": "[variables('LocationsSubscriptionName')]",
|
||||
"type": "Subscriptions",
|
||||
"dependsOn": [
|
||||
"[variables('serviceBusTopicName')]"
|
||||
],
|
||||
"properties": {
|
||||
"lockDuration": "00:00:30",
|
||||
"requiresSession": false,
|
||||
"defaultMessageTimeToLive": "14.00:00:00",
|
||||
"deadLetteringOnMessageExpiration": true,
|
||||
"deadLetteringOnFilterEvaluationExceptions": true,
|
||||
"maxDeliveryCount": 10,
|
||||
"enableBatchedOperations": false,
|
||||
"status": "Active",
|
||||
"autoDeleteOnIdle": "10675199.02:48:05.4775807",
|
||||
"entityAvailabilityStatus": "Available"
|
||||
}
|
||||
},
|
||||
{
|
||||
"apiVersion": "[variables('sbVersion')]",
|
||||
"name": "[variables('MarketingSubscriptionName')]",
|
||||
"type": "Subscriptions",
|
||||
"dependsOn": [
|
||||
"[variables('serviceBusTopicName')]"
|
||||
],
|
||||
"properties": {
|
||||
"lockDuration": "00:00:30",
|
||||
"requiresSession": false,
|
||||
"defaultMessageTimeToLive": "14.00:00:00",
|
||||
"deadLetteringOnMessageExpiration": true,
|
||||
"deadLetteringOnFilterEvaluationExceptions": true,
|
||||
"maxDeliveryCount": 10,
|
||||
"enableBatchedOperations": false,
|
||||
"status": "Active",
|
||||
"autoDeleteOnIdle": "10675199.02:48:05.4775807",
|
||||
"entityAvailabilityStatus": "Available"
|
||||
}
|
||||
},
|
||||
{
|
||||
"apiVersion": "[variables('sbVersion')]",
|
||||
"name": "[variables('GracePeriodSubscriptionName')]",
|
||||
|
@ -73,22 +73,7 @@
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.Sql/servers/', variables('sql_server_name'))]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "databases",
|
||||
"name": "[parameters('sql_server').dbs.marketing]",
|
||||
"apiVersion": "2014-04-01-preview",
|
||||
"location": "[resourceGroup().location]",
|
||||
"properties": {
|
||||
"edition": "Standard",
|
||||
"collation": "SQL_Latin1_General_CP1_CI_AS",
|
||||
"maxSizeBytes": "1073741824",
|
||||
"requestedServiceObjectiveName": "S1"
|
||||
},
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.Sql/servers/', variables('sql_server_name'))]"
|
||||
]
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "firewallrules",
|
||||
"name": "AllowAllWindowsAzureIps",
|
||||
|
@ -8,8 +8,7 @@
|
||||
"dbs": {
|
||||
"ordering": "orderingdb",
|
||||
"identity": "identitydb",
|
||||
"catalog": "catalogdb",
|
||||
"marketing": "marketingdb"
|
||||
"catalog": "catalogdb"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1,94 +0,0 @@
|
||||
{
|
||||
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"marketingstorage": {
|
||||
"type": "string"
|
||||
},
|
||||
"profileName" : {
|
||||
"type": "string"
|
||||
},
|
||||
"endpointName" : {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"variables": {
|
||||
"marketingstorage": "[concat(parameters('marketingstorage'), uniqueString(resourceGroup().id))]",
|
||||
"endpointName": "[concat(parameters('endpointName'), uniqueString(resourceGroup().id))]",
|
||||
"profileName": "[parameters('profileName')]"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"type": "Microsoft.Storage/storageAccounts",
|
||||
"name": "[variables('marketingstorage')]",
|
||||
"apiVersion": "2016-01-01",
|
||||
"location": "[resourceGroup().location]",
|
||||
"tags": {
|
||||
"displayName": "[variables('marketingstorage')]"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Standard_LRS"
|
||||
},
|
||||
"kind": "Storage"
|
||||
},
|
||||
{
|
||||
"name": "[variables('profileName')]",
|
||||
"type": "Microsoft.Cdn/profiles",
|
||||
"location": "[resourceGroup().location]",
|
||||
"apiVersion": "2016-04-02",
|
||||
"tags": {
|
||||
"displayName": "[variables('profileName')]"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Standard_Verizon"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"apiVersion": "2016-04-02",
|
||||
"name": "[variables('endpointName')]",
|
||||
"type": "endpoints",
|
||||
"dependsOn": [
|
||||
"[variables('profileName')]",
|
||||
"[variables('marketingstorage')]"
|
||||
],
|
||||
"location": "[resourceGroup().location]",
|
||||
"tags": {
|
||||
"displayName": "[variables('endpointName')]"
|
||||
},
|
||||
"properties": {
|
||||
"originHostHeader": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('marketingstorage')),'2015-06-15' ).primaryEndpoints.blob,'https://',''),'/','')]",
|
||||
"isHttpAllowed": true,
|
||||
"isHttpsAllowed": true,
|
||||
"queryStringCachingBehavior": "IgnoreQueryString",
|
||||
"contentTypesToCompress": [
|
||||
"text/plain",
|
||||
"text/html",
|
||||
"text/css",
|
||||
"application/x-javascript",
|
||||
"text/javascript"
|
||||
],
|
||||
"isCompressionEnabled": "True",
|
||||
"origins": [
|
||||
{
|
||||
"name": "origin1",
|
||||
"properties": {
|
||||
"hostName": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('marketingstorage')),'2015-06-15' ).primaryEndpoints.blob,'https://',''),'/','')]"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": {
|
||||
"hostName": {
|
||||
"type": "string",
|
||||
"value": "[reference(resourceId('Microsoft.cdn/profiles/endpoints', variables('profileName'), variables('endpointName'))).hostName]"
|
||||
},
|
||||
"originHostHeader": {
|
||||
"type": "string",
|
||||
"value": "[reference(resourceId('Microsoft.cdn/profiles/endpoints', variables('profileName'), variables('endpointName'))).originHostHeader]"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"marketingstorage": {
|
||||
"value": "marketing"
|
||||
},
|
||||
"profileName":{
|
||||
"value": "eshopmarketing"
|
||||
},
|
||||
"endpointName":{
|
||||
"value": "marketing-endpoint"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
# Deploying Marketing Storage
|
||||
|
||||
The ARM template `deploystorage.json` and its parameter file (`deploystorage.parameters.json`) are used to deploy following resources:
|
||||
|
||||
1. One Storage Account
|
||||
2. One CDN profile
|
||||
3. One Endpoint
|
||||
|
||||
## Editing deploystorage.parameters.json file
|
||||
|
||||
You can edit the `deploystorage.parameters.json` file to set your values, but is not needed. The only parameters that can
|
||||
be set are:
|
||||
|
||||
1. `marketingstorage` is a string that is used to create the storage account name. ARM script creates unique values by appending a unique string to this parameter value, so you can leave the default value.
|
||||
|
||||
2. `profileName` is a string that is used to create the CDN profile name.
|
||||
|
||||
3. `endpointName` is a string that is used to create the storage endpoint name. ARM script creates unique values by appending a unique string to this parameter value, so you can leave the default value.
|
||||
|
||||
## Deploy the template
|
||||
|
||||
Once parameter file is edited you can deploy it using [create-resources script](../../readme.md).
|
||||
|
||||
i. e. if you are in windows, to deploy a Storage account in a new resourcegroup located in westus, go to `deploy\az` folder and type:
|
||||
|
||||
```
|
||||
create-resources.cmd storage\marketing\deploystorage newResourceGroup -c westus
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -22,8 +22,6 @@ Using `docker-machine` is the recommended way to create a VM with docker install
|
||||
3. [Deploying Redis Cache](az/redis/readme.md)
|
||||
4. [Deploying Cosmosdb](az/cosmos/readme.md)
|
||||
5. [Deploying Catalog Storage](az/storage/catalog/readme.md)
|
||||
6. [Deploying Marketing Storage](az/storage/marketing/readme.md)
|
||||
7. [Deploying Marketing Azure functions](az/azurefunctions/readme.md)
|
||||
|
||||
|
||||
|
||||
|
@ -1,21 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
@ -1,5 +0,0 @@
|
||||
apiVersion: v1
|
||||
appVersion: "1.0"
|
||||
description: A Helm chart for Kubernetes
|
||||
name: apigwmm
|
||||
version: 0.1.0
|
@ -1,75 +0,0 @@
|
||||
admin:
|
||||
access_log_path: "/dev/null"
|
||||
address:
|
||||
socket_address:
|
||||
address: 0.0.0.0
|
||||
port_value: 8001
|
||||
static_resources:
|
||||
listeners:
|
||||
- address:
|
||||
socket_address:
|
||||
address: 0.0.0.0
|
||||
port_value: 80
|
||||
filter_chains:
|
||||
- filters:
|
||||
- name: envoy.http_connection_manager
|
||||
config:
|
||||
codec_type: auto
|
||||
stat_prefix: ingress_http
|
||||
route_config:
|
||||
name: eshop_backend_route
|
||||
virtual_hosts:
|
||||
- name: eshop_backend
|
||||
domains:
|
||||
- "*"
|
||||
routes:
|
||||
- name: "m-short"
|
||||
match:
|
||||
prefix: "/m/"
|
||||
route:
|
||||
auto_host_rewrite: true
|
||||
prefix_rewrite: "/marketing-api/"
|
||||
cluster: marketing
|
||||
- name: "m-long"
|
||||
match:
|
||||
prefix: "/marketing-api/"
|
||||
route:
|
||||
auto_host_rewrite: true
|
||||
cluster: marketing
|
||||
http_filters:
|
||||
- name: envoy.router
|
||||
access_log:
|
||||
- name: envoy.file_access_log
|
||||
filter:
|
||||
not_health_check_filter: {}
|
||||
config:
|
||||
json_format:
|
||||
time: "%START_TIME%"
|
||||
protocol: "%PROTOCOL%"
|
||||
duration: "%DURATION%"
|
||||
request_method: "%REQ(:METHOD)%"
|
||||
request_host: "%REQ(HOST)%"
|
||||
path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
|
||||
response_flags: "%RESPONSE_FLAGS%"
|
||||
route_name: "%ROUTE_NAME%"
|
||||
upstream_host: "%UPSTREAM_HOST%"
|
||||
upstream_cluster: "%UPSTREAM_CLUSTER%"
|
||||
upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%"
|
||||
path: "/tmp/access.log"
|
||||
clusters:
|
||||
- name: marketing
|
||||
connect_timeout: 0.25s
|
||||
type: logical_dns
|
||||
lb_policy: round_robin
|
||||
hosts:
|
||||
- socket_address:
|
||||
address: marketing-api
|
||||
port_value: 80
|
||||
- name: locations
|
||||
connect_timeout: 0.25s
|
||||
type: logical_dns
|
||||
lb_policy: round_robin
|
||||
hosts:
|
||||
- socket_address:
|
||||
address: locations-api
|
||||
port_value: 80
|
@ -1,2 +0,0 @@
|
||||
eShop API Gateway for Mobile Marketing services installed
|
||||
----------------------------------------------------------
|
@ -1,32 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "apigwmm.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "apigwmm.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "apigwmm.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
@ -1,52 +0,0 @@
|
||||
{{- define "suffix-name" -}}
|
||||
{{- if .Values.app.name -}}
|
||||
{{- .Values.app.name -}}
|
||||
{{- else -}}
|
||||
{{- .Release.Name -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "sql-name" -}}
|
||||
{{- if .Values.inf.sql.host -}}
|
||||
{{- .Values.inf.sql.host -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s" "sql-data" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "mongo-name" -}}
|
||||
{{- if .Values.inf.mongo.host -}}
|
||||
{{- .Values.inf.mongo.host -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s" "nosql-data" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "url-of" -}}
|
||||
{{- $name := first .}}
|
||||
{{- $ctx := last .}}
|
||||
{{- if eq $name "" -}}
|
||||
{{- $ctx.Values.inf.k8s.dns -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s" $ctx.Values.inf.k8s.dns $name -}} {{/*Value is just <dns>/<name> */}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
|
||||
{{- define "pathBase" -}}
|
||||
{{- if .Values.inf.k8s.suffix -}}
|
||||
{{- $suffix := include "suffix-name" . -}}
|
||||
{{- printf "%s-%s" .Values.pathBase $suffix -}}
|
||||
{{- else -}}
|
||||
{{- .Values.pathBase -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "fqdn-image" -}}
|
||||
{{- if .Values.inf.registry -}}
|
||||
{{- printf "%s/%s" .Values.inf.registry.server .Values.image.repository -}}
|
||||
{{- else -}}
|
||||
{{- .Values.image.repository -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
@ -1,110 +0,0 @@
|
||||
{{- $name := include "apigwmm.fullname" . -}}
|
||||
{{- $cfgname := printf "%s-%s" "cfg" $name -}}
|
||||
{{- $envoycfgname := printf "%s-%s" "envoy" $name -}}
|
||||
apiVersion: apps/v1beta2
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "apigwmm.fullname" . }}
|
||||
labels:
|
||||
ufo: {{ $cfgname}}
|
||||
app: {{ template "apigwmm.name" . }}
|
||||
chart: {{ template "apigwmm.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "apigwmm.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "apigwmm.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{ if .Values.inf.mesh.enabled -}}
|
||||
annotations:
|
||||
linkerd.io/inject: enabled
|
||||
{{- end }}
|
||||
spec:
|
||||
{{ if .Values.inf.registry -}}
|
||||
imagePullSecrets:
|
||||
- name: {{ .Values.inf.registry.secretName }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: {{ $envoycfgname }}
|
||||
items:
|
||||
- key: envoy.yaml
|
||||
path: envoy.yaml
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
{{ if .Values.probes -}}
|
||||
{{- if .Values.probes.liveness -}}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
port: {{ .Values.probes.liveness.port }}
|
||||
path: {{ .Values.probes.liveness.path }}
|
||||
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.probes.liveness.periodSeconds }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.probes -}}
|
||||
{{- if .Values.probes.readiness }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
port: {{ .Values.probes.readiness.port }}
|
||||
path: {{ .Values.probes.readiness.path }}
|
||||
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.probes.readiness.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
image: "{{ template "fqdn-image" . }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: IfNotPresent
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: {{ .Values.envoy.configPath }}
|
||||
env:
|
||||
- name: PATH_BASE
|
||||
value: {{ include "pathBase" . }}
|
||||
- name: k8sname
|
||||
value: {{ .Values.clusterName }}
|
||||
{{- if .Values.env.values -}}
|
||||
{{- range .Values.env.values }}
|
||||
- name: {{ .name }}
|
||||
value: {{ .value | quote }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.env.configmap -}}
|
||||
{{- range .Values.env.configmap }}
|
||||
- name: {{ .name }}
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: {{ $cfgname }}
|
||||
key: {{ .key }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
- name: admin
|
||||
containerPort: 8001
|
||||
protocol: TCP
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
|
@ -1,14 +0,0 @@
|
||||
{{- $name := include "apigwmm.fullname" . -}}
|
||||
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: "envoy-{{ $name }}"
|
||||
labels:
|
||||
app: {{ template "apigwmm.name" . }}
|
||||
chart: {{ template "apigwmm.chart" .}}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
data:
|
||||
{{ (.Files.Glob "envoy.yaml").AsConfig | indent 2 }}
|
||||
|
@ -1,46 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $ingressPath := include "pathBase" . -}}
|
||||
{{- $serviceName := .Values.app.svc.mobilemarketingapigw -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ template "apigwmm.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "apigwmm.name" . }}
|
||||
chart: {{ template "apigwmm.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
|
||||
cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
|
||||
{{- end }}
|
||||
{{- if .Values.inf.mesh.enabled }}
|
||||
{{- with .Values.ingress.mesh.annotations }}
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ . }}
|
||||
http:
|
||||
paths:
|
||||
- path: {{ $ingressPath }}
|
||||
backend:
|
||||
serviceName: {{ $serviceName }}
|
||||
servicePort: http
|
||||
{{- end }}
|
||||
{{- end }}
|
@ -1,23 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Values.app.svc.mobilemarketingapigw }}
|
||||
labels:
|
||||
app: {{ template "apigwmm.name" . }}
|
||||
chart: {{ template "apigwmm.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
- port: {{ .Values.service.adminPort }}
|
||||
targetPort: admin
|
||||
protocol: TCP
|
||||
name: admin
|
||||
selector:
|
||||
app: {{ template "apigwmm.name" . }}
|
||||
release: {{ .Release.Name }}
|
@ -1,45 +0,0 @@
|
||||
replicaCount: 1
|
||||
clusterName: eshop-aks
|
||||
pathBase: /mobilemarketingapigw
|
||||
|
||||
image:
|
||||
repository: envoyproxy/envoy
|
||||
tag: v1.11.1
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
adminPort: 8001
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/rewrite-target: "/"
|
||||
ingress.kubernetes.io/rewrite-target: "/"
|
||||
tls: []
|
||||
|
||||
resources: {}
|
||||
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
env: {}
|
||||
|
||||
envoy:
|
||||
configPath: /etc/envoy
|
||||
|
||||
probes:
|
||||
liveness:
|
||||
path: /ready
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 15
|
||||
port: 8001
|
||||
readiness:
|
||||
path: /ready
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 60
|
||||
port: 8001
|
@ -1,21 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
@ -1,5 +0,0 @@
|
||||
apiVersion: v1
|
||||
appVersion: "1.0"
|
||||
description: A Helm chart for Kubernetes
|
||||
name: apigwwm
|
||||
version: 0.1.0
|
@ -1,75 +0,0 @@
|
||||
admin:
|
||||
access_log_path: "/dev/null"
|
||||
address:
|
||||
socket_address:
|
||||
address: 0.0.0.0
|
||||
port_value: 8001
|
||||
static_resources:
|
||||
listeners:
|
||||
- address:
|
||||
socket_address:
|
||||
address: 0.0.0.0
|
||||
port_value: 80
|
||||
filter_chains:
|
||||
- filters:
|
||||
- name: envoy.http_connection_manager
|
||||
config:
|
||||
codec_type: auto
|
||||
stat_prefix: ingress_http
|
||||
route_config:
|
||||
name: eshop_backend_route
|
||||
virtual_hosts:
|
||||
- name: eshop_backend
|
||||
domains:
|
||||
- "*"
|
||||
routes:
|
||||
- name: "m-short"
|
||||
match:
|
||||
prefix: "/m/"
|
||||
route:
|
||||
auto_host_rewrite: true
|
||||
prefix_rewrite: "/marketing-api/"
|
||||
cluster: marketing
|
||||
- name: "m-long"
|
||||
match:
|
||||
prefix: "/marketing-api/"
|
||||
route:
|
||||
auto_host_rewrite: true
|
||||
cluster: marketing
|
||||
http_filters:
|
||||
- name: envoy.router
|
||||
access_log:
|
||||
- name: envoy.file_access_log
|
||||
filter:
|
||||
not_health_check_filter: {}
|
||||
config:
|
||||
json_format:
|
||||
time: "%START_TIME%"
|
||||
protocol: "%PROTOCOL%"
|
||||
duration: "%DURATION%"
|
||||
request_method: "%REQ(:METHOD)%"
|
||||
request_host: "%REQ(HOST)%"
|
||||
path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
|
||||
response_flags: "%RESPONSE_FLAGS%"
|
||||
route_name: "%ROUTE_NAME%"
|
||||
upstream_host: "%UPSTREAM_HOST%"
|
||||
upstream_cluster: "%UPSTREAM_CLUSTER%"
|
||||
upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%"
|
||||
path: "/tmp/access.log"
|
||||
clusters:
|
||||
- name: marketing
|
||||
connect_timeout: 0.25s
|
||||
type: strict_dns
|
||||
lb_policy: round_robin
|
||||
hosts:
|
||||
- socket_address:
|
||||
address: marketing-api
|
||||
port_value: 80
|
||||
- name: locations
|
||||
connect_timeout: 0.25s
|
||||
type: strict_dns
|
||||
lb_policy: round_robin
|
||||
hosts:
|
||||
- socket_address:
|
||||
address: locations-api
|
||||
port_value: 80
|
@ -1,2 +0,0 @@
|
||||
eShop API Gateway for Web Marketing services installed
|
||||
------------------------------------------------------
|
@ -1,32 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "apigwwm.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "apigwwm.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "apigwwm.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
@ -1,52 +0,0 @@
|
||||
{{- define "suffix-name" -}}
|
||||
{{- if .Values.app.name -}}
|
||||
{{- .Values.app.name -}}
|
||||
{{- else -}}
|
||||
{{- .Release.Name -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "sql-name" -}}
|
||||
{{- if .Values.inf.sql.host -}}
|
||||
{{- .Values.inf.sql.host -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s" "sql-data" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "mongo-name" -}}
|
||||
{{- if .Values.inf.mongo.host -}}
|
||||
{{- .Values.inf.mongo.host -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s" "nosql-data" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "url-of" -}}
|
||||
{{- $name := first .}}
|
||||
{{- $ctx := last .}}
|
||||
{{- if eq $name "" -}}
|
||||
{{- $ctx.Values.inf.k8s.dns -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s" $ctx.Values.inf.k8s.dns $name -}} {{/*Value is just <dns>/<name> */}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
|
||||
{{- define "pathBase" -}}
|
||||
{{- if .Values.inf.k8s.suffix -}}
|
||||
{{- $suffix := include "suffix-name" . -}}
|
||||
{{- printf "%s-%s" .Values.pathBase $suffix -}}
|
||||
{{- else -}}
|
||||
{{- .Values.pathBase -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "fqdn-image" -}}
|
||||
{{- if .Values.inf.registry -}}
|
||||
{{- printf "%s/%s" .Values.inf.registry.server .Values.image.repository -}}
|
||||
{{- else -}}
|
||||
{{- .Values.image.repository -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
@ -1,110 +0,0 @@
|
||||
{{- $name := include "apigwwm.fullname" . -}}
|
||||
{{- $cfgname := printf "%s-%s" "cfg" $name -}}
|
||||
{{- $envoycfgname := printf "%s-%s" "envoy" $name -}}
|
||||
apiVersion: apps/v1beta2
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "apigwwm.fullname" . }}
|
||||
labels:
|
||||
ufo: {{ $cfgname}}
|
||||
app: {{ template "apigwwm.name" . }}
|
||||
chart: {{ template "apigwwm.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "apigwwm.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "apigwwm.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{ if .Values.inf.mesh.enabled -}}
|
||||
annotations:
|
||||
linkerd.io/inject: enabled
|
||||
{{- end }}
|
||||
spec:
|
||||
{{ if .Values.inf.registry -}}
|
||||
imagePullSecrets:
|
||||
- name: {{ .Values.inf.registry.secretName }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: {{ $envoycfgname }}
|
||||
items:
|
||||
- key: envoy.yaml
|
||||
path: envoy.yaml
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
{{ if .Values.probes -}}
|
||||
{{- if .Values.probes.liveness -}}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
port: {{ .Values.probes.liveness.port }}
|
||||
path: {{ .Values.probes.liveness.path }}
|
||||
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.probes.liveness.periodSeconds }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.probes -}}
|
||||
{{- if .Values.probes.readiness }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
port: {{ .Values.probes.readiness.port }}
|
||||
path: {{ .Values.probes.readiness.path }}
|
||||
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.probes.readiness.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
image: "{{ template "fqdn-image" . }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: IfNotPresent
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: {{ .Values.envoy.configPath }}
|
||||
env:
|
||||
- name: PATH_BASE
|
||||
value: {{ include "pathBase" . }}
|
||||
- name: k8sname
|
||||
value: {{ .Values.clusterName }}
|
||||
{{- if .Values.env.values -}}
|
||||
{{- range .Values.env.values }}
|
||||
- name: {{ .name }}
|
||||
value: {{ .value | quote }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.env.configmap -}}
|
||||
{{- range .Values.env.configmap }}
|
||||
- name: {{ .name }}
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: {{ $cfgname }}
|
||||
key: {{ .key }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
- name: admin
|
||||
containerPort: 8001
|
||||
protocol: TCP
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
|
@ -1,14 +0,0 @@
|
||||
{{- $name := include "apigwwm.fullname" . -}}
|
||||
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: "envoy-{{ $name }}"
|
||||
labels:
|
||||
app: {{ template "apigwwm.name" . }}
|
||||
chart: {{ template "apigwwm.chart" .}}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
data:
|
||||
{{ (.Files.Glob "envoy.yaml").AsConfig | indent 2 -}}
|
||||
|
@ -1,47 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $ingressPath := include "pathBase" . -}}
|
||||
{{- $serviceName := .Values.app.svc.webmarketingapigw -}}
|
||||
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ template "apigwwm.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "apigwwm.name" . }}
|
||||
chart: {{ template "apigwwm.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
|
||||
cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
|
||||
{{- end }}
|
||||
{{- if .Values.inf.mesh.enabled }}
|
||||
{{- with .Values.ingress.mesh.annotations }}
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ . }}
|
||||
http:
|
||||
paths:
|
||||
- path: {{ $ingressPath }}
|
||||
backend:
|
||||
serviceName: {{ $serviceName }}
|
||||
servicePort: http
|
||||
{{- end }}
|
||||
{{- end }}
|
@ -1,23 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Values.app.svc.webmarketingapigw }}
|
||||
labels:
|
||||
app: {{ template "apigwwm.name" . }}
|
||||
chart: {{ template "apigwwm.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
- port: {{ .Values.service.adminPort }}
|
||||
targetPort: admin
|
||||
protocol: TCP
|
||||
name: admin
|
||||
selector:
|
||||
app: {{ template "apigwwm.name" . }}
|
||||
release: {{ .Release.Name }}
|
@ -1,46 +0,0 @@
|
||||
replicaCount: 1
|
||||
clusterName: eshop-aks
|
||||
pathBase: /webmarketingapigw
|
||||
|
||||
image:
|
||||
repository: envoyproxy/envoy
|
||||
tag: v1.11.1
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
adminPort: 8001
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/rewrite-target: "/"
|
||||
ingress.kubernetes.io/rewrite-target: "/"
|
||||
tls: []
|
||||
|
||||
resources: {}
|
||||
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
# env defines the environment variables that will be declared in the pod
|
||||
env: {}
|
||||
|
||||
envoy:
|
||||
configPath: /etc/envoy
|
||||
|
||||
probes:
|
||||
liveness:
|
||||
path: /ready
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 15
|
||||
port: 8001
|
||||
readiness:
|
||||
path: /ready
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 60
|
||||
port: 8001
|
@ -13,14 +13,10 @@ app: # app global settings
|
||||
spa: "" # ingress entry for web spa
|
||||
status: webstatus # ingress entry for web status
|
||||
webshoppingapigw: webshoppingapigw # ingress entry for web shopping Agw
|
||||
webmarketingapigw: webmarketingapigw # ingress entry for web mkg Agw
|
||||
mobilemarketingapigw: mobilemarketingapigw # ingress entry for mobile mkg Agw
|
||||
mobileshoppingapigw: mobileshoppingapigw # ingress entry for mobile shopping Agw
|
||||
webshoppingagg: webshoppingagg # ingress entry for web shopping aggregator
|
||||
mobileshoppingagg: mobileshoppingagg # ingress entry for mobile shopping aggregator
|
||||
payment: payment-api # ingress entry for payment api
|
||||
locations: locations-api # ingress entry for locations api
|
||||
marketing: marketing-api # ingress entry for marketing api
|
||||
webhooks: webhooks-api # ingress entry for webhooks api
|
||||
webhooksweb: webhooks-web # ingress entry for webhooks web demo client
|
||||
svc:
|
||||
@ -34,13 +30,9 @@ app: # app global settings
|
||||
spa: webspa # service name for web spa
|
||||
status: webstatus # service name for web status
|
||||
webshoppingapigw: webshoppingapigw # service name for web shopping Agw
|
||||
webmarketingapigw: webmarketingapigw # service name for web mkg Agw
|
||||
mobilemarketingapigw: mobilemarketingapigw # service name for mobile mkg Agw
|
||||
mobileshoppingapigw: mobileshoppingapigw # service name for mobile shopping Agw
|
||||
webshoppingagg: webshoppingagg # service name for web shopping aggregator
|
||||
mobileshoppingagg: mobileshoppingagg # service name for mobile shopping aggregator
|
||||
payment: payment-api # service name for payment api
|
||||
locations: locations-api # service name for locations api
|
||||
marketing: marketing-api # service name for marketing ap
|
||||
webhooks: webhooks-api # service name for webhooks api
|
||||
webhooksweb: webhooks-client # service name for webhooks web
|
||||
|
@ -113,7 +113,7 @@ if (-not [string]::IsNullOrEmpty($registry)) {
|
||||
Write-Host "Begin eShopOnContainers installation using Helm" -ForegroundColor Green
|
||||
|
||||
$infras = ("sql-data", "nosql-data", "rabbitmq", "keystore-data", "basket-data")
|
||||
$charts = ("eshop-common", "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")
|
||||
$charts = ("eshop-common", "basket-api","catalog-api", "identity-api", "mobileshoppingagg","ordering-api","ordering-backgroundtasks","ordering-signalrhub", "payment-api", "webmvc", "webshoppingagg", "webspa", "webstatus", "webhooks-api", "webhooks-web")
|
||||
$gateways = ("apigwmm", "apigwms", "apigwwm", "apigwws")
|
||||
|
||||
if ($deployInfrastructure) {
|
||||
|
@ -142,7 +142,7 @@ fi
|
||||
|
||||
if [[ $push_images ]]; then
|
||||
echo "#################### Pushing images to the container registry ####################"
|
||||
services=(basket.api catalog.api identity.api ordering.api marketing.api payment.api locations.api webmvc webspa webstatus)
|
||||
services=(basket.api catalog.api identity.api ordering.api payment.api webmvc webspa webstatus)
|
||||
|
||||
if [[ -z "$(docker image ls -q --filter=reference=eshop/$service:$image_tag)" ]]; then
|
||||
image_tag=linux-$image_tag
|
||||
@ -209,7 +209,7 @@ fi
|
||||
|
||||
echo "#################### Begin $app_name installation using Helm ####################"
|
||||
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)
|
||||
charts=(eshop-common apigwms apigwws basket-api catalog-api identity-api mobileshoppingagg ordering-api ordering-backgroundtasks ordering-signalrhub payment-api webmvc webshoppingagg webspa webstatus webhooks-api webhooks-web)
|
||||
|
||||
if [[ !$skip_infrastructure ]]; then
|
||||
for infra in "${infras[@]}"
|
||||
|
@ -2,8 +2,6 @@
|
||||
{{- $sqlsrv := include "sql-name" . -}}
|
||||
{{- $mvc_url := include "url-of" (list .Values.app.ingress.entries.mvc .) -}}
|
||||
{{- $spa_url := include "url-of" (list .Values.app.ingress.entries.spa .) -}}
|
||||
{{- $locations_url := include "url-of" (list .Values.app.ingress.entries.locations .) -}}
|
||||
{{- $marketing_url := include "url-of" (list .Values.app.ingress.entries.marketing .) -}}
|
||||
{{- $basket_url := include "url-of" (list .Values.app.ingress.entries.basket .) -}}
|
||||
{{- $ordering_url := include "url-of" (list .Values.app.ingress.entries.ordering .) -}}
|
||||
{{- $mobileshoppingagg := include "url-of" (list .Values.app.ingress.entries.mobileshoppingagg .) -}}
|
||||
@ -27,8 +25,6 @@ data:
|
||||
all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
|
||||
mvc_e: http://{{ $mvc_url }}
|
||||
spa_e: http://{{ $spa_url }}
|
||||
locations_e: http://{{ $locations_url }}
|
||||
marketing_e: http://{{ $marketing_url }}
|
||||
basket_e: http://{{ $basket_url }}
|
||||
ordering_e: http://{{ $ordering_url }}
|
||||
mobileshoppingagg_e: http://{{ $mobileshoppingagg }}
|
||||
|
@ -40,10 +40,6 @@ env:
|
||||
key: mvc_e
|
||||
- name: SpaClient
|
||||
key: spa_e
|
||||
- name: LocationApiClient
|
||||
key: locations_e
|
||||
- name: MarketingApiClient
|
||||
key: marketing_e
|
||||
- name: BasketApiClient
|
||||
key: basket_e
|
||||
- name: OrderingApiClient
|
||||
|
@ -19,16 +19,8 @@ inf:
|
||||
db: OrderingDb # Ordering API SQL db name
|
||||
identity:
|
||||
db: IdentityDb # Ordering API SQL db name
|
||||
marketing:
|
||||
db: MarketingDb # Marketing API SQL db name
|
||||
webhooks:
|
||||
db: WebhooksDb # Webhooks DB
|
||||
mongo:
|
||||
# host: my-nosql-data # Uncomment to use specify custom mongo host. By default nosql-data is used
|
||||
locations:
|
||||
database: LocationsDb
|
||||
marketing:
|
||||
database: MarketingDb
|
||||
redis: # inf.redis defines the redis' connection strings
|
||||
basket:
|
||||
svc: basket-data # Name of k8s svc for basket redis
|
||||
|
@ -1,21 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
@ -1,5 +0,0 @@
|
||||
apiVersion: v1
|
||||
appVersion: "1.0"
|
||||
description: A Helm chart for Kubernetes
|
||||
name: locations-api
|
||||
version: 0.1.0
|
@ -1,9 +0,0 @@
|
||||
eShop Locations API installed.
|
||||
------------------------------
|
||||
|
||||
This API is not directly exposed outside cluster. If need to access it use:
|
||||
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "locations-api.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl port-forward $POD_NAME 8080:80
|
||||
|
@ -1,32 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "locations-api.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "locations-api.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "locations-api.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
@ -1,52 +0,0 @@
|
||||
{{- define "suffix-name" -}}
|
||||
{{- if .Values.app.name -}}
|
||||
{{- .Values.app.name -}}
|
||||
{{- else -}}
|
||||
{{- .Release.Name -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "sql-name" -}}
|
||||
{{- if .Values.inf.sql.host -}}
|
||||
{{- .Values.inf.sql.host -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s" "sql-data" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "mongo-name" -}}
|
||||
{{- if .Values.inf.mongo.host -}}
|
||||
{{- .Values.inf.mongo.host -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s" "nosql-data" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "url-of" -}}
|
||||
{{- $name := first .}}
|
||||
{{- $ctx := last .}}
|
||||
{{- if eq $name "" -}}
|
||||
{{- $ctx.Values.inf.k8s.dns -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s" $ctx.Values.inf.k8s.dns $name -}} {{/*Value is just <dns>/<name> */}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
|
||||
{{- define "pathBase" -}}
|
||||
{{- if .Values.inf.k8s.suffix -}}
|
||||
{{- $suffix := include "suffix-name" . -}}
|
||||
{{- printf "%s-%s" .Values.pathBase $suffix -}}
|
||||
{{- else -}}
|
||||
{{- .Values.pathBase -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "fqdn-image" -}}
|
||||
{{- if .Values.inf.registry -}}
|
||||
{{- printf "%s/%s" .Values.inf.registry.server .Values.image.repository -}}
|
||||
{{- else -}}
|
||||
{{- .Values.image.repository -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
@ -1,22 +0,0 @@
|
||||
{{- $name := include "locations-api.fullname" . -}}
|
||||
{{- $identity := include "url-of" (list .Values.app.ingress.entries.identity .) -}}
|
||||
{{- $mongo := include "mongo-name" . -}}
|
||||
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: "cfg-{{ $name }}"
|
||||
labels:
|
||||
app: {{ template "locations-api.name" . }}
|
||||
chart: {{ template "locations-api.chart" .}}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
data:
|
||||
all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
|
||||
all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
|
||||
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
|
||||
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
|
||||
internalurls__IdentityUrl: http://{{ .Values.app.svc.identity }}
|
||||
urls__IdentityUrl: {{ $identity }}
|
||||
locations__ConnectionString: mongodb://{{ $mongo }}
|
||||
locations__Database: {{ .Values.inf.mongo.locations.database }}
|
@ -1,96 +0,0 @@
|
||||
{{- $name := include "locations-api.fullname" . -}}
|
||||
{{- $cfgname := printf "%s-%s" "cfg" $name -}}
|
||||
apiVersion: apps/v1beta2
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "locations-api.fullname" . }}
|
||||
labels:
|
||||
ufo: {{ $cfgname}}
|
||||
app: {{ template "locations-api.name" . }}
|
||||
chart: {{ template "locations-api.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "locations-api.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "locations-api.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{ if .Values.inf.mesh.enabled -}}
|
||||
annotations:
|
||||
linkerd.io/inject: enabled
|
||||
{{- end }}
|
||||
spec:
|
||||
{{ if .Values.inf.registry -}}
|
||||
imagePullSecrets:
|
||||
- name: {{ .Values.inf.registry.secretName }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
{{ if .Values.probes -}}
|
||||
{{- if .Values.probes.liveness -}}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
port: {{ .Values.probes.liveness.port }}
|
||||
path: {{ .Values.probes.liveness.path }}
|
||||
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.probes.liveness.periodSeconds }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.probes -}}
|
||||
{{- if .Values.probes.readiness }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
port: {{ .Values.probes.readiness.port }}
|
||||
path: {{ .Values.probes.readiness.path }}
|
||||
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.probes.readiness.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
image: "{{ template "fqdn-image" . }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
env:
|
||||
- name: PATH_BASE
|
||||
value: {{ include "pathBase" . }}
|
||||
- name: k8sname
|
||||
value: {{ .Values.clusterName }}
|
||||
{{- if .Values.env.values -}}
|
||||
{{- range .Values.env.values }}
|
||||
- name: {{ .name }}
|
||||
value: {{ .value | quote }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.env.configmap -}}
|
||||
{{- range .Values.env.configmap }}
|
||||
- name: {{ .name }}
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: {{ $cfgname }}
|
||||
key: {{ .key }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
|
@ -1,19 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Values.app.svc.locations }}
|
||||
labels:
|
||||
app: {{ template "locations-api.name" . }}
|
||||
chart: {{ template "locations-api.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
app: {{ template "locations-api.name" . }}
|
||||
release: {{ .Release.Name }}
|
@ -1,66 +0,0 @@
|
||||
replicaCount: 1
|
||||
clusterName: eshop-aks
|
||||
pathBase: /locations-api
|
||||
|
||||
image:
|
||||
repository: eshop/locations.api
|
||||
tag: latest
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
tls: []
|
||||
|
||||
resources: {}
|
||||
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
# env defines the environment variables that will be declared in the pod
|
||||
env:
|
||||
urls:
|
||||
# configmap declares variables which value is taken from the config map defined in template configmap.yaml (name is name of var and key the key in configmap).
|
||||
configmap:
|
||||
- name: ApplicationInsights__InstrumentationKey
|
||||
key: all__InstrumentationKey
|
||||
- name: EventBusConnection
|
||||
key: all__EventBusConnection
|
||||
- name: AzureServiceBusEnabled
|
||||
key: all__UseAzureServiceBus
|
||||
- name: UseLoadTest
|
||||
key: all_EnableLoadTest
|
||||
- name: IdentityUrl
|
||||
key: internalurls__IdentityUrl
|
||||
- name: IdentityUrlExternal
|
||||
key: urls__IdentityUrl
|
||||
- name: ConnectionString
|
||||
key: locations__ConnectionString
|
||||
- name: Database
|
||||
key: locations__Database
|
||||
# values define environment variables with a fixed value (no configmap involved) (name is name of var, and value is its value)
|
||||
values:
|
||||
- name: ASPNETCORE_ENVIRONMENT
|
||||
value: Development
|
||||
- name: OrchestratorType
|
||||
value: 'K8S'
|
||||
probes:
|
||||
liveness:
|
||||
path: /liveness
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
port: 80
|
||||
readiness:
|
||||
path: /hc
|
||||
timeoutSeconds: 5
|
||||
initialDelaySeconds: 90
|
||||
periodSeconds: 60
|
||||
port: 80
|
@ -1,21 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
@ -1,5 +0,0 @@
|
||||
apiVersion: v1
|
||||
appVersion: "1.0"
|
||||
description: A Helm chart for Kubernetes
|
||||
name: marketing-api
|
||||
version: 0.1.0
|
@ -1,9 +0,0 @@
|
||||
eShop Marketing API installed.
|
||||
------------------------------
|
||||
|
||||
This API is not directly exposed outside cluster. If need to access it use:
|
||||
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "marketing-api.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl port-forward $POD_NAME 8080:80
|
||||
|
@ -1,32 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "marketing-api.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "marketing-api.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "marketing-api.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
@ -1,60 +0,0 @@
|
||||
{{- define "suffix-name" -}}
|
||||
{{- if .Values.app.name -}}
|
||||
{{- .Values.app.name -}}
|
||||
{{- else -}}
|
||||
{{- .Release.Name -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "sql-name" -}}
|
||||
{{- if .Values.inf.sql.host -}}
|
||||
{{- .Values.inf.sql.host -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s" "sql-data" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "mongo-name" -}}
|
||||
{{- if .Values.inf.mongo.host -}}
|
||||
{{- .Values.inf.mongo.host -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s" "nosql-data" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "url-of" -}}
|
||||
{{- $name := first .}}
|
||||
{{- $ctx := last .}}
|
||||
{{- if eq $name "" -}}
|
||||
{{- $ctx.Values.inf.k8s.dns -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s/%s" $ctx.Values.inf.k8s.dns $name -}} {{/*Value is just <dns>/<name> */}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
|
||||
{{- define "pathBase" -}}
|
||||
{{- if .Values.inf.k8s.suffix -}}
|
||||
{{- $suffix := include "suffix-name" . -}}
|
||||
{{- printf "%s-%s" .Values.pathBase $suffix -}}
|
||||
{{- else -}}
|
||||
{{- .Values.pathBase -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "fqdn-image" -}}
|
||||
{{- if .Values.inf.registry -}}
|
||||
{{- printf "%s/%s" .Values.inf.registry.server .Values.image.repository -}}
|
||||
{{- else -}}
|
||||
{{- .Values.image.repository -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "protocol" -}}
|
||||
{{- if .Values.inf.tls.enabled -}}
|
||||
{{- printf "%s" "https" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s" "http" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
@ -1,27 +0,0 @@
|
||||
{{- $name := include "marketing-api.fullname" . -}}
|
||||
{{- $identity := include "url-of" (list .Values.app.ingress.entries.identity .) -}}
|
||||
{{- $webshoppingapigw := include "url-of" (list .Values.app.ingress.entries.webshoppingapigw .) -}}
|
||||
{{- $mongo := include "mongo-name" . -}}
|
||||
{{- $sqlsrv := include "sql-name" . -}}
|
||||
{{- $protocol := include "protocol" . -}}
|
||||
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: "cfg-{{ $name }}"
|
||||
labels:
|
||||
app: {{ template "marketing-api.name" . }}
|
||||
chart: {{ template "marketing-api.chart" .}}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
data:
|
||||
all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
|
||||
all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
|
||||
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
|
||||
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
|
||||
internalurls__IdentityUrl: http://{{ .Values.app.svc.identity }}
|
||||
urls__IdentityUrl: {{ $protocol }}://{{ $identity }}
|
||||
marketing__ConnectionString: Server={{ $sqlsrv }};Initial Catalog={{ .Values.inf.sql.marketing.db }};User Id={{ .Values.inf.sql.common.user }};Password={{ .Values.inf.sql.common.pwd }};
|
||||
marketing__MongoConnectionString: mongodb://{{ $mongo }}
|
||||
marketing__MongoDatabase: {{ .Values.inf.mongo.marketing.database }}
|
||||
marketing__PicBaseUrl: {{ $protocol }}://{{ $webshoppingapigw }}/c/api/v1/catalog/items/[0]/pic/
|
@ -1,96 +0,0 @@
|
||||
{{- $name := include "marketing-api.fullname" . -}}
|
||||
{{- $cfgname := printf "%s-%s" "cfg" $name -}}
|
||||
apiVersion: apps/v1beta2
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "marketing-api.fullname" . }}
|
||||
labels:
|
||||
ufo: {{ $cfgname}}
|
||||
app: {{ template "marketing-api.name" . }}
|
||||
chart: {{ template "marketing-api.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "marketing-api.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "marketing-api.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{ if .Values.inf.mesh.enabled -}}
|
||||
annotations:
|
||||
linkerd.io/inject: enabled
|
||||
{{- end }}
|
||||
spec:
|
||||
{{ if .Values.inf.registry -}}
|
||||
imagePullSecrets:
|
||||
- name: {{ .Values.inf.registry.secretName }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
{{ if .Values.probes -}}
|
||||
{{- if .Values.probes.liveness -}}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
port: {{ .Values.probes.liveness.port }}
|
||||
path: {{ .Values.probes.liveness.path }}
|
||||
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.probes.liveness.periodSeconds }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.probes -}}
|
||||
{{- if .Values.probes.readiness }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
port: {{ .Values.probes.readiness.port }}
|
||||
path: {{ .Values.probes.readiness.path }}
|
||||
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.probes.readiness.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
image: "{{ template "fqdn-image" . }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
env:
|
||||
- name: PATH_BASE
|
||||
value: {{ include "pathBase" . }}
|
||||
- name: k8sname
|
||||
value: {{ .Values.clusterName }}
|
||||
{{- if .Values.env.values -}}
|
||||
{{- range .Values.env.values }}
|
||||
- name: {{ .name }}
|
||||
value: {{ .value | quote }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.env.configmap -}}
|
||||
{{- range .Values.env.configmap }}
|
||||
- name: {{ .name }}
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: {{ $cfgname }}
|
||||
key: {{ .key }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
|
@ -1,19 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Values.app.svc.marketing }}
|
||||
labels:
|
||||
app: {{ template "marketing-api.name" . }}
|
||||
chart: {{ template "marketing-api.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
app: {{ template "marketing-api.name" . }}
|
||||
release: {{ .Release.Name }}
|
@ -1,70 +0,0 @@
|
||||
replicaCount: 1
|
||||
clusterName: eshop-aks
|
||||
pathBase: /marketing-api
|
||||
|
||||
image:
|
||||
repository: eshop/marketing.api
|
||||
tag: latest
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
tls: []
|
||||
|
||||
resources: {}
|
||||
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
# env defines the environment variables that will be declared in the pod
|
||||
env:
|
||||
urls:
|
||||
# configmap declares variables which value is taken from the config map defined in template configmap.yaml (name is name of var and key the key in configmap).
|
||||
configmap:
|
||||
- name: ApplicationInsights__InstrumentationKey
|
||||
key: all__InstrumentationKey
|
||||
- name: EventBusConnection
|
||||
key: all__EventBusConnection
|
||||
- name: AzureServiceBusEnabled
|
||||
key: all__UseAzureServiceBus
|
||||
- name: UseLoadTest
|
||||
key: all_EnableLoadTest
|
||||
- name: IdentityUrl
|
||||
key: internalurls__IdentityUrl
|
||||
- name: IdentityUrlExternal
|
||||
key: urls__IdentityUrl
|
||||
- name: ConnectionString
|
||||
key: marketing__ConnectionString
|
||||
- name: MongoConnectionString
|
||||
key: marketing__MongoConnectionString
|
||||
- name: MongoDatabase
|
||||
key: marketing__MongoDatabase
|
||||
- name: PicBaseUrl
|
||||
key: marketing__PicBaseUrl
|
||||
# values define environment variables with a fixed value (no configmap involved) (name is name of var, and value is its value)
|
||||
values:
|
||||
- name: ASPNETCORE_ENVIRONMENT
|
||||
value: Development
|
||||
- name: OrchestratorType
|
||||
value: 'K8S'
|
||||
probes:
|
||||
liveness:
|
||||
path: /liveness
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
port: 80
|
||||
readiness:
|
||||
path: /hc
|
||||
timeoutSeconds: 5
|
||||
initialDelaySeconds: 90
|
||||
periodSeconds: 60
|
||||
port: 80
|
@ -1,4 +1,4 @@
|
||||
eShop Mobile Marketing Aggregator is installed
|
||||
eShop Mobile Shopping Aggregator is installed
|
||||
----------------------------------------------
|
||||
|
||||
This API is not directly exposed outside cluster. If need to access it use:
|
||||
|
@ -21,9 +21,7 @@ data:
|
||||
internalurls__catalog__hc: http://{{ .Values.app.svc.catalog }}/hc
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
internalurls__ordering__hc: http://{{ .Values.app.svc.ordering }}/hc
|
||||
internalurls__marketing__hc: http://{{ .Values.app.svc.marketing }}/hc
|
||||
internalurls__payment__hc: http://{{ .Values.app.svc.payment }}/hc
|
||||
internalurls__location__hc: http://{{ .Values.app.svc.locations }}/hc
|
||||
internalurls__grpcBasket: "http://{{ .Values.app.svc.basket }}:{{ .Values.service.grpcPort }}"
|
||||
internalurls__grpcCatalog: "http://{{ .Values.app.svc.catalog }}:{{ .Values.service.grpcPort }}"
|
||||
internalurls__grpcOrdering: "http://{{ .Values.app.svc.ordering }}:{{ .Values.service.grpcPort }}"
|
||||
|
@ -49,12 +49,8 @@ env:
|
||||
key: internalurls__identity__hc
|
||||
- name: OrderingUrlHC
|
||||
key: internalurls__ordering__hc
|
||||
- name: MarketingUrlHC
|
||||
key: internalurls__marketing__hc
|
||||
- name: PaymentUrlHC
|
||||
key: internalurls__payment__hc
|
||||
- name: LocationUrlHC
|
||||
key: internalurls__location__hc
|
||||
- name: urls__grpcBasket
|
||||
key: internalurls__grpcBasket
|
||||
- name: urls__grpcCatalog
|
||||
|
@ -19,7 +19,6 @@ data:
|
||||
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
|
||||
webmvc__keystore: {{ .Values.inf.redis.keystore.constr }}
|
||||
internalurls__apigwws: http://{{ .Values.app.svc.webshoppingapigw }}
|
||||
internalurls__apigwwm: http://{{ .Values.app.svc.webmarketingapigw }}
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
urls__apigwws: {{ $protocol }}://{{ $webshoppingapigw }}
|
||||
urls__mvc: {{ $protocol }}://{{ $mvc }}
|
||||
|
@ -44,8 +44,6 @@ env:
|
||||
key: urls__mvc
|
||||
- name: IdentityUrl
|
||||
key: urls__IdentityUrl
|
||||
- name: MarketingUrl
|
||||
key: internalurls__apigwwm
|
||||
- name: IdentityUrlHC
|
||||
key: internalurls__identity__hc
|
||||
- name: SignalrHubUrl
|
||||
|
@ -21,9 +21,7 @@ data:
|
||||
internalurls__catalog__hc: http://{{ .Values.app.svc.catalog }}/hc
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
internalurls__ordering__hc: http://{{ .Values.app.svc.ordering }}/hc
|
||||
internalurls__marketing__hc: http://{{ .Values.app.svc.marketing }}/hc
|
||||
internalurls__payment__hc: http://{{ .Values.app.svc.payment }}/hc
|
||||
internalurls__location__hc: http://{{ .Values.app.svc.locations }}/hc
|
||||
internalurls__grpcBasket: "http://{{ .Values.app.svc.basket }}:{{ .Values.service.grpcPort }}"
|
||||
internalurls__grpcCatalog: "http://{{ .Values.app.svc.catalog }}:{{ .Values.service.grpcPort }}"
|
||||
internalurls__grpcOrdering: "http://{{ .Values.app.svc.ordering }}:{{ .Values.service.grpcPort }}"
|
||||
|
@ -49,12 +49,8 @@ env:
|
||||
key: internalurls__identity__hc
|
||||
- name: OrderingUrlHC
|
||||
key: internalurls__ordering__hc
|
||||
- name: MarketingUrlHC
|
||||
key: internalurls__marketing__hc
|
||||
- name: PaymentUrlHC
|
||||
key: internalurls__payment__hc
|
||||
- name: LocationUrlHC
|
||||
key: internalurls__location__hc
|
||||
- name: urls__grpcBasket
|
||||
key: internalurls__grpcBasket
|
||||
- name: urls__grpcCatalog
|
||||
|
@ -1,7 +1,6 @@
|
||||
{{- $name := include "webspa.fullname" . -}}
|
||||
{{- $identity := include "url-of" (list .Values.app.ingress.entries.identity .) -}}
|
||||
{{- $webshoppingapigw := include "url-of" (list .Values.app.ingress.entries.webshoppingapigw .) -}}
|
||||
{{- $webmarketingapigw := include "url-of" (list .Values.app.ingress.entries.webmarketingapigw .) -}}
|
||||
{{- $spa := include "url-of" (list .Values.app.ingress.entries.spa .) -}}
|
||||
{{- $mongo := include "mongo-name" . -}}
|
||||
{{- $protocol := include "protocol" . -}}
|
||||
@ -23,5 +22,4 @@ data:
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
urls__apigwws: {{ $protocol }}://{{ $webshoppingapigw }}
|
||||
urls__spa: {{ $protocol }}://{{ $spa }}
|
||||
urls__IdentityUrl: {{ $protocol }}://{{ $identity }}
|
||||
urls__apigwwm: {{ $protocol }}://{{ $webmarketingapigw }}
|
||||
urls__IdentityUrl: {{ $protocol }}://{{ $identity }}
|
@ -42,8 +42,6 @@ env:
|
||||
key: urls__spa
|
||||
- name: IdentityUrl
|
||||
key: urls__IdentityUrl
|
||||
- name: MarketingUrl
|
||||
key: urls__apigwwm
|
||||
- name: IdentityUrlHC
|
||||
key: internalurls__identity__hc
|
||||
- name: SignalrHubUrl
|
||||
|
@ -24,12 +24,8 @@ data:
|
||||
internalurls__spa__hc: http://{{ .Values.app.svc.spa }}/hc
|
||||
name__apigwws__hc: Web Shopping API GW HTTP Check
|
||||
internalurls__apigwws__hc: http://{{ .Values.app.svc.webshoppingapigw }}:8001/ready
|
||||
name__apigwwm__hc: Web Marketing API GW HTTP Check
|
||||
internalurls__apigwwm__hc: http://{{ .Values.app.svc.webmarketingapigw }}:8001/ready
|
||||
name__apigwms__hc: Mobile Shopping API GW HTTP Check
|
||||
internalurls__apigwms__hc: http://{{ .Values.app.svc.mobileshoppingapigw }}:8001/ready
|
||||
name__apigwmm__hc: Mobile Marketing API GW HTTP Check
|
||||
internalurls__apigwmm__hc: http://{{ .Values.app.svc.mobilemarketingapigw }}:8001/ready
|
||||
name__apigwwsagg__hc: Web Shopping Aggregator GW HTTP Check
|
||||
internalurls__apigwwsagg__hc: http://{{ .Values.app.svc.webshoppingagg }}/hc
|
||||
name__apigwmsagg__hc: Mobile Shopping Aggregator HTTP Check
|
||||
@ -44,10 +40,6 @@ data:
|
||||
internalurls__catalog__hc: http://{{ .Values.app.svc.catalog }}/hc
|
||||
name__identity__hc: Identity HTTP Check
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
name__marketing__hc: Marketing HTTP Check
|
||||
internalurls__marketing__hc: http://{{ .Values.app.svc.marketing }}/hc
|
||||
name__locations__hc: Locations HTTP Check
|
||||
internalurls__locations__hc: http://{{ .Values.app.svc.locations }}/hc
|
||||
name__payment__hc: Payment HTTP Check
|
||||
internalurls__payment__hc: http://{{ .Values.app.svc.payment }}/hc
|
||||
name__signalrhub__hc: Ordering SignalR Hub HTTP Check
|
||||
|
@ -67,24 +67,16 @@ env:
|
||||
- name: HealthChecks-UI__HealthChecks__7__Uri
|
||||
key: internalurls__identity__hc
|
||||
- name: HealthChecks-UI__HealthChecks__8__Name
|
||||
key: name__marketing__hc
|
||||
- name: HealthChecks-UI__HealthChecks__8__Uri
|
||||
key: internalurls__marketing__hc
|
||||
- name: HealthChecks-UI__HealthChecks__9__Name
|
||||
key: name__locations__hc
|
||||
- name: HealthChecks-UI__HealthChecks__9__Uri
|
||||
key: internalurls__locations__hc
|
||||
- name: HealthChecks-UI__HealthChecks__10__Name
|
||||
key: name__payment__hc
|
||||
- name: HealthChecks-UI__HealthChecks__10__Uri
|
||||
- name: HealthChecks-UI__HealthChecks__8__Uri
|
||||
key: internalurls__payment__hc
|
||||
- name: HealthChecks-UI__HealthChecks__11__Name
|
||||
- name: HealthChecks-UI__HealthChecks__9__Name
|
||||
key: name__signalrhub__hc
|
||||
- name: HealthChecks-UI__HealthChecks__11__Uri
|
||||
- name: HealthChecks-UI__HealthChecks__9__Uri
|
||||
key: internalurls__signalrhub__hc
|
||||
- name: HealthChecks-UI__HealthChecks__12__Name
|
||||
- name: HealthChecks-UI__HealthChecks__10__Name
|
||||
key: name__orderingbackground__hc
|
||||
- name: HealthChecks-UI__HealthChecks__12__Uri
|
||||
- name: HealthChecks-UI__HealthChecks__10__Uri
|
||||
key: internalurls__orderingbackground__hc
|
||||
|
||||
# values define environment variables with a fixed value (no configmap involved) (name is name of var, and value is its value)
|
||||
|
@ -13,14 +13,10 @@ app: # app global settings
|
||||
spa: "" # ingress entry for web spa
|
||||
status: webstatus # ingress entry for web status
|
||||
webshoppingapigw: webshoppingapigw # ingress entry for web shopping Agw
|
||||
webmarketingapigw: webmarketingapigw # ingress entry for web mkg Agw
|
||||
mobilemarketingapigw: mobilemarketingapigw # ingress entry for mobile mkg Agw
|
||||
mobileshoppingapigw: mobileshoppingapigw # ingress entry for mobile shopping Agw
|
||||
webshoppingagg: webshoppingagg # ingress entry for web shopping aggregator
|
||||
mobileshoppingagg: mobileshoppingagg # ingress entry for mobile shopping aggregator
|
||||
payment: payment-api # ingress entry for payment api
|
||||
locations: locations-api # ingress entry for locations api
|
||||
marketing: marketing-api # ingress entry for marketing api
|
||||
webhooks: webhooks-api # ingress entry for webhooks api
|
||||
webhooksweb: webhooks-web # ingress entry for webhooks web demo client
|
||||
svc:
|
||||
@ -34,13 +30,9 @@ app: # app global settings
|
||||
spa: webspa # service name for web spa
|
||||
status: webstatus # service name for web status
|
||||
webshoppingapigw: webshoppingapigw # service name for web shopping Agw
|
||||
webmarketingapigw: webmarketingapigw # service name for web mkg Agw
|
||||
mobilemarketingapigw: mobilemarketingapigw # service name for mobile mkg Agw
|
||||
mobileshoppingapigw: mobileshoppingapigw # service name for mobile shopping Agw
|
||||
webshoppingagg: webshoppingagg # service name for web shopping aggregator
|
||||
mobileshoppingagg: mobileshoppingagg # service name for mobile shopping aggregator
|
||||
payment: payment-api # service name for payment api
|
||||
locations: locations-api # service name for locations api
|
||||
marketing: marketing-api # service name for marketing ap
|
||||
webhooks: webhooks-api # service name for webhooks api
|
||||
webhooksweb: webhooks-client # service name for webhooks web
|
||||
|
@ -120,8 +120,8 @@ if (-not [string]::IsNullOrEmpty($registry)) {
|
||||
Write-Host "Begin eShopOnContainers installation using Helm" -ForegroundColor Green
|
||||
|
||||
$infras = ("sql-data", "nosql-data", "rabbitmq", "keystore-data", "basket-data")
|
||||
$charts = ("eshop-common", "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")
|
||||
$gateways = ("apigwmm", "apigwms", "apigwwm", "apigwws")
|
||||
$charts = ("eshop-common", "basket-api","catalog-api", "identity-api", "mobileshoppingagg","ordering-api","ordering-backgroundtasks","ordering-signalrhub", "payment-api", "webmvc", "webshoppingagg", "webspa", "webstatus", "webhooks-api", "webhooks-web")
|
||||
$gateways = ("apigwms", "apigwws")
|
||||
|
||||
if ($deployInfrastructure) {
|
||||
foreach ($infra in $infras) {
|
||||
|
@ -119,8 +119,8 @@ if (-not [string]::IsNullOrEmpty($registry)) {
|
||||
Write-Host "Begin eShopOnContainers installation using Helm" -ForegroundColor Green
|
||||
|
||||
$infras = ("sql-data", "nosql-data", "rabbitmq", "keystore-data", "basket-data")
|
||||
$charts = ("eshop-common", "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")
|
||||
$gateways = ("apigwmm", "apigwms", "apigwwm", "apigwws")
|
||||
$charts = ("eshop-common", "basket-api","catalog-api", "identity-api", "mobileshoppingagg","ordering-api","ordering-backgroundtasks","ordering-signalrhub", "payment-api", "webmvc", "webshoppingagg", "webspa", "webstatus", "webhooks-api", "webhooks-web")
|
||||
$gateways = ("apigwms", "apigwws")
|
||||
|
||||
if ($deployInfrastructure) {
|
||||
foreach ($infra in $infras) {
|
||||
|
@ -142,7 +142,7 @@ fi
|
||||
|
||||
if [[ $push_images ]]; then
|
||||
echo "#################### Pushing images to the container registry ####################"
|
||||
services=(basket.api catalog.api identity.api ordering.api marketing.api payment.api locations.api webmvc webspa webstatus)
|
||||
services=(basket.api catalog.api identity.api ordering.api payment.api webmvc webspa webstatus)
|
||||
|
||||
if [[ -z "$(docker image ls -q --filter=reference=eshop/$service:$image_tag)" ]]; then
|
||||
image_tag=linux-$image_tag
|
||||
@ -209,7 +209,7 @@ fi
|
||||
|
||||
echo "#################### Begin $app_name installation using Helm ####################"
|
||||
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)
|
||||
charts=(eshop-common apigwms apigwws basket-api catalog-api identity-api mobileshoppingagg ordering-api ordering-backgroundtasks ordering-signalrhub payment-api webmvc webshoppingagg webspa webstatus webhooks-api webhooks-web)
|
||||
|
||||
if [[ !$skip_infrastructure ]]; then
|
||||
for infra in "${infras[@]}"
|
||||
|
@ -2,8 +2,6 @@
|
||||
{{- $sqlsrv := include "sql-name" . -}}
|
||||
{{- $mvc_url := include "url-of" (list .Values.app.ingress.entries.mvc .) -}}
|
||||
{{- $spa_url := include "url-of" (list .Values.app.ingress.entries.spa .) -}}
|
||||
{{- $locations_url := include "url-of" (list .Values.app.ingress.entries.locations .) -}}
|
||||
{{- $marketing_url := include "url-of" (list .Values.app.ingress.entries.marketing .) -}}
|
||||
{{- $basket_url := include "url-of" (list .Values.app.ingress.entries.basket .) -}}
|
||||
{{- $ordering_url := include "url-of" (list .Values.app.ingress.entries.ordering .) -}}
|
||||
{{- $mobileshoppingagg := include "url-of" (list .Values.app.ingress.entries.mobileshoppingagg .) -}}
|
||||
@ -27,8 +25,6 @@ data:
|
||||
all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
|
||||
mvc_e: http://{{ $mvc_url }}
|
||||
spa_e: http://{{ $spa_url }}
|
||||
locations_e: http://{{ $locations_url }}
|
||||
marketing_e: http://{{ $marketing_url }}
|
||||
basket_e: http://{{ $basket_url }}
|
||||
ordering_e: http://{{ $ordering_url }}
|
||||
mobileshoppingagg_e: http://{{ $mobileshoppingagg }}
|
||||
|
@ -40,10 +40,6 @@ env:
|
||||
key: mvc_e
|
||||
- name: SpaClient
|
||||
key: spa_e
|
||||
- name: LocationApiClient
|
||||
key: locations_e
|
||||
- name: MarketingApiClient
|
||||
key: marketing_e
|
||||
- name: BasketApiClient
|
||||
key: basket_e
|
||||
- name: OrderingApiClient
|
||||
|
@ -19,16 +19,8 @@ inf:
|
||||
db: OrderingDb # Ordering API SQL db name
|
||||
identity:
|
||||
db: IdentityDb # Ordering API SQL db name
|
||||
marketing:
|
||||
db: MarketingDb # Marketing API SQL db name
|
||||
webhooks:
|
||||
db: WebhooksDb # Webhooks DB
|
||||
mongo:
|
||||
# host: my-nosql-data # Uncomment to use specify custom mongo host. By default nosql-data is used
|
||||
locations:
|
||||
database: LocationsDb
|
||||
marketing:
|
||||
database: MarketingDb
|
||||
redis: # inf.redis defines the redis' connection strings
|
||||
basket:
|
||||
svc: basket-data # Name of k8s svc for basket redis
|
||||
|
@ -1,4 +1,4 @@
|
||||
eShop Mobile Marketing Aggregator is installed
|
||||
eShop Mobile Shopping Aggregator is installed
|
||||
----------------------------------------------
|
||||
|
||||
This API is not directly exposed outside cluster. If need to access it use:
|
||||
|
@ -21,9 +21,7 @@ data:
|
||||
internalurls__catalog__hc: http://{{ .Values.app.svc.catalog }}/hc
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
internalurls__ordering__hc: http://{{ .Values.app.svc.ordering }}/hc
|
||||
internalurls__marketing__hc: http://{{ .Values.app.svc.marketing }}/hc
|
||||
internalurls__payment__hc: http://{{ .Values.app.svc.payment }}/hc
|
||||
internalurls__location__hc: http://{{ .Values.app.svc.locations }}/hc
|
||||
internalurls__grpcBasket: "http://{{ .Values.app.svc.basket }}:{{ .Values.service.grpcPort }}"
|
||||
internalurls__grpcCatalog: "http://{{ .Values.app.svc.catalog }}:{{ .Values.service.grpcPort }}"
|
||||
internalurls__grpcOrdering: "http://{{ .Values.app.svc.ordering }}:{{ .Values.service.grpcPort }}"
|
||||
|
@ -49,12 +49,8 @@ env:
|
||||
key: internalurls__identity__hc
|
||||
- name: OrderingUrlHC
|
||||
key: internalurls__ordering__hc
|
||||
- name: MarketingUrlHC
|
||||
key: internalurls__marketing__hc
|
||||
- name: PaymentUrlHC
|
||||
key: internalurls__payment__hc
|
||||
- name: LocationUrlHC
|
||||
key: internalurls__location__hc
|
||||
- name: urls__grpcBasket
|
||||
key: internalurls__grpcBasket
|
||||
- name: urls__grpcCatalog
|
||||
|
@ -19,7 +19,6 @@ data:
|
||||
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
|
||||
webmvc__keystore: {{ .Values.inf.redis.keystore.constr }}
|
||||
internalurls__apigwws: http://{{ .Values.app.svc.webshoppingapigw }}
|
||||
internalurls__apigwwm: http://{{ .Values.app.svc.webmarketingapigw }}
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
urls__apigwws: {{ $protocol }}://{{ $webshoppingapigw }}
|
||||
urls__mvc: {{ $protocol }}://{{ $mvc }}
|
||||
|
@ -44,8 +44,6 @@ env:
|
||||
key: urls__mvc
|
||||
- name: IdentityUrl
|
||||
key: urls__IdentityUrl
|
||||
- name: MarketingUrl
|
||||
key: internalurls__apigwwm
|
||||
- name: IdentityUrlHC
|
||||
key: internalurls__identity__hc
|
||||
- name: SignalrHubUrl
|
||||
|
@ -21,9 +21,7 @@ data:
|
||||
internalurls__catalog__hc: http://{{ .Values.app.svc.catalog }}/hc
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
internalurls__ordering__hc: http://{{ .Values.app.svc.ordering }}/hc
|
||||
internalurls__marketing__hc: http://{{ .Values.app.svc.marketing }}/hc
|
||||
internalurls__payment__hc: http://{{ .Values.app.svc.payment }}/hc
|
||||
internalurls__location__hc: http://{{ .Values.app.svc.locations }}/hc
|
||||
internalurls__grpcBasket: "http://{{ .Values.app.svc.basket }}:{{ .Values.service.grpcPort }}"
|
||||
internalurls__grpcCatalog: "http://{{ .Values.app.svc.catalog }}:{{ .Values.service.grpcPort }}"
|
||||
internalurls__grpcOrdering: "http://{{ .Values.app.svc.ordering }}:{{ .Values.service.grpcPort }}"
|
||||
|
@ -49,12 +49,8 @@ env:
|
||||
key: internalurls__identity__hc
|
||||
- name: OrderingUrlHC
|
||||
key: internalurls__ordering__hc
|
||||
- name: MarketingUrlHC
|
||||
key: internalurls__marketing__hc
|
||||
- name: PaymentUrlHC
|
||||
key: internalurls__payment__hc
|
||||
- name: LocationUrlHC
|
||||
key: internalurls__location__hc
|
||||
- name: urls__grpcBasket
|
||||
key: internalurls__grpcBasket
|
||||
- name: urls__grpcCatalog
|
||||
|
@ -1,7 +1,6 @@
|
||||
{{- $name := include "webspa.fullname" . -}}
|
||||
{{- $identity := include "url-of" (list .Values.app.ingress.entries.identity .) -}}
|
||||
{{- $webshoppingapigw := include "url-of" (list .Values.app.ingress.entries.webshoppingapigw .) -}}
|
||||
{{- $webmarketingapigw := include "url-of" (list .Values.app.ingress.entries.webmarketingapigw .) -}}
|
||||
{{- $spa := include "url-of" (list .Values.app.ingress.entries.spa .) -}}
|
||||
{{- $mongo := include "mongo-name" . -}}
|
||||
{{- $protocol := include "protocol" . -}}
|
||||
@ -23,5 +22,4 @@ data:
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
urls__apigwws: {{ $protocol }}://{{ $webshoppingapigw }}
|
||||
urls__spa: {{ $protocol }}://{{ $spa }}
|
||||
urls__IdentityUrl: {{ $protocol }}://{{ $identity }}
|
||||
urls__apigwwm: {{ $protocol }}://{{ $webmarketingapigw }}
|
||||
urls__IdentityUrl: {{ $protocol }}://{{ $identity }}
|
@ -42,8 +42,6 @@ env:
|
||||
key: urls__spa
|
||||
- name: IdentityUrl
|
||||
key: urls__IdentityUrl
|
||||
- name: MarketingUrl
|
||||
key: urls__apigwwm
|
||||
- name: IdentityUrlHC
|
||||
key: internalurls__identity__hc
|
||||
- name: SignalrHubUrl
|
||||
|
@ -24,12 +24,8 @@ data:
|
||||
internalurls__spa__hc: http://{{ .Values.app.svc.spa }}/hc
|
||||
name__apigwws__hc: Web Shopping API GW HTTP Check
|
||||
internalurls__apigwws__hc: http://{{ .Values.app.svc.webshoppingapigw }}:8001/ready
|
||||
name__apigwwm__hc: Web Marketing API GW HTTP Check
|
||||
internalurls__apigwwm__hc: http://{{ .Values.app.svc.webmarketingapigw }}:8001/ready
|
||||
name__apigwms__hc: Mobile Shopping API GW HTTP Check
|
||||
internalurls__apigwms__hc: http://{{ .Values.app.svc.mobileshoppingapigw }}:8001/ready
|
||||
name__apigwmm__hc: Mobile Marketing API GW HTTP Check
|
||||
internalurls__apigwmm__hc: http://{{ .Values.app.svc.mobilemarketingapigw }}:8001/ready
|
||||
name__apigwwsagg__hc: Web Shopping Aggregator GW HTTP Check
|
||||
internalurls__apigwwsagg__hc: http://{{ .Values.app.svc.webshoppingagg }}/hc
|
||||
name__apigwmsagg__hc: Mobile Shopping Aggregator HTTP Check
|
||||
@ -44,10 +40,6 @@ data:
|
||||
internalurls__catalog__hc: http://{{ .Values.app.svc.catalog }}/hc
|
||||
name__identity__hc: Identity HTTP Check
|
||||
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
|
||||
name__marketing__hc: Marketing HTTP Check
|
||||
internalurls__marketing__hc: http://{{ .Values.app.svc.marketing }}/hc
|
||||
name__locations__hc: Locations HTTP Check
|
||||
internalurls__locations__hc: http://{{ .Values.app.svc.locations }}/hc
|
||||
name__payment__hc: Payment HTTP Check
|
||||
internalurls__payment__hc: http://{{ .Values.app.svc.payment }}/hc
|
||||
name__signalrhub__hc: Ordering SignalR Hub HTTP Check
|
||||
|
@ -67,24 +67,16 @@ env:
|
||||
- name: HealthChecks-UI__HealthChecks__7__Uri
|
||||
key: internalurls__identity__hc
|
||||
- name: HealthChecks-UI__HealthChecks__8__Name
|
||||
key: name__marketing__hc
|
||||
- name: HealthChecks-UI__HealthChecks__8__Uri
|
||||
key: internalurls__marketing__hc
|
||||
- name: HealthChecks-UI__HealthChecks__9__Name
|
||||
key: name__locations__hc
|
||||
- name: HealthChecks-UI__HealthChecks__9__Uri
|
||||
key: internalurls__locations__hc
|
||||
- name: HealthChecks-UI__HealthChecks__10__Name
|
||||
key: name__payment__hc
|
||||
- name: HealthChecks-UI__HealthChecks__10__Uri
|
||||
- name: HealthChecks-UI__HealthChecks__8__Uri
|
||||
key: internalurls__payment__hc
|
||||
- name: HealthChecks-UI__HealthChecks__11__Name
|
||||
- name: HealthChecks-UI__HealthChecks__9__Name
|
||||
key: name__signalrhub__hc
|
||||
- name: HealthChecks-UI__HealthChecks__11__Uri
|
||||
- name: HealthChecks-UI__HealthChecks__9__Uri
|
||||
key: internalurls__signalrhub__hc
|
||||
- name: HealthChecks-UI__HealthChecks__12__Name
|
||||
- name: HealthChecks-UI__HealthChecks__10__Name
|
||||
key: name__orderingbackground__hc
|
||||
- name: HealthChecks-UI__HealthChecks__12__Uri
|
||||
- name: HealthChecks-UI__HealthChecks__10__Uri
|
||||
key: internalurls__orderingbackground__hc
|
||||
|
||||
# values define environment variables with a fixed value (no configmap involved) (name is name of var, and value is its value)
|
||||
|
@ -16,39 +16,35 @@ To enable the service bus of Azure in eShop solution it is necessary having crea
|
||||
For example:
|
||||
>ESHOP_AZURE_SERVICE_BUS=Endpoint=sb://yourservicebusservice.servicebus.windows.net/;SharedAccessKeyName=Root;SharedAccessKey=yourtopicpolicykey=;EntityPath=eshop_event_bus
|
||||
|
||||
Once the service bus service is created, it is necessary to set to true the "AzureServiceBusEnabled" environment variable from `settings.json` file on Catalog.API, Ordering.API, Basket.API, Payment.API, GracePeriodManager, Marketing.API and Locations.API.
|
||||
Once the service bus service is created, it is necessary to set to true the "AzureServiceBusEnabled" environment variable from `settings.json` file on Catalog.API, Ordering.API, Basket.API, Payment.API and GracePeriodManager.
|
||||
|
||||
With the steps explained in the next section, you will be able to run the application with Azure Storage Account instead of the local container storage.
|
||||
|
||||
# Azure Storage Account service
|
||||
To enable Azure storage of Azure in eShopOnAzure solution it is necessary having created previously the storage service through ARM file or manually through Azure portal. You can use the ARM files find under **deploy/az/storage** folder already created in eShop. Once the storage account is created, it is very important to create a new container(blob kind) and upload the solution catalog pics files before to continue.Later, it is necessary to set to true the "AzureStorageEnabled" environment variable from `settings.json` in Catalog.API and Marketing.API.Finally, it is necessary to get the container endpoint url from information service in the Azure portal, This url must be declared on .env file located in the solution root folder with `ESHOP_AZURE_STORAGE_CATALOG` for the Catalog.API content and `ESHOP_AZURE_STORAGE_MARKETING` for the Marketing.API content.
|
||||
To enable Azure storage of Azure in eShopOnAzure solution it is necessary having created previously the storage service through ARM file or manually through Azure portal. You can use the ARM files find under **deploy/az/storage** folder already created in eShop. Once the storage account is created, it is very important to create a new container(blob kind) and upload the solution catalog pics files before to continue.Later, it is necessary to set to true the "AzureStorageEnabled" environment variable from `settings.json` in Catalog.API.Finally, it is necessary to get the container endpoint url from information service in the Azure portal, This url must be declared on .env file located in the solution root folder with `ESHOP_AZURE_STORAGE_CATALOG` for the Catalog.API content.
|
||||
|
||||
Do not forget to put a slash character '/' in the end of the url.
|
||||
|
||||
For example:
|
||||
>ESHOP_AZURE_STORAGE_CATALOG=https://yourcatalogstorageaccountservice.blob.core.windows.net/yourcontainername/
|
||||
>ESHOP_AZURE_STORAGE_MARKETING=https://yourmarketingstorageaccountservice.blob.core.windows.net/yourcontainername/
|
||||
|
||||
|
||||
## Check status of Azure Storage Account with Health Checks
|
||||
It is possible to add status check for the Azure Storage Account inside the Catalog Web Status. In case that the status check is enabled, for the Catalog and/or Marketing section in the WebStatus page, Azure Storage will be checked as one of the dependencies for theses APIs. To enable this check add the account name and key to the .env file for your account.
|
||||
It is possible to add status check for the Azure Storage Account inside the Catalog Web Status. In case that the status check is enabled, for the Catalog section in the WebStatus page, Azure Storage will be checked as one of the dependencies for theses APIs. To enable this check add the account name and key to the .env file for your account.
|
||||
|
||||
For example:
|
||||
>ESHOP_AZURE_STORAGE_CATALOG_NAME=storageaccountname
|
||||
>ESHOP_AZURE_STORAGE_CATALOG_KEY=storageaccountkey
|
||||
>ESHOP_AZURE_STORAGE_MARKETING_NAME=storageaccountname
|
||||
>ESHOP_AZURE_STORAGE_MARKETING_KEY=storageaccountkey
|
||||
|
||||
With the steps explained in the next section, you will be able to run the application with Azure SQL Database instead of local storage.
|
||||
|
||||
# Azure SQL Database
|
||||
To enable Azure SQL Database in eShop is required to have a Azure SQL with the databases for Ordering.API, Identity.API, Catalaog.API and Marketing.API. You can use the [ARM files](deploy/az/sql/readme.md) already created in this project or do it manually. Once the databases are created, it is necessary to get the connection string for each service and set the corresponding variable in the .env file.
|
||||
To enable Azure SQL Database in eShop is required to have a Azure SQL with the databases for Ordering.API, Identity.API, Catalaog.API. You can use the [ARM files](deploy/az/sql/readme.md) already created in this project or do it manually. Once the databases are created, it is necessary to get the connection string for each service and set the corresponding variable in the .env file.
|
||||
|
||||
For example:
|
||||
>ESHOP_AZURE_CATALOG_DB=catalogazureconnectionstring
|
||||
>ESHOP_AZURE_IDENTITY_DB=identityazureconnectionstring
|
||||
>ESHOP_AZURE_ORDERING_DB=orderingazureconnectionstring
|
||||
>ESHOP_AZURE_MARKETING_DB=marketingazureconnectionstring
|
||||
|
||||
With the steps explained in the next section, you will be able to run the application with Azure Cosmos DB Database instead of local storage.
|
||||
|
||||
@ -61,7 +57,5 @@ For example:
|
||||
# Azure Functions
|
||||
To enable the Azure Functions in eShop you can add the URI where the functions have been deployed. You can use the ARM files under **deploy/az/azurefunctions** to create the resources in Azure. Once created and available, it is necessary to add to the .env file the `ESHOP_AZUREFUNC_CAMPAIGN_DETAILS_URI` variable.
|
||||
|
||||
For example:
|
||||
>ESHOP_AZUREFUNC_CAMPAIGN_DETAILS_URI=https://marketing-functions.azurewebsites.net/api/MarketingDetailsHttpTrigger?code=AzureFunctioncode
|
||||
|
||||
See Azure Functions deployment Files and Readme for more details [ARM files](deploy/az/azurefunctions/readme.md)
|
@ -27,7 +27,6 @@ When using this file the following environments variables must be set:
|
||||
|
||||
* `ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP` with the IP or DNS name of the docker host that runs the services (can use `localhost` if needed).
|
||||
* `ESHOP_AZURE_STORAGE_CATALOG` with the URL of the Azure Storage that will host the catalog images
|
||||
* `ESHOP_AZURE_STORAGE_MARKETING` with the URL of the Azure Storage that will host the marketing campaign images
|
||||
|
||||
You might wonder why an external image resource (storage) is needed when using `docker-compose.prod.yml` instead of `docker-compose.override.yml`. Answer to this is related to a limitation of Docker Compose file format. This is how we set the environment configuration of Catalog microservice in `docker-compose.override.yml`:
|
||||
|
||||
|
@ -20,5 +20,4 @@ Web/WebSPA/wwwroot/
|
||||
packages/
|
||||
test-results/
|
||||
TestResults/
|
||||
Mobile/
|
||||
Services/Marketing/Infrastructure/
|
||||
Mobile/
|
7
src/.env
7
src/.env
@ -7,21 +7,17 @@
|
||||
# Use this values to run the app locally in Windows
|
||||
ESHOP_EXTERNAL_DNS_NAME_OR_IP=host.docker.internal
|
||||
ESHOP_STORAGE_CATALOG_URL=http://host.docker.internal:5202/c/api/v1/catalog/items/[0]/pic/
|
||||
ESHOP_STORAGE_MARKETING_URL=http://host.docker.internal:5110/api/v1/campaigns/[0]/pic/
|
||||
|
||||
# Use this values to run the app locally in Mac
|
||||
# ESHOP_EXTERNAL_DNS_NAME_OR_IP=docker.for.mac.localhost
|
||||
# ESHOP_STORAGE_CATALOG_URL=http://docker.for.mac.localhost:5202/c/api/v1/catalog/items/[0]/pic/
|
||||
# ESHOP_STORAGE_MARKETING_URL=http://docker.for.mac.localhost:5110/api/v1/campaigns/[0]/pic/
|
||||
|
||||
# Use this values to run the app locally in Linux
|
||||
# ESHOP_EXTERNAL_DNS_NAME_OR_IP=docker.for.linux.localhost
|
||||
# ESHOP_STORAGE_CATALOG_URL=http://docker.for.linux.localhost:5202/c/api/v1/catalog/items/[0]/pic/
|
||||
# ESHOP_STORAGE_MARKETING_URL=http://docker.for.linux.localhost:5110/api/v1/campaigns/[0]/pic/
|
||||
|
||||
# Configure this values to the cloud storage locations
|
||||
# ESHOP_STORAGE_CATALOG_URL=<YourAzureStorage_Catalog_BLOB_URL>
|
||||
# ESHOP_STORAGE_MARKETING_URL=<YourAzureStorage_Marketing__BLOB_URL>
|
||||
|
||||
ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP=10.121.122.162
|
||||
|
||||
@ -31,12 +27,9 @@ ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP=10.121.122.162
|
||||
#ESHOP_AZURE_CATALOG_DB=<YourAzureSQLDBCatalogDBConnString>
|
||||
#ESHOP_AZURE_IDENTITY_DB=<YourAzureSQLDBIdentityDBConnString>
|
||||
#ESHOP_AZURE_ORDERING_DB=<YourAzureSQLDBOrderingDBConnString>
|
||||
#ESHOP_AZURE_MARKETING_DB=<YourAzureSQLDBMarketingDBConnString>
|
||||
#ESHOP_AZUREFUNC_CAMPAIGN_DETAILS_URI=<YourAzureFunctionCampaignDetailsURI>
|
||||
#ESHOP_AZURE_STORAGE_CATALOG_NAME=<YourAzureStorageCatalogName>
|
||||
#ESHOP_AZURE_STORAGE_CATALOG_KEY=<YourAzureStorageCatalogKey>
|
||||
#ESHOP_AZURE_STORAGE_MARKETING_NAME=<YourAzureStorageMarketingName>
|
||||
#ESHOP_AZURE_STORAGE_MARKETING_KEY=<YourAzureStorageMarketingKey>
|
||||
#ESHOP_SERVICE_BUS_USERNAME=<ServiceBusUserName-OnlyUsedIfUsingRabbitMQUnderwindows>
|
||||
#ESHOP_SERVICE_BUS_PASSWORD=<ServiceBusUserPassword-OnlyUsedIfUsingRabbitMQUnderwindows>
|
||||
#INSTRUMENTATION_KEY=
|
||||
|
Binary file not shown.
@ -13,8 +13,6 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Configuration
|
||||
{
|
||||
new ApiResource("orders", "Orders Service"),
|
||||
new ApiResource("basket", "Basket Service"),
|
||||
new ApiResource("marketing", "Marketing Service"),
|
||||
new ApiResource("locations", "Locations Service"),
|
||||
new ApiResource("mobileshoppingagg", "Mobile Shopping Aggregator"),
|
||||
new ApiResource("webshoppingagg", "Web Shopping Aggregator"),
|
||||
new ApiResource("orders.signalrhub", "Ordering Signalr Hub"),
|
||||
@ -55,8 +53,6 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Configuration
|
||||
IdentityServerConstants.StandardScopes.Profile,
|
||||
"orders",
|
||||
"basket",
|
||||
"locations",
|
||||
"marketing",
|
||||
"webshoppingagg",
|
||||
"orders.signalrhub",
|
||||
"webhooks"
|
||||
@ -84,8 +80,6 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Configuration
|
||||
IdentityServerConstants.StandardScopes.OfflineAccess,
|
||||
"orders",
|
||||
"basket",
|
||||
"locations",
|
||||
"marketing",
|
||||
"mobileshoppingagg",
|
||||
"webhooks"
|
||||
},
|
||||
@ -122,8 +116,6 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Configuration
|
||||
IdentityServerConstants.StandardScopes.OfflineAccess,
|
||||
"orders",
|
||||
"basket",
|
||||
"locations",
|
||||
"marketing",
|
||||
"webshoppingagg",
|
||||
"orders.signalrhub",
|
||||
"webhooks"
|
||||
@ -191,43 +183,11 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Configuration
|
||||
IdentityServerConstants.StandardScopes.OfflineAccess,
|
||||
"orders",
|
||||
"basket",
|
||||
"locations",
|
||||
"marketing",
|
||||
"webshoppingagg",
|
||||
"webhooks"
|
||||
},
|
||||
},
|
||||
new Client
|
||||
{
|
||||
ClientId = "locationsswaggerui",
|
||||
ClientName = "Locations Swagger UI",
|
||||
AllowedGrantTypes = GrantTypes.Implicit,
|
||||
AllowAccessTokensViaBrowser = true,
|
||||
|
||||
RedirectUris = { $"{clientsUrl["LocationsApi"]}/swagger/oauth2-redirect.html" },
|
||||
PostLogoutRedirectUris = { $"{clientsUrl["LocationsApi"]}/swagger/" },
|
||||
|
||||
AllowedScopes =
|
||||
{
|
||||
"locations"
|
||||
}
|
||||
},
|
||||
new Client
|
||||
{
|
||||
ClientId = "marketingswaggerui",
|
||||
ClientName = "Marketing Swagger UI",
|
||||
AllowedGrantTypes = GrantTypes.Implicit,
|
||||
AllowAccessTokensViaBrowser = true,
|
||||
|
||||
RedirectUris = { $"{clientsUrl["MarketingApi"]}/swagger/oauth2-redirect.html" },
|
||||
PostLogoutRedirectUris = { $"{clientsUrl["MarketingApi"]}/swagger/" },
|
||||
|
||||
AllowedScopes =
|
||||
{
|
||||
"marketing"
|
||||
}
|
||||
},
|
||||
new Client
|
||||
{
|
||||
ClientId = "basketswaggerui",
|
||||
ClientName = "Basket Swagger UI",
|
||||
|
@ -22,8 +22,6 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Data
|
||||
clientUrls.Add("Mvc", configuration.GetValue<string>("MvcClient"));
|
||||
clientUrls.Add("Spa", configuration.GetValue<string>("SpaClient"));
|
||||
clientUrls.Add("Xamarin", configuration.GetValue<string>("XamarinCallback"));
|
||||
clientUrls.Add("LocationsApi", configuration.GetValue<string>("LocationApiClient"));
|
||||
clientUrls.Add("MarketingApi", configuration.GetValue<string>("MarketingApiClient"));
|
||||
clientUrls.Add("BasketApi", configuration.GetValue<string>("BasketApiClient"));
|
||||
clientUrls.Add("OrderingApi", configuration.GetValue<string>("OrderingApiClient"));
|
||||
clientUrls.Add("MobileShoppingAgg", configuration.GetValue<string>("MobileShoppingAggClient"));
|
||||
|
@ -1,15 +0,0 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
// For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
|
||||
|
||||
namespace Microsoft.eShopOnContainers.Services.Locations.API.Controllers
|
||||
{
|
||||
public class HomeController : Controller
|
||||
{
|
||||
// GET: /<controller>/
|
||||
public IActionResult Index()
|
||||
{
|
||||
return new RedirectResult("~/swagger");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,72 +0,0 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.eShopOnContainers.Services.Locations.API.Infrastructure.Services;
|
||||
using Microsoft.eShopOnContainers.Services.Locations.API.Model;
|
||||
using Microsoft.eShopOnContainers.Services.Locations.API.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Locations.API.Controllers
|
||||
{
|
||||
[Route("api/v1/[controller]")]
|
||||
[Authorize]
|
||||
[ApiController]
|
||||
public class LocationsController : ControllerBase
|
||||
{
|
||||
private readonly ILocationsService _locationsService;
|
||||
private readonly IIdentityService _identityService;
|
||||
|
||||
public LocationsController(ILocationsService locationsService, IIdentityService identityService)
|
||||
{
|
||||
_locationsService = locationsService ?? throw new ArgumentNullException(nameof(locationsService));
|
||||
_identityService = identityService ?? throw new ArgumentNullException(nameof(identityService));
|
||||
}
|
||||
|
||||
//GET api/v1/[controller]/user/1
|
||||
[Route("user/{userId:guid}")]
|
||||
[HttpGet]
|
||||
[ProducesResponseType(typeof(UserLocation), (int)HttpStatusCode.OK)]
|
||||
public async Task<ActionResult<UserLocation>> GetUserLocationAsync(Guid userId)
|
||||
{
|
||||
return await _locationsService.GetUserLocationAsync(userId.ToString());
|
||||
}
|
||||
|
||||
//GET api/v1/[controller]/
|
||||
[Route("")]
|
||||
[HttpGet]
|
||||
[ProducesResponseType(typeof(List<Microsoft.eShopOnContainers.Services.Locations.API.Model.Locations>), (int)HttpStatusCode.OK)]
|
||||
public async Task<ActionResult<List<Microsoft.eShopOnContainers.Services.Locations.API.Model.Locations>>> GetAllLocationsAsync()
|
||||
{
|
||||
return await _locationsService.GetAllLocationAsync();
|
||||
}
|
||||
|
||||
//GET api/v1/[controller]/1
|
||||
[Route("{locationId}")]
|
||||
[HttpGet]
|
||||
[ProducesResponseType(typeof(Microsoft.eShopOnContainers.Services.Locations.API.Model.Locations), (int)HttpStatusCode.OK)]
|
||||
public async Task<ActionResult<Microsoft.eShopOnContainers.Services.Locations.API.Model.Locations>> GetLocationAsync(int locationId)
|
||||
{
|
||||
return await _locationsService.GetLocationAsync(locationId);
|
||||
}
|
||||
|
||||
//POST api/v1/[controller]/
|
||||
[Route("")]
|
||||
[HttpPost]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest)]
|
||||
public async Task<ActionResult> CreateOrUpdateUserLocationAsync([FromBody]LocationRequest newLocReq)
|
||||
{
|
||||
var userId = _identityService.GetUserIdentity();
|
||||
var result = await _locationsService.AddOrUpdateUserLocationAsync(userId, newLocReq);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
return BadRequest();
|
||||
}
|
||||
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
|
||||
WORKDIR /app
|
||||
EXPOSE 80
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
|
||||
WORKDIR /src
|
||||
|
||||
# It's important to keep lines from here down to "COPY . ." identical in all Dockerfiles
|
||||
# to take advantage of Docker's build cache, to speed up local container builds
|
||||
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
|
||||
|
||||
COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj"
|
||||
COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj"
|
||||
COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj"
|
||||
COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj"
|
||||
COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj"
|
||||
COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj"
|
||||
COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj"
|
||||
COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj"
|
||||
COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj"
|
||||
COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj"
|
||||
COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj"
|
||||
COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj"
|
||||
COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj"
|
||||
COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj"
|
||||
COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj"
|
||||
COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj"
|
||||
COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj"
|
||||
COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj"
|
||||
COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj"
|
||||
COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj"
|
||||
COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj"
|
||||
COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj"
|
||||
COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj"
|
||||
COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj"
|
||||
COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj"
|
||||
|
||||
COPY "docker-compose.dcproj" "docker-compose.dcproj"
|
||||
|
||||
COPY "NuGet.config" "NuGet.config"
|
||||
|
||||
RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln"
|
||||
|
||||
COPY . .
|
||||
WORKDIR /src/Services/Location/Locations.API
|
||||
RUN dotnet publish --no-restore -c Release -o /app
|
||||
|
||||
FROM build as functionaltest
|
||||
WORKDIR /src/Services/Location/Locations.FunctionalTests
|
||||
|
||||
FROM build AS publish
|
||||
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app .
|
||||
ENTRYPOINT ["dotnet", "Locations.API.dll"]
|
@ -1,17 +0,0 @@
|
||||
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster
|
||||
ARG BUILD_CONFIGURATION=Debug
|
||||
ENV ASPNETCORE_ENVIRONMENT=Development
|
||||
ENV DOTNET_USE_POLLING_FILE_WATCHER=true
|
||||
EXPOSE 80
|
||||
|
||||
WORKDIR /src
|
||||
COPY ["Services/Location/Locations.API/Locations.API.csproj", "Services/Location/Locations.API/"]
|
||||
COPY ["BuildingBlocks/EventBus/EventBus/EventBus.csproj", "BuildingBlocks/EventBus/EventBus/"]
|
||||
COPY ["BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj", "BuildingBlocks/EventBus/EventBusRabbitMQ/"]
|
||||
COPY ["BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj", "BuildingBlocks/EventBus/EventBusServiceBus/"]
|
||||
RUN dotnet restore Services/Location/Locations.API/Locations.API.csproj -nowarn:msb3202,nu1503
|
||||
COPY . .
|
||||
WORKDIR "/src/Services/Location/Locations.API"
|
||||
RUN dotnet build --no-restore -c $BUILD_CONFIGURATION
|
||||
|
||||
ENTRYPOINT ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"]
|
@ -1,14 +0,0 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Microsoft.eShopOnContainers.Services.Locations.API.Infrastructure.ActionResults
|
||||
{
|
||||
public class InternalServerErrorObjectResult : ObjectResult
|
||||
{
|
||||
public InternalServerErrorObjectResult(object error)
|
||||
: base(error)
|
||||
{
|
||||
StatusCode = StatusCodes.Status500InternalServerError;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
namespace Microsoft.eShopOnContainers.Services.Locations.API.Infrastructure.Exceptions
|
||||
{
|
||||
using System;
|
||||
|
||||
/// <summary>
|
||||
/// Exception type for app exceptions
|
||||
/// </summary>
|
||||
public class LocationDomainException : Exception
|
||||
{
|
||||
public LocationDomainException()
|
||||
{ }
|
||||
|
||||
public LocationDomainException(string message)
|
||||
: base(message)
|
||||
{ }
|
||||
|
||||
public LocationDomainException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{ }
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Microsoft.eShopOnContainers.Services.Locations.API.Infrastructure.Filters
|
||||
{
|
||||
internal class AuthorizeCheckOperationFilter : IOperationFilter
|
||||
{
|
||||
public void Apply(OpenApiOperation operation, OperationFilterContext context)
|
||||
{
|
||||
// Check for authorize attribute
|
||||
var hasAuthorize = context.MethodInfo.DeclaringType.GetCustomAttributes(true).OfType<AuthorizeAttribute>().Any() ||
|
||||
context.MethodInfo.GetCustomAttributes(true).OfType<AuthorizeAttribute>().Any();
|
||||
|
||||
if (!hasAuthorize) return;
|
||||
|
||||
operation.Responses.TryAdd("401", new OpenApiResponse() { Description = "Unauthorized" });
|
||||
operation.Responses.TryAdd("403", new OpenApiResponse() { Description = "Forbidden" });
|
||||
|
||||
var oAuthScheme = new OpenApiSecurityScheme
|
||||
{
|
||||
Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "oauth2" }
|
||||
};
|
||||
|
||||
operation.Security = new List<OpenApiSecurityRequirement>
|
||||
{
|
||||
new OpenApiSecurityRequirement
|
||||
{
|
||||
[ oAuthScheme ] = new [] { "locationsapi" }
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
namespace Microsoft.eShopOnContainers.Services.Locations.API.Infrastructure.Filters
|
||||
{
|
||||
using AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using Microsoft.eShopOnContainers.Services.Locations.API.Infrastructure.ActionResults;
|
||||
using Microsoft.eShopOnContainers.Services.Locations.API.Infrastructure.Exceptions;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Net;
|
||||
|
||||
public class HttpGlobalExceptionFilter : IExceptionFilter
|
||||
{
|
||||
private readonly IHostEnvironment env;
|
||||
private readonly ILogger<HttpGlobalExceptionFilter> logger;
|
||||
|
||||
public HttpGlobalExceptionFilter(IHostEnvironment env, ILogger<HttpGlobalExceptionFilter> logger)
|
||||
{
|
||||
this.env = env;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
public void OnException(ExceptionContext context)
|
||||
{
|
||||
logger.LogError(new EventId(context.Exception.HResult),
|
||||
context.Exception,
|
||||
context.Exception.Message);
|
||||
|
||||
if (context.Exception.GetType() == typeof(LocationDomainException))
|
||||
{
|
||||
var json = new JsonErrorResponse
|
||||
{
|
||||
Messages = new[] { context.Exception.Message }
|
||||
};
|
||||
|
||||
// Result asigned to a result object but in destiny the response is empty. This is a known bug of .net core 1.1
|
||||
//It will be fixed in .net core 1.1.2. See https://github.com/aspnet/Mvc/issues/5594 for more information
|
||||
context.Result = new BadRequestObjectResult(json);
|
||||
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
|
||||
}
|
||||
else
|
||||
{
|
||||
var json = new JsonErrorResponse
|
||||
{
|
||||
Messages = new[] { "An error occur.Try it again." }
|
||||
};
|
||||
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
json.DeveloperMessage = context.Exception;
|
||||
}
|
||||
|
||||
// Result asigned to a result object but in destiny the response is empty. This is a known bug of .net core 1.1
|
||||
// It will be fixed in .net core 1.1.2. See https://github.com/aspnet/Mvc/issues/5594 for more information
|
||||
context.Result = new InternalServerErrorObjectResult(json);
|
||||
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
|
||||
}
|
||||
context.ExceptionHandled = true;
|
||||
}
|
||||
|
||||
private class JsonErrorResponse
|
||||
{
|
||||
public string[] Messages { get; set; }
|
||||
|
||||
public object DeveloperMessage { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user