From 0df81ff5d26cae6fb57de77d714388ed96651461 Mon Sep 17 00:00:00 2001 From: eiximenis Date: Tue, 15 Oct 2019 11:23:25 +0200 Subject: [PATCH] Removing unneeded files. Making compatible FailingMiddleware & Healthchecks --- k8s/basket-data.yaml | 29 - k8s/deployments.yaml | 923 ------------------ k8s/eshop-namespace.yaml | 5 - k8s/ingress.yaml | 59 -- k8s/keystore-data.yaml | 29 - k8s/linkerd/basket-api-sp.yaml | 42 + k8s/linkerd/catalog-api-sp.yaml | 47 + k8s/nosql-data.yaml | 30 - k8s/rabbitmq.yaml | 30 - k8s/services.yaml | 195 ---- k8s/sql-data.yaml | 35 - .../Middlewares/FailingMiddleware.cs | 15 +- .../Middlewares/FailingOptions.cs | 2 + src/Services/Basket/Basket.API/Program.cs | 5 +- 14 files changed, 108 insertions(+), 1338 deletions(-) delete mode 100644 k8s/basket-data.yaml delete mode 100644 k8s/deployments.yaml delete mode 100644 k8s/eshop-namespace.yaml delete mode 100644 k8s/ingress.yaml delete mode 100644 k8s/keystore-data.yaml create mode 100644 k8s/linkerd/basket-api-sp.yaml create mode 100644 k8s/linkerd/catalog-api-sp.yaml delete mode 100644 k8s/nosql-data.yaml delete mode 100644 k8s/rabbitmq.yaml delete mode 100644 k8s/services.yaml delete mode 100644 k8s/sql-data.yaml diff --git a/k8s/basket-data.yaml b/k8s/basket-data.yaml deleted file mode 100644 index b48e73fed..000000000 --- a/k8s/basket-data.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: basket-data - name: basket-data -spec: - ports: - - port: 6379 - selector: - app: eshop - component: basket-data ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: basket-data -spec: - template: - metadata: - labels: - app: eshop - component: basket-data - spec: - containers: - - name: basket-data - image: redis - diff --git a/k8s/deployments.yaml b/k8s/deployments.yaml deleted file mode 100644 index ca97df9eb..000000000 --- a/k8s/deployments.yaml +++ /dev/null @@ -1,923 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: basket -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: basket - spec: - containers: - - name: basket - image: eshop/basket.api - imagePullPolicy: Always - env: - - name: PATH_BASE - value: /basket-api - - name: ConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: basket__ConnectionString - - name: EventBusConnection - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EventBusConnection - - name: AzureServiceBusEnabled - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__UseAzureServiceBus - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: IdentityUrl - valueFrom: - configMapKeyRef: - name: urls - key: identity_e - - name: UseLoadTest - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EnableLoadTest - - name: OrchestratorType - value: 'K8S' - ports: - - containerPort: 80 - - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: catalog -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: catalog - spec: - containers: - - name: catalog - image: eshop/catalog.api - imagePullPolicy: Always - env: - - name: PATH_BASE - value: /catalog-api - - name: ConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: catalog__ConnectionString - - name: PicBaseUrl - valueFrom: - configMapKeyRef: - name: urls - key: PicBaseUrl - - name: AzureStorageEnabled - valueFrom: - configMapKeyRef: - name: externalcfg - key: catalog__AzureStorageEnabled - - name: EventBusConnection - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EventBusConnection - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: OrchestratorType - value: 'K8S' - ports: - - containerPort: 80 - - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: identity -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: identity - spec: - containers: - - name: identity - image: eshop/identity.api - imagePullPolicy: Always - env: - - name: PATH_BASE - value: /identity - - name: ConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: identity__ConnectionString - - name: DPConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: keystore - - name: IsClusterEnv - value: 'True' - - name: MvcClient - valueFrom: - configMapKeyRef: - name: urls - key: mvc_e - - name: SpaClient - valueFrom: - configMapKeyRef: - name: urls - key: spa_e - - name: LocationApiClient - valueFrom: - configMapKeyRef: - name: urls - key: locations_e - - name: MarketingApiClient - valueFrom: - configMapKeyRef: - name: urls - key: marketing_e - - name: BasketApiClient - valueFrom: - configMapKeyRef: - name: urls - key: basket_e - - name: OrderingApiClient - valueFrom: - configMapKeyRef: - name: urls - key: ordering_e - - name: MobileShoppingAggClient - valueFrom: - configMapKeyRef: - name: urls - key: mobileshoppingagg_e - - name: WebShoppingAggClient - valueFrom: - configMapKeyRef: - name: urls - key: webshoppingagg_e - - name: XamarinCallback - valueFrom: - configMapKeyRef: - name: urls - key: xamarin_callback_e - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: OrchestratorType - value: 'K8S' - ports: - - containerPort: 80 - - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: ordering -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: ordering - spec: - containers: - - name: ordering - image: eshop/ordering.api - imagePullPolicy: Always - env: - - name: PATH_BASE - value: /ordering-api - - name: ConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: ordering__ConnectionString - - name: EventBusConnection - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EventBusConnection - - name: AzureServiceBusEnabled - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__UseAzureServiceBus - - name: IdentityUrl - valueFrom: - configMapKeyRef: - name: urls - key: identity_e - - name: CheckUpdateTime - valueFrom: - configMapKeyRef: - name: externalcfg - key: GracePeriodManager__CheckUpdateTime - - name: GracePeriodTime - valueFrom: - configMapKeyRef: - name: externalcfg - key: GracePeriodManager__GracePeriodTime - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: UseLoadTest - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EnableLoadTest - - name: OrchestratorType - value: 'K8S' - ports: - - containerPort: 80 - - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: ordering-backgroundtasks -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: ordering-backgroundtasks - spec: - containers: - - name: ordering-backgroundtasks - image: eshop/ordering.backgroundtasks - imagePullPolicy: Always - env: - - name: ConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: ordering__ConnectionString - - name: EventBusConnection - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EventBusConnection - - name: AzureServiceBusEnabled - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__UseAzureServiceBus - - name: CheckUpdateTime - valueFrom: - configMapKeyRef: - name: externalcfg - key: GracePeriodManager__CheckUpdateTime - - name: GracePeriodTime - valueFrom: - configMapKeyRef: - name: externalcfg - key: GracePeriodManager__GracePeriodTime - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: UseLoadTest - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EnableLoadTest - - name: OrchestratorType - value: 'K8S' - ports: - - containerPort: 80 - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: ordering-signalrhub -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: ordering-signalrhub - spec: - containers: - - name: ordering-signalrhub - image: eshop/ordering.signalrhub - imagePullPolicy: Always - env: - - name: EventBusConnection - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EventBusConnection - - name: IdentityUrl - valueFrom: - configMapKeyRef: - name: urls - key: identity_e - - name: AzureServiceBusEnabled - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__UseAzureServiceBus - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: OrchestratorType - value: 'K8S' - - name: IsClusterEnv - value: 'True' - - name: SignalrStoreConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: keystore - ports: - - containerPort: 80 - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: locations -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: locations - spec: - containers: - - name: locations - image: eshop/locations.api - imagePullPolicy: Always - env: - - name: PATH_BASE - value: /locations-api - - name: ConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: locations__ConnectionString - - name: Database - valueFrom: - configMapKeyRef: - name: externalcfg - key: locations__Database - - name: AzureServiceBusEnabled - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__UseAzureServiceBus - - name: EventBusConnection - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EventBusConnection - - name: IdentityUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: identity - - name: IdentityUrlExternal - valueFrom: - configMapKeyRef: - name: urls - key: identity_e - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: UseLoadTest - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EnableLoadTest - - name: OrchestratorType - value: 'K8S' - ports: - - containerPort: 80 - - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: marketing -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: marketing - spec: - containers: - - name: marketing - image: eshop/marketing.api - imagePullPolicy: Always - env: - - name: PATH_BASE - value: /marketing-api - - name: ConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: marketing__ConnectionString - - name: MongoConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: marketing__MongoConnectionString - - name: MongoDatabase - valueFrom: - configMapKeyRef: - name: externalcfg - key: marketing__MongoDatabase - - name: AzureServiceBusEnabled - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__UseAzureServiceBus - - name: EventBusConnection - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EventBusConnection - - name: IdentityUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: identity - - name: IdentityUrlExternal - valueFrom: - configMapKeyRef: - name: urls - key: identity_e - - name: PicBaseUrl - valueFrom: - configMapKeyRef: - name: urls - key: Marketing_PicBaseUrl - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: UseLoadTest - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EnableLoadTest - - name: OrchestratorType - value: 'K8S' - ports: - - containerPort: 80 - - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: payment -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: payment - spec: - containers: - - name: payment - image: eshop/payment.api - imagePullPolicy: Always - env: - - name: PATH_BASE - value: /payment-api - - name: AzureServiceBusEnabled - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__UseAzureServiceBus - - name: EventBusConnection - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EventBusConnection - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: OrchestratorType - value: 'K8S' - ports: - - containerPort: 80 - - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: webmvc -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: webmvc - spec: - containers: - - name: webmvc - image: eshop/webmvc - imagePullPolicy: Always - env: - - name: PATH_BASE - value: /webmvc - - name: DPConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: keystore - - name: IsClusterEnv - value: 'True' - - name: PurchaseUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: apigwws - - name: ExternalPurchaseUrl - valueFrom: - configMapKeyRef: - name: urls - key: webshoppingapigw_e - - name: CallBackUrl - valueFrom: - configMapKeyRef: - name: urls - key: mvc_e - - name: IdentityUrl - valueFrom: - configMapKeyRef: - name: urls - key: identity_e - - name: MarketingUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: apigwwm - - name: BasketUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: basket__hc - - name: CatalogUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: catalog__hc - - name: IdentityUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: identity__hc - - name: OrderingUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: ordering__hc - - name: MarketingUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: marketing__hc - - name: PaymentUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: payment__hc - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: UseLoadTest - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__EnableLoadTest - - name: OrchestratorType - value: 'K8S' - - name: SignalrHubUrl - valueFrom: - configMapKeyRef: - name: urls - key: webshoppingapigw_e - ports: - - containerPort: 80 - - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: webstatus -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: webstatus - spec: - containers: - - name: webstatus - image: eshop/webstatus - imagePullPolicy: Always - env: - - name: PATH_BASE - value: /webstatus - - name: BasketUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: basket__hc - - name: CatalogUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: catalog__hc - - name: IdentityUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: identity__hc - - name: OrderingUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: ordering__hc - - name: LocationsUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: locations__hc - - name: MarketingUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: marketing__hc - - name: mvc - valueFrom: - configMapKeyRef: - name: internalurls - key: mvc__hc - - name: spa - valueFrom: - configMapKeyRef: - name: internalurls - key: spa__hc - - name: PaymentUrl - valueFrom: - configMapKeyRef: - name: internalurls - key: payment__hc - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: OrchestratorType - value: 'K8S' - ports: - - containerPort: 80 - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: webspa -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: webspa - spec: - containers: - - name: webspa - image: eshop/webspa - imagePullPolicy: Always - env: - - name: ASPNETCORE_URLS - value: http://0.0.0.0:80 - - name: DPConnectionString - valueFrom: - configMapKeyRef: - name: externalcfg - key: keystore - - name: IsClusterEnv - value: 'True' - - name: PurchaseUrl - valueFrom: - configMapKeyRef: - name: urls - key: webshoppingapigw_e - - name: CallBackUrl - valueFrom: - configMapKeyRef: - name: urls - key: spa_e - - name: IdentityUrl - valueFrom: - configMapKeyRef: - name: urls - key: identity_e - - name: MarketingUrl - valueFrom: - configMapKeyRef: - name: urls - key: marketingapigw_e - - name: BasketUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: basket__hc - - name: CatalogUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: catalog__hc - - name: IdentityUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: identity__hc - - name: OrderingUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: ordering__hc - - name: MarketingUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: marketing__hc - - name: PaymentUrlHC - valueFrom: - configMapKeyRef: - name: internalurls - key: payment__hc - - name: ApplicationInsights__InstrumentationKey - valueFrom: - configMapKeyRef: - name: externalcfg - key: all__InstrumentationKey - - name: OrchestratorType - value: 'K8S' - - name: SignalrHubUrl - valueFrom: - configMapKeyRef: - name: urls - key: webshoppingapigw_e - ports: - - containerPort: 80 - - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: webshoppingagg -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: webshoppingagg - spec: - containers: - - name: webshoppingagg - image: eshop/webshoppingagg - imagePullPolicy: Always - env: - - name: ASPNETCORE_URLS - value: http://0.0.0.0:80 - - name: urls__basket - valueFrom: - configMapKeyRef: - name: internalurls - key: basket - - name: urls__catalog - valueFrom: - configMapKeyRef: - name: internalurls - key: catalog - - name: urls__orders - valueFrom: - configMapKeyRef: - name: internalurls - key: ordering - - name: urls__identity - valueFrom: - configMapKeyRef: - name: internalurls - key: identity - ports: - - containerPort: 80 - imagePullSecrets: - - name: registry-key ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: mobileshoppingagg -spec: - paused: true - template: - metadata: - labels: - app: eshop - component: mobileshoppingagg - spec: - containers: - - name: mobileshoppingagg - image: eshop/mobileshoppingagg - imagePullPolicy: Always - env: - - name: ASPNETCORE_URLS - value: http://0.0.0.0:80 - - name: urls__basket - valueFrom: - configMapKeyRef: - name: internalurls - key: basket - - name: urls__catalog - valueFrom: - configMapKeyRef: - name: internalurls - key: catalog - - name: urls__orders - valueFrom: - configMapKeyRef: - name: internalurls - key: ordering - - name: urls__identity - valueFrom: - configMapKeyRef: - name: internalurls - key: identity - ports: - - containerPort: 80 - imagePullSecrets: - - name: registry-key ---- diff --git a/k8s/eshop-namespace.yaml b/k8s/eshop-namespace.yaml deleted file mode 100644 index c7eebb7a0..000000000 --- a/k8s/eshop-namespace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: eshop - \ No newline at end of file diff --git a/k8s/ingress.yaml b/k8s/ingress.yaml deleted file mode 100644 index b5773bb25..000000000 --- a/k8s/ingress.yaml +++ /dev/null @@ -1,59 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - labels: - app: eshop - component: frontend - name: eshop-ingress - annotations: - ingress.kubernetes.io/ssl-redirect: "false" -spec: - rules: - - http: - paths: - - path: /identity - backend: - serviceName: identity - servicePort: 80 - - path: /webmvc - backend: - serviceName: webmvc - servicePort: 80 - - path: /webstatus - backend: - serviceName: webstatus - servicePort: 80 - - path: /webshoppingapigw - backend: - serviceName: ocelotapigw-ws - servicePort: 80 - - path: /webmarketingapigw - backend: - serviceName: ocelotapigw-wm - servicePort: 80 - - path: /mobilemarketingapigw - backend: - serviceName: ocelotapigw-mm - servicePort: 80 - - path: /mobileshoppingapigw - backend: - serviceName: ocelotapigw-ms - servicePort: 80 - - path: /webshoppingagg - backend: - serviceName: webshoppingagg - servicePort: 80 - - path: /mobileshoppingagg - backend: - serviceName: mobileshoppingagg - servicePort: 80 - - path: /payment-api - backend: - serviceName: payment - servicePort: 80 - - path: / - backend: - serviceName: webspa - servicePort: 80 - - diff --git a/k8s/keystore-data.yaml b/k8s/keystore-data.yaml deleted file mode 100644 index 0e2dfa9b9..000000000 --- a/k8s/keystore-data.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: keystore-data - name: keystore-data -spec: - ports: - - port: 6379 - selector: - app: eshop - component: keystore-data ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: keystore-data -spec: - template: - metadata: - labels: - app: eshop - component: keystore-data - spec: - containers: - - name: keystore-data - image: redis - diff --git a/k8s/linkerd/basket-api-sp.yaml b/k8s/linkerd/basket-api-sp.yaml new file mode 100644 index 000000000..6b23bdb9f --- /dev/null +++ b/k8s/linkerd/basket-api-sp.yaml @@ -0,0 +1,42 @@ +apiVersion: linkerd.io/v1alpha2 +kind: ServiceProfile +metadata: + creationTimestamp: null + name: basket-api.default.svc.cluster.local + namespace: default +spec: + routes: + - condition: + method: GET + pathRegex: /basket-api/api/v1/basket/[^/]* + name: GET Basket {id} + isRetryable: true + - condition: + method: GET + pathRegex: /hc + name: GET /hc + isRetryable: false + - condition: + method: GET + pathRegex: /liveness + name: GET /liveness + isRetryable: false + - condition: + method: POST + pathRegex: /BasketApi\.Basket/GetBasketById + name: POST /BasketApi.Basket/GetBasketById + isRetryable: true + - condition: + method: POST + pathRegex: /BasketApi\.Basket/UpdateBasket + name: POST /BasketApi.Basket/UpdateBasket + isRetryable: true + - condition: + method: POST + pathRegex: /basket-api/api/v1/basket/checkout + name: POST /v1/basket/checkout + isRetryable: true + retryBudget: + retryRatio: 0.2 + minRetriesPerSecond: 10 + ttl: 10s \ No newline at end of file diff --git a/k8s/linkerd/catalog-api-sp.yaml b/k8s/linkerd/catalog-api-sp.yaml new file mode 100644 index 000000000..6e9afa472 --- /dev/null +++ b/k8s/linkerd/catalog-api-sp.yaml @@ -0,0 +1,47 @@ +apiVersion: linkerd.io/v1alpha2 +kind: ServiceProfile +metadata: + creationTimestamp: null + name: catalog-api.default.svc.cluster.local + namespace: default +spec: + routes: + - condition: + method: GET + pathRegex: /catalog-api/api/v1/catalog/catalogbrands + name: GET /v1/catalog/catalogbrands + isRetryable: true + - condition: + method: GET + pathRegex: /catalog-api/api/v1/catalog/catalogtypes + name: GET /v1/catalog/catalogtypes + isRetryable: true + - condition: + method: GET + pathRegex: /catalog-api/api/v1/catalog/items + name: GET /v1/catalog/items + isRetryable: true + - condition: + method: GET + pathRegex: /api/v1/catalog/items/[^/]*/pic/ + name: GET /v1/catalog/items/{id}/pic/ + isRetryable: false + - condition: + method: GET + pathRegex: /hc + name: GET /hc + isRetryable: false + - condition: + method: GET + pathRegex: /liveness + isRetryable: false + name: GET /liveness + - condition: + method: POST + pathRegex: /CatalogApi\.Catalog/GetItemsByIds + name: POST /CatalogApi.Catalog/GetItemsByIds + isRetryable: true + retryBudget: + retryRatio: 0.2 + minRetriesPerSecond: 10 + ttl: 10s \ No newline at end of file diff --git a/k8s/nosql-data.yaml b/k8s/nosql-data.yaml deleted file mode 100644 index 5dfb67c6e..000000000 --- a/k8s/nosql-data.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: nosql-data - name: nosql-data -spec: - ports: - - port: 27017 - selector: - app: eshop - component: nosql-data ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: nosql-data -spec: - template: - metadata: - labels: - app: eshop - component: nosql-data - spec: - containers: - - name: nosql-data - image: mongo - ports: - - containerPort: 27017 diff --git a/k8s/rabbitmq.yaml b/k8s/rabbitmq.yaml deleted file mode 100644 index d2a7de906..000000000 --- a/k8s/rabbitmq.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: rabbitmq - name: rabbitmq -spec: - ports: - - port: 5672 - selector: - app: eshop - component: rabbitmq ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: rabbitmq -spec: - template: - metadata: - labels: - app: eshop - component: rabbitmq - spec: - containers: - - name: rabbitmq - image: rabbitmq:3-management - ports: - - containerPort: 5672 diff --git a/k8s/services.yaml b/k8s/services.yaml deleted file mode 100644 index ad537eaf0..000000000 --- a/k8s/services.yaml +++ /dev/null @@ -1,195 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: basket - name: basket -spec: - ports: - - port: 80 - selector: - app: eshop - component: basket ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: catalog - name: catalog -spec: - ports: - - port: 80 - selector: - app: eshop - component: catalog ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: identity - name: identity -spec: - ports: - - port: 80 - selector: - app: eshop - component: identity ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: ordering - name: ordering -spec: - ports: - - port: 80 - selector: - app: eshop - component: ordering ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: ordering-backgroundtasks - name: ordering-background -spec: - ports: - - port: 80 - selector: - app: eshop - component: ordering-backgroundtasks ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: ordering-signalrhub - name: ordering-signalrhub -spec: - ports: - - port: 80 - selector: - app: eshop - component: ordering-signalrhub ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: locations - name: locations -spec: - ports: - - port: 80 - selector: - app: eshop - component: locations ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: payment - name: payment -spec: - ports: - - port: 80 - selector: - app: eshop - component: payment ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: marketing - name: marketing -spec: - ports: - - port: 80 - selector: - app: eshop - component: marketing ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: webshoppingagg - name: webshoppingagg -spec: - ports: - - port: 80 - selector: - app: eshop - component: webshoppingagg ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: mobileshoppingagg - name: mobileshoppingagg -spec: - ports: - - port: 80 - selector: - app: eshop - component: mobileshoppingagg ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: webmvc - name: webmvc -spec: - ports: - - port: 80 - selector: - app: eshop - component: webmvc ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: webstatus - name: webstatus -spec: - ports: - - port: 80 - selector: - app: eshop - component: webstatus ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: webspa - name: webspa -spec: - ports: - - port: 80 - selector: - app: eshop - component: webspa diff --git a/k8s/sql-data.yaml b/k8s/sql-data.yaml deleted file mode 100644 index 245622e83..000000000 --- a/k8s/sql-data.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: eshop - component: sql-data - name: sql-data -spec: - ports: - - port: 1433 - selector: - app: eshop - component: sql-data ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: sql-data -spec: - template: - metadata: - labels: - app: eshop - component: sql-data - spec: - containers: - - name: sql-data - image: microsoft/mssql-server-linux:2017-latest - env: - - name: ACCEPT_EULA - value: "Y" - - name: MSSQL_PID - value: Developer - - name: MSSQL_SA_PASSWORD - value: Pass@word diff --git a/src/Services/Basket/Basket.API/Infrastructure/Middlewares/FailingMiddleware.cs b/src/Services/Basket/Basket.API/Infrastructure/Middlewares/FailingMiddleware.cs index 875749b5f..852c61d1f 100644 --- a/src/Services/Basket/Basket.API/Infrastructure/Middlewares/FailingMiddleware.cs +++ b/src/Services/Basket/Basket.API/Infrastructure/Middlewares/FailingMiddleware.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Logging; using System; using System.Linq; using System.Threading.Tasks; @@ -10,11 +11,13 @@ namespace Basket.API.Infrastructure.Middlewares private readonly RequestDelegate _next; private bool _mustFail; private readonly FailingOptions _options; - public FailingMiddleware(RequestDelegate next, FailingOptions options) + private readonly ILogger _logger; + public FailingMiddleware(RequestDelegate next, ILogger logger, FailingOptions options) { _next = next; _options = options; _mustFail = false; + _logger = logger; } public async Task Invoke(HttpContext context) { @@ -27,6 +30,7 @@ namespace Basket.API.Infrastructure.Middlewares if (MustFail(context)) { + _logger.LogInformation($"Response for path {path} will fail."); context.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError; context.Response.ContentType = "text/plain"; await context.Response.WriteAsync("Failed due to FailingMiddleware enabled."); @@ -74,8 +78,15 @@ namespace Basket.API.Infrastructure.Middlewares private bool MustFail(HttpContext context) { + var rpath = context.Request.Path.Value; + + if (_options.NotFilteredPaths.Any(p => p.Equals(rpath, StringComparison.InvariantCultureIgnoreCase))) + { + return false; + } + return _mustFail && - (_options.EndpointPaths.Any(x => x == context.Request.Path.Value) + (_options.EndpointPaths.Any(x => x == rpath) || _options.EndpointPaths.Count == 0); } } diff --git a/src/Services/Basket/Basket.API/Infrastructure/Middlewares/FailingOptions.cs b/src/Services/Basket/Basket.API/Infrastructure/Middlewares/FailingOptions.cs index 45989832c..63e1e5525 100644 --- a/src/Services/Basket/Basket.API/Infrastructure/Middlewares/FailingOptions.cs +++ b/src/Services/Basket/Basket.API/Infrastructure/Middlewares/FailingOptions.cs @@ -6,5 +6,7 @@ namespace Basket.API.Infrastructure.Middlewares { public string ConfigPath = "/Failing"; public List EndpointPaths { get; set; } = new List(); + + public List NotFilteredPaths {get; set;} = new List(); } } diff --git a/src/Services/Basket/Basket.API/Program.cs b/src/Services/Basket/Basket.API/Program.cs index de1b54c2b..ac7294c15 100644 --- a/src/Services/Basket/Basket.API/Program.cs +++ b/src/Services/Basket/Basket.API/Program.cs @@ -60,7 +60,10 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API }); }) - .UseFailing(options => options.ConfigPath = "/Failing") + .UseFailing(options => { + options.ConfigPath = "/Failing"; + options.NotFilteredPaths.AddRange(new[] {"/hc","/liveness"}); + }) .UseStartup() .UseApplicationInsights() .UseContentRoot(Directory.GetCurrentDirectory())