Admin: Containerization
Overview
RPI is made available via a series of container images, which can be deployed by a DevOps team using their container orchestration platform of choice. The containers are:
redpoint-integration-api
redpoint-interaction-api
redpoint-interaction-core-help
redpoint-interaction-execution-service
redpoint-interaction-node-manager
redpoint-interaction-queue-reader
redpoint-interaction-plugins-callbackservicewebapi
redpoint-realtime-agent
redpoint-realtime-api
redpoint-realtime-plus-agent
Application settings
RPI services can be configured using a series of application settings. Application setting values can be set in the following contexts:
Environment variables
AppSettings files
Cloud secret managers
Each service’s application settings are documented in the following Settings Editor web pages, which are accessible from the Configuration service’s Home Page:
The following example shows the application settings available for the Interaction API web service:
The Settings Editor pages facilitate the following:
Determination of the names of application settings: having determined the name of a setting, you can set an environment variable to override an application setting.
For example, here are the application setting names used to configure the Execution service’s File Output settings:
Construction of an appsettings.json override file: the JSON Output section, at the bottom of each App Settings Editor, displays a JSON representation of the current state of the application settings managed within the editor. If you prefer, you can make changes to the JSON directly. Any such changes are reflected in the fields above when you click the Update button.
Each section within the Editor is accompanied by an Object Properties button, shown to the right of the section header. Clicking the same allows you to include or exclude the section’s properties within JSON Output:
The following application settings warrant special note:
All services require the following connection strings to be supplied:
ConnectionStrings__OperationalDatabase
ConnectionStrings__LoggingDatabase
A file output directory must be made available and accessible to all RPI containers. The following setting refers:
RPI__FileOutput__Directory=exports
.
This setting can be overridden on a tenant-by-tenant basis by setting the FileOutputDirectory
system configuration setting in the RPI Configuration interface.
The following settings apply only to the Interaction API web service, and can only be set using environment variables. They are used to configure the Kestrel web server, which is used by all ASP.NET Core application (upon which RPI web services are built). Example values are provided:
ASPNETCORE_Kestrel__Certificates__Default__Path=/root/.aspnet/https/[xxx].pfx
ASPNETCORE_Kestrel__Certificates__Default__Password= [xxx]
ASPNETCORE_URLS=http://+:8080;https://+:8443
Health checks
The RPI services expose the following HTTP health check endpoints, which can be used by a container orchestration platform to determine the service’s current status:
Readiness: /health/ready
Liveness: /health/live
The endpoints return the following information depending on the context in which invoked:
Interaction API web service:
Readiness: API and Pulse database are both available.
Liveness: API available.
Configuration service:
Readiness: API available.
Liveness: API available.
Execution service:
Readiness: Execution service heartbeat is being updated.
Liveness: Execution service heartbeat is being updated.
Node Manager service:
Readiness: Node manager heartbeat is being updated.
Liveness: Node manager heartbeat is being updated.
Queue Reader service:
Readiness: Queue reader service heartbeat is being updated.
Liveness: Queue reader service heartbeat is being updated.
Realtime Agent web service:
Readiness: API and Pulse database are both available.
Liveness: API available.
Realtime web service:
Readiness: API, Agent, Cache and OAuth DB (if configured) are available.
Liveness: API available.
Example return packet
{
"status": "Healthy",
"results": {
"NodeManagerHeartbeat": {
"status": "Healthy"
}
}
}