I have followed the https://docs.abp.io/en/commercial/latest/startup-templates/microservice/add-microservice guide, and most of it works. However, once I try to use my AppServices endpoints from the Blazor project, the JavaScript console says that:
rit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Unhandled exception rendering component: Could not found remote action for method: System.Threading.Tasks.Task`1[Volo.Abp.Application.Dtos.PagedResultDto`1[GeoTicket.TicketService.Categories.CategoryDto]] GetListAsync(GeoTicket.TicketService.Categories.GetCategoryListDto) on the URL: https://localhost:44325
Volo.Abp.AbpException: Could not found remote action for method: System.Threading.Tasks.Task`1[Volo.Abp.Application.Dtos.PagedResultDto`1[GeoTicket.TicketService.Categories.CategoryDto]] GetListAsync(GeoTicket.TicketService.Categories.GetCategoryListDto) on the URL: https://localhost:44325
at Volo.Abp.Http.Client.DynamicProxying.ApiDescriptionFinder.FindActionAsync(HttpClient client, String baseUrl, Type serviceType, MethodInfo method)
at Volo.Abp.Http.Client.DynamicProxying.DynamicHttpProxyInterceptor`1.<GetActionApiDescriptionModel>d__25[[GeoTicket.TicketService.Categories.ICategoryAppService, GeoTicket.TicketService.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
at Volo.Abp.Http.Client.DynamicProxying.DynamicHttpProxyInterceptor`1.<InterceptAsync>d__24[[GeoTicket.TicketService.Categories.ICategoryAppService, GeoTicket.TicketService.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.<InterceptAsync>d__3`1[[Volo.Abp.Http.Client.DynamicProxying.DynamicHttpProxyInterceptor`1[[GeoTicket.TicketService.Categories.ICategoryAppService, GeoTicket.TicketService.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Volo.Abp.Http.Client, Version=7.3.3.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Application.Dtos.PagedResultDto`1[[GeoTicket.TicketService.Categories.CategoryDto, GeoTicket.TicketService.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Volo.Abp.Ddd.Application.Contracts, Version=7.3.3.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
at Castle.DynamicProxy.AsyncInterceptorBase.<ProceedAsynchronous>d__14`1[[Volo.Abp.Application.Dtos.PagedResultDto`1[[GeoTicket.TicketService.Categories.CategoryDto, GeoTicket.TicketService.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Volo.Abp.Ddd.Application.Contracts, Version=7.3.3.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.<ProceedAsync>d__7[[Volo.Abp.Application.Dtos.PagedResultDto`1[[GeoTicket.TicketService.Categories.CategoryDto, GeoTicket.TicketService.Application.Contracts, Version=1.0.0.0,
The ticket-service swagger seems to be working, also through the gateway.
So, my question in, how to consume AppServices with start from the guide Add Microservice above? When using ABP framework, it seems that it is managed dynamically?
Never mind. If you forgot / missed to copy it after payment, you can simply recreate a new solution with abp cli and take the new license key from there.
Thanks gterdem,
I think that I got most of if working now. Great support! :-)
Thanks gterdem,
I did a complete reset of the helm values. This is what I got:
# auth-server sub-chart override
authserver:
config:
selfUrl: https://auth.staging.microservice.io
corsOrigins: http://microservice-blazor,https://blazor.staging.microservice.io,https://gateway-web.staging.microservice.io,https://microservice-gateway-web-public,https://microservice-identity,https://microservice-administration,https://microservice-saas,https://microservice-product
allowedRedirectUrls: http://blazor.staging.microservice.io,https://blazor.staging.microservice.io
disablePii: "false"
identityService:
connString: "Server=microservice-sqldb,1433;Database=Microservice_Identity;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
administrationService:
connString: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService:
connString: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchUrl: http://microservice-elasticsearch
ingress:
host: auth.staging.microservice.io
tlsSecret: staging.microservice.io
image:
repository: registry.digitalocean.com/microservice/microservice-app-authserver
tag: latest
# identity-service sub-chart override
identity:
config:
selfUrl: https://microservice-identity
corsOrigins: https://microservice-gateway-web
connectionStrings:
identityService: "Server=microservice-sqldb,1433;Database=Microservice_Identity;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
administrationService: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchUrl: http://microservice-elasticsearch
openIdDict: #Seed applications and resources
applications:
authServerRootUrl: https://microservice-authserver/
blazorRootUrl: https://blazor.staging.microservice.io/
publicWebRootUrl: https://microservice-public-web/
webGatewayRootUrl: https://microservice-gateway-web/
publicWebGatewayRootUrl: https://microservice-gateway-web-public/
resources:
accountServiceRootUrl: https://microservice-authserver/
administrationServiceRootUrl: https://microservice-administration/
identityServiceRootUrl: https://microservice-identity/
saasServiceRootUrl: https://microservice-saas/
productServiceRootUrl: https://microservice-product/
ingress:
host: microservice-identity
image:
repository: registry.digitalocean.com/microservice/microservice-service-identity
tag: latest
# administration-service sub-chart override
administration:
config:
selfUrl: https://microservice-administration
corsOrigins: https://microservice-gateway-web,https://microservice-gateway-web-public
connectionStrings:
administrationService: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
remoteServices:
abpIdentityBaseUrl: https://microservice-identity
useCurrentToken: "false"
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchUrl: http://microservice-elasticsearch
synchedCommunication: # Used for server-to-server (client-credentials) communication with identityService for user permissions
authority: https://microservice-authserver
requireHttps: "false"
validateIssuerName: "false"
validateEndpoints: "false"
ingress:
host: microservice-administration
image:
repository: registry.digitalocean.com/microservice/microservice-service-administration
tag: latest
# saas-service sub-chart override
saas:
config:
selfUrl: https://microservice-saas
corsOrigins: https://microservice-gateway-web
connectionStrings:
administrationService: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchUrl: http://microservice-elasticsearch
ingress:
host: microservice-saas
image:
repository: registry.digitalocean.com/microservice/microservice-service-saas
tag: latest
# product-service sub-chart override
product:
config:
selfUrl: https://microservice-product
corsOrigins: https://microservice-gateway-web,https://microservice-gateway-web-public
connectionStrings:
productService: "Server=microservice-sqldb,1433;Database=Microservice_ProductService;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
administrationService: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchUrl: http://microservice-elasticsearch
ingress:
host: microservice-product
image:
repository: registry.digitalocean.com/microservice/microservice-service-product
tag: latest
# gateway-web sub-chart override
gateway-web:
config:
selfUrl: https://gateway-web.staging.microservice.io
corsOrigins: https://blazor.staging.microservice.io
globalConfigurationBaseUrl: http://microservice-gateway-web
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchUrl: http://microservice-elasticsearch
reRoutes:
accountService:
dns: https://auth.staging.microservice.io
schema: http
host: microservice-authserver
port: 80
identityService:
dns: https://microservice-identity
schema: http
host: microservice-identity
port: 80
administrationService:
dns: https://microservice-administration
schema: http
host: microservice-administration
port: 80
saasService:
dns: https://microservice-saas
schema: http
host: microservice-saas
port: 80
productService:
dns: https://microservice-product
schema: http
host: microservice-product
port: 80
ingress:
host: gateway-web.staging.microservice.io
tlsSecret: staging.microservice.io
image:
repository: registry.digitalocean.com/microservice/microservice-gateway-web
tag: latest
pullPolicy: IfNotPresent
# gateway-web-public sub-chart override
gateway-web-public:
config:
selfUrl: https://microservice-gateway-web-public
globalConfigurationBaseUrl: http://microservice-gateway-web-public
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
swaggerClientSecret: "1q2w3e*"
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchUrl: http://microservice-elasticsearch
reRoutes:
accountService:
dns: https://microservice-authserver
schema: http
host: microservice-authserver
port: 80
saasService:
dns: https://microservice-saas
schema: http
host: microservice-saas
port: 80
administrationService:
dns: https://microservice-administration
schema: http
host: microservice-administration
port: 80
productService:
dns: https://microservice-product
schema: http
host: microservice-product
port: 80
ingress:
host: microservice-gateway-web-public
# tlsSecret: microservice-tls
image:
repository: registry.digitalocean.com/microservice/microservice-gateway-web-public
tag: latest
pullPolicy: IfNotPresent
kibana:
config:
elasticsearchUrl: http://microservice-elasticsearch:9200
# dbmigrator sub-chart override
dbmigrator:
config:
connectionStrings:
identityService: "Server=microservice-sqldb,1433;Database=Microservice_Identity;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
administrationService: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
productService: "Server=microservice-sqldb,1433;Database=Microservice_ProductService;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
dotnetEnv: Production
elasticsearchUrl: http://microservice-elasticsearch
redisHost: microservice-redis
openIdDict:
applications:
authServerRootUrl: https://microservice-authserver/
angularRootUrl: https://microservice-angular/
webRootUrl: https://microservice-web/
blazorRootUrl: https://blazor.staging.microservice.io/
blazorServerRootUrl: https://microservice-blazor-server/
publicWebRootUrl: https://microservice-public-web/
webGatewayRootUrl: https://microservice-gateway-web/
publicWebGatewayRootUrl: https://microservice-gateway-web-public/
resources:
accountServiceRootUrl: https://microservice-authserver/
administrationServiceRootUrl: https://microservice-administration/
identityServiceRootUrl: https://microservice-identity/
saasServiceRootUrl: https://microservice-saas/
productServiceRootUrl: https://microservice-product/
image:
repository: registry.digitalocean.com/microservice/microservice-db-migrator
tag: latest
pullPolicy: IfNotPresent
# Public Web application sub-chart override
publicweb:
config:
selfUrl: https://public-web.staging.microservice.io
gatewayUrl: http://microservice-gateway-web-public
authServer:
authority: https://auth.staging.microservice.io # should be domain on production (https://auth.mydomain.com)
requireHttpsMetadata: "false"
isOnK8s: "true"
metaAddress: http://microservice-authserver # should be container on production (http://microservice-az-authserver)
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchUrl: http://microservice-elasticsearch
ingress:
host: public-web.staging.microservice.io
tlsSecret: staging.microservice.io
image:
repository: registry.digitalocean.com/microservice/microservice-app-public-web
tag: latest
pullPolicy: IfNotPresent
blazor:
config:
selfUrl: https://blazor.staging.microservice.io
gatewayUrl: https://gateway-web.staging.microservice.io
authServer:
authority: https://auth.staging.microservice.io
requireHttpsMetadata: "false"
responseType: "code"
ingress:
host: blazor.staging.microservice.io
tlsSecret: staging.microservice.io
image:
repository: registry.digitalocean.com/microservice/microservice-app-blazor
tag: latest
pullPolicy: IfNotPresent
# Default values for Microservice.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
It starts to working now, but I got following question:
In the dbmigrator log I got successful report:
[19:37:09 INF] Migrating Host side...
[19:37:10 INF] Migrating SaasService database...
[19:37:19 INF] Migrating AdministrationService database...
[19:37:25 INF] Migrating IdentityService database...
[19:37:29 INF] Migrating ProductService database...
[19:37:29 INF] All databases have been successfully migrated (HOST).
[19:37:36 INF] Migrating tenants...
[19:37:36 INF] Migration completed!
But the identity log says:
[19:44:43 INF] Saving external localizations...
[19:44:43 INF] Lock is acquired for db migration and seeding on database named: IdentityService...
[19:44:46 INF] Completed to save external localizations.
[19:44:47 INF] Lock is released for db migration and seeding on database named: IdentityService...
[19:44:47 INF] Seeding IdentityServer data...
[19:44:49 ERR] Exception of type 'Volo.Abp.BusinessException' was thrown.
[19:44:49 WRN] BusinessException has been thrown. The operation will be tried 2 times more. Exception:
Exception of type 'Volo.Abp.BusinessException' was thrown.
[19:45:01 INF] Seeding IdentityServer data...
[19:45:01 ERR] Exception of type 'Volo.Abp.BusinessException' was thrown.
[19:45:01 WRN] BusinessException has been thrown. The operation will be tried 1 times more. Exception:
Exception of type 'Volo.Abp.BusinessException' was thrown.
[19:45:12 INF] Seeding IdentityServer data...
[19:45:12 ERR] Exception of type 'Volo.Abp.BusinessException' was thrown.
[19:45:12 FTL] Microservice.IdentityService.HttpApi.Host terminated unexpectedly!
Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnPostApplicationInitializationModuleLifecycleContributor phase of the module Microservice.IdentityService.IdentityServiceHttpApiHostModule, Microservice.IdentityService.HttpApi.Host, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: Exception of type 'Volo.Abp.BusinessException' was thrown.. See the inner exception for details.
---> Volo.Abp.BusinessException: Exception of type 'Volo.Abp.BusinessException' was thrown.
at Microservice.IdentityService.DbMigrations.OpenIddictDataSeeder.CreateApplicationAsync(String name, String type, String consentType, String displayName, String secret, List`1 grantTypes, List`1 scopes, List`1 redirectUris, List`1 postLogoutRedirectUris, List`1 permissions, String clientUri, String logoUri) in /src/services/identity/src/Microservice.IdentityService.HttpApi.Host/DbMigrations/OpenIddictDataSeeder.cs:line 422
Any ideas?
Kind regards, Carl
Thanks gterdem,
Unfortuntely, I got same error. I think that I need to get each app / service / gateway working.
auth.staging.microservice.io service seems to be ok, the login / logout is working fine.
Log from microservice-public-web
[20:23:22 INF] Sending HTTP request GET https://gateway-public.staging.microservice.io/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0
[20:23:22 INF] Received HTTP response headers after 13.0113ms - 502
So, the response from the gateway is 502, and when looking into the log in the gateway I got:
Log from geoticket-gateway-web-public:
[20:23:22 INF] Request starting HTTP/1.1 GET http://gateway-public.staging.microservice.io/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 - -
[20:23:22 INF] requestId: 0HMUBBQVGSBOD:00000004, previousRequestId: no previous request id, message: EndpointRateLimiting is not enabled for /api/abp/{everything}
[20:23:22 INF] requestId: 0HMUBBQVGSBOD:00000004, previousRequestId: no previous request id, message: No authentication needed for /api/abp/application-configuration
[20:23:22 INF] requestId: 0HMUBBQVGSBOD:00000004, previousRequestId: no previous request id, message: /api/abp/{everything} route does not require user to be authorized
[20:23:22 WRN] requestId: 0HMUBBQVGSBOD:00000004, previousRequestId: no previous request id, message: Error Code: ConnectionToDownstreamServiceError Message: Error connecting to downstream service, exception: System.Net.Http.HttpRequestException: Connection refused (localhost:44367)
---> System.Net.Sockets.SocketException (111): Connection refused
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.HttpConnectionWaiter`1.WaitForConnectionAsync(Boolean async, CancellationToken requestCancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) errors found in ResponderMiddleware. Setting error response for request path:/api/abp/application-configuration, request method: GET
[20:23:22 INF] Request finished HTTP/1.1 GET http://gateway-public.staging.microservice.io/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 - - - 502 0 - 6.7145ms
This is my value file:
# public-web sub-chart override
public-web:
config:
selfUrl: https://public.staging.microservice.io
gatewayUrl: https://gateway-public.staging.microservice.io
authServer:
authority: https://auth.staging.microservice.io
requireHttpsMetadata: "false"
isOnProd: "true"
metaAddress: http://microservice-authserver
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchHost: http://microservice-elasticsearch
ingress:
host: public.staging.microservice.io
tlsSecret: public-staging-microservice-io-tls
image:
repository: "registry.digitalocean.com/microservice/microservice-app-public-web"
tag: latest
###
# gateway-web-public sub-chart override
gateway-web-public:
config:
selfUrl: https://gateway-public.staging.microservice.io
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
swaggerClientSecret: "1q2w3e*"
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchHost: http://microservice-elasticsearch
ingress:
host: gateway-public.staging.microservice.io
tlsSecret: gateway-public-staging-microservice-io-tls
image:
repository: "registry.digitalocean.com/microservice/microservice-gateway-web-public"
tag: latest
reRoutes:
accountService:
url: http://microservice-authserver
identityService:
url: http://microservice-identity
administrationService:
url: http://microservice-administration
Kind regards, Carl
Hi,
I have almost managed to deploy everything. However, got some configuration failure from public web app:
[19:46:55 INF] TRIAL-INFO - You are using the trial version of ABP and your expiry date is 2023-10-26 [19:46:55 INF] Now listening on: http://[::]:80 [19:46:55 INF] Application started. Press Ctrl+C to shut down. [19:46:55 INF] Hosting environment: Production [19:46:55 INF] Content root path: /app [19:48:58 INF] Request starting HTTP/1.1 GET http://public.staging.microservice.io/ - - [19:48:58 WRN] Could not find IdentityClientConfiguration for AbpMvcClient. Either define a configuration for AbpMvcClient or set a default configuration. [19:48:58 INF] Start processing HTTP request GET https://microservice-gateway-web-public/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [19:48:58 INF] Sending HTTP request GET https://microservice-gateway-web-public/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [19:49:00 INF] Sending HTTP request GET https://microservice-gateway-web-public/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [19:49:04 INF] Sending HTTP request GET https://microservice-gateway-web-public/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [19:49:12 INF] Sending HTTP request GET https://microservice-gateway-web-public/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [19:49:28 INF] Sending HTTP request GET https://microservice-gateway-web-public/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [19:49:28 ERR] Connection id "0HMU9033L8A7L", Request id "0HMU9033L8A7L:00000001": An unhandled exception was thrown by the application. Volo.Abp.Http.Client.AbpRemoteCallException: An error occurred during the ABP remote HTTP request. (Connection refused (microservice-gateway-web-public:443)) See the inner exception for details. ---> System.Net.Http.HttpRequestException: Connection refused (microservice-gateway-web-public:443) ---> System.Net.Sockets.SocketException (111): Connection refused
This is my value file:
# auth-server sub-chart override
authserver:
config:
selfUrl: https://auth.staging.microservice.io
corsOrigins: https://gateway.staging.microservice.io,https://gateway-public.staging.microservice.io,https://identity.staging.microservice.io,https://administration.staging.microservice.io,https://basket.staging.microservice.io,https://catalog.staging.microservice.io,https://order.staging.microservice.io,https://cmskit.staging.microservice.io,https://payment.staging.microservice.io,https://admin.staging.microservice.io,https://www.staging.microservice.io
allowedRedirectUrls: https://admin.staging.microservice.io
disablePii: "false"
identityService:
connString: "Server=microservice-sqldb,1433;Database=Microservice_Identity;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
administrationService:
connString: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService:
connString: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchUrl: http://microservice-elasticsearch
ingress:
host: auth.staging.microservice.io
tlsSecret: auth-staging-microservice-io-tls
image:
repository: "registry.digitalocean.com/microservice/microservice-app-authserver"
tag: latest
# public-web sub-chart override
public-web:
config:
selfUrl: https://www.staging.microservice.io
gatewayUrl: https://microservice-gateway-web-public
authServer:
authority: https://auth.staging.microservice.io
requireHttpsMetadata: "false"
isOnProd: "true"
metaAddress: http://microservice-authserver
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchHost: http://microservice-elasticsearch
ingress:
host: public.staging.microservice.io
tlsSecret: public-staging-microservice-io-tls
image:
repository: "registry.digitalocean.com/microservice/microservice-app-public-web"
tag: latest
blazor:
config:
selfUrl: https://blazor.staging.microservice.io
gatewayUrl: https://microservice-gateway-web
authServer:
authority: https://microservice-st-authserver
requireHttpsMetadata: "false"
responseType: "code"
ingress:
host: blazor.staging.microservice.io
tlsSecret: blazor-staging-microservice-io-tls
image:
repository: registry.digitalocean.com/microservice/microservice-app-blazor
tag: latest
pullPolicy: IfNotPresent
# identity-service sub-chart override
identity:
config:
selfUrl: https://identity.staging.microservice.io
corsOrigins: https://gateway.staging.microservice.io,https://gateway-public.staging.microservice.io
connectionStrings:
identityService: "Server=microservice-sqldb,1433;Database=Microservice_Identity;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
administrationService: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
swaggerClientSecret: "1q2w3e*"
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchHost: http://microservice-elasticsearch
identityServerClients: # Seeded Clients
webRootUrl: https://admin.staging.microservice.io/
publicWebRootUrl: https://www.staging.microservice.io/
webGatewayRootUrl: https://gateway.staging.microservice.io/
publicWebGatewayRootUrl: https://gateway-public.staging.microservice.io/
identityServiceRootUrl: https://identity.staging.microservice.io/
administrationServiceRootUrl: https://administration.staging.microservice.io/
accountServiceRootUrl: https://auth.staging.microservice.io
ingress:
host: identity.staging.microservice.io
tlsSecret: identity-staging-microservice-io-tls
image:
repository: "registry.digitalocean.com/microservice/microservice-service-identity"
tag: latest
# administration sub-chart override
administration:
config:
selfUrl: https://administration.staging.microservice.io
corsOrigins: https://microservice-gateway-web,https://microservice-st-gateway-web-public
connectionStrings:
administrationService: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
authServer:
authority: http://microservice-st-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
swaggerClientSecret: "1q2w3e*"
remoteServices:
abpIdentityBaseUrl: https://microservice-st-identity
useCurrentToken: "false"
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchHost: http://microservice-elasticsearch
synchedCommunication: # Used for server-to-server (client-credentials) communication with identityService for user permissions
authority: http://microservice-authserver
requireHttps: "false"
validateIssuerName: "false"
validateEndpoints: "false"
ingress:
host: administration.staging.microservice.io
tlsSecret: administration-staging-microservice-io-tls
image:
repository: registry.digitalocean.com/microservice/microservice-service-administration
tag: latest
# gateway-web sub-chart override
gateway-web:
config:
selfUrl: https://gateway.staging.microservice.io
corsOrigins: https://admin.staging.microservice.io
globalConfigurationBaseUrl: http://microservice-gateway-public
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
swaggerClientSecret: "1q2w3e*"
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchHost: http://microservice-elasticsearch
ingress:
host: gateway.staging.microservice.io
tlsSecret: gateway-staging-microservice-io-tls
image:
repository: "registry.digitalocean.com/microservice/microservice-gateway-web"
tag: latest
reRoutes:
accountService:
url: http://microservice-authserver
identityService:
url: http://microservice-identity
administrationService:
url: http://microservice-administration
# gateway-web-public sub-chart override
gateway-web-public:
config:
selfUrl: https://gateway-public.staging.microservice.io
authServer:
authority: http://microservice-authserver
requireHttpsMetadata: "false"
swaggerClientId: WebGateway_Swagger
swaggerClientSecret: "1q2w3e*"
dotnetEnv: Production
redisHost: microservice-redis
rabbitmqHost: microservice-rabbitmq
elasticsearchHost: http://microservice-elasticsearch
ingress:
host: gateway-public.staging.microservice.io
tlsSecret: gateway-public-staging-microservice-io-tls
image:
repository: "registry.digitalocean.com/microservice/microservice-gateway-web-public"
tag: latest
reRoutes:
accountService:
url: http://microservice-authserver
identityService:
url: http://microservice-identity
administrationService:
url: http://microservice-administration
# dbmigrator
dbmigrator:
config:
connectionStrings:
identityService: "Server=microservice-sqldb,1433;Database=Microservice_Identity;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
administrationService: "Server=microservice-sqldb,1433;Database=Microservice_Administration;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
saasService: "Server=microservice-sqldb,1433;Database=Microservice_Saas;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
productService: "Server=microservice-sqldb,1433;Database=Microservice_ProductService;User Id=sa;password=myPassw@rd;TrustServerCertificate=True"
dotnetEnv: Production
elasticsearchUrl: http://microservice-elasticsearch
redisHost: microservice-redis
openIdDict:
applications:
authServerRootUrl: https://microservice-authserver/
angularRootUrl: https://microservice-angular/
webRootUrl: https://microservice-web/
blazorRootUrl: https://microservice-blazor/
blazorServerRootUrl: https://microservice-blazor-server/
publicWebRootUrl: https://microservice-public-web/
webGatewayRootUrl: https://microservice-gateway-web/
publicWebGatewayRootUrl: https://microservice-gateway-web-public/
resources:
accountServiceRootUrl: https://microservice-authserver/
administrationServiceRootUrl: https://microservice-administration/
identityServiceRootUrl: https://microservice-identity/
saasServiceRootUrl: https://microservice-saas/
productServiceRootUrl: https://microservice-product/
image:
repository: registry.digitalocean.com/microservice/microservice-db-migrator
tag: latest
pullPolicy: IfNotPresent
kibana:
config:
elasticsearchUrl: http://microservice-elasticsearch:9200
ingress:
host: kibana.staging.microservice.io
tlsSecret: kibana-staging-microservice-io-tls
# Default values for microservice.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: nginx
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: ""
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
# ingress:
# enabled: false
# className: ""
# annotations: {}
# # kubernetes.io/ingress.class: nginx
# # kubernetes.io/tls-acme: "true"
# hosts:
# - host: chart-example.local
# paths:
# - path: /
# pathType: ImplementationSpecific
# tls: []
# # - secretName: chart-example-tls
# # hosts:
# # - chart-example.local
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80
tolerations: []
affinity: {}
Thanks gterdem,
I don't think that is related to Azure? I am no expert, but when looking at the k8s directory, it seems that most of it is in place? I guess its the installation of cert-manager and nginx ingress (for instance) and the issuer manifests. Also adding ingress part for all services.
I will try to make it work by my self, but the abp really need some deployment guides. We was failing to deploy abp framework too, and now we are trying the commercial one.
Can you provide any short guide / tutorial of how to deploy the Microservice template in a Kubernetes cluster with real domain names?
Prerequisites:
Thanks, Carl