DSS Container
Summary
This container hosts the OpenCDS application, and supporting assets necessary for performing it's principal role of determining reportability response based on authored rules.
Attributes
Type
Primary
Name
decision-support-service
Image
decision-support-service
Image Pull Policy
Always
Command
Arguments
Port
8080
Security Context
Allow Privilege Escalation:
false
Endpoints
External-to-Cluster
This container does not have any external-to-cluster exposed endpoints.
Internal
Evaluate OpenCDSInput payload
POST /opencds-decision-support-service/api/resources/evaluateAtSpecifiedTime
This is the primary entrypoint for DSS, as it expects a valid OpenCDSInput payload to be provided by the RCKMS Shared Service (SS). Evaluates against Knowledge Modules classified as PRODUCTION.
Headers
Content-Type*
String
Should always be set to application/json.
Request Body
*
JSON
An OpenCDSInput payload.
Liveness Probe
GET /opencds-decision-support-service/_k8s-health-check
Refer to the Kubernetes Documentation for more information on probes.
Readiness Probe
GET /opencds-decision-support-service/_k8s-health-check
Refer to the Kubernetes Documentation for more information on probes.
Environment Variables
All environment variables, unless otherwise indicated, are considered required.
General Variables
JAVA_OPTS
Feature flags and default configuration overrides for the container's embedded JVM.
Example Value
Explanation of Options
-Xms4g: sets the initial heap size allocation to 4GB (4096 MiB)-Xmx6g: sets the maximum heap size allocation to 6GB (6144 MiB)-XX:+UseG1GC: enables the usage of theG1garbage collector.-XX:+PrintGCDetails -XX:+PrintGCDateStampscontrols verbosity of garbage collection logging output.-Xloggc:/hln/diagnostics/garbageCollection.logpath for the garbage collection logging output file.-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=1 -XX:GCLogFileSize=10menables the rotation of log files once the maximum file size of 10MB has been reached.-XX:+UseStringDeduplicationavoids duplicate garbage collection log entries.-DpreEvaluateTimeout=20000sets the response timeout for communicating with the OpenCDS Update Service (OUS) to 20 seconds (20000ms).-DpreEvaluateConnectTimeout=20000sets the connection timeout for communicating with the OpenCDS Update Service (OUS) to 20 seconds (20000ms).-DupdateServiceClient.baseUrlsets the fully-qualified base URL for communicating with the OpenCDS Update Service (OUS) as part of the modified DSS/OUS polling workflow.-DcdmUpdateManager.enableAutoUpdatesenables the modified DSS/OUS polling workflow for periodically fetching updated Concept Determination Modules (CDMs).-DkmPackageUpdateManager.enableAutoUpdatesenables the modified DSS/OUS polling workflow for periodically fetching updated Knowledge Modules (KMs).-DpreEvaluateEnableddisables the pre-evaluate hook workflow for maintaining a synchronized CDM and KM state for each DSS pod.-DcdmUpdateManager.pollingFrequencysets the polling frequency for asking OUS for updated CDM artifacts. For example,PT30Msets the interval to 30 minutes.-DkmPackageUpdateManager.pollingFrequencysets the polling frequency for asking OUS for updated KM artifacts. For example,PT5Msets the interval to 5 minutes.
Intra-mesh Connectivity
PRE_EVALUATE_HOOK_URI
Prior to evaluating an invocation of OpenCDS, we want to validate that the in-memory Knowledge Module(s) required for processing are the latest authored version.
Accepted Values
Any valid URL, including protocol, hostname, port (optionally inferred by protocol), and path set to /updatecheck.
For example, http://ous.prd.svc.cluster.local:80/updatecheck would be considered an acceptable value for a service resource named ous, in the prd namespace, with a service port of 80 and the proper path value of /updatecheck.
OpenCDS-related Configuration
KM_THREADS
Indicates the number of CPU threads that OpenCDS can utilize for processing invocations.
Accepted Values
1defaultAny natural number greater than
0. Should correlate to the CPU Limit, divided by one-thousand (e.g. CPU Limit of4000mshould result in a value of4.
MOUNTED_VOLUME_PATH
Define the container-relative path for Knowledge Module artifacts to be populated into.
Accepted Values
Should exactly match the Volume Mount for this container that is also bound by the DSS Preflight init container.
POD_UID Downward API
To uniquely identify DSS pods in the Document database, which is leveraged for maintaining synchronization of authored Knowledge Modules between the authoring and reportability environments, we use the Kubernetes Downward API to consistently provide a unique identifier to multiple containers.
Accepted Value
Please refer to this Terraform Kubernetes Pod Resource stub for the desired Downward API field to set for this environment variable:
WORKLOAD_VARIANT
DSS will by default, deploy two OpenCDS instances; one for TEST payloads, and the other for PRODUCTION payloads. This decreases available resources for each individual instance, and should be set accordingly based on the target environment.
Accepted Values
authoringdefault Deploys bothTESTandPRODUCTIONinstances of OpenCDS.This value should be used for all non-production environments.
productionDeploys only aPRODUCTIONinstance of OpenCDS.This value should be used for all production environments.
Logging Level Configuration
Probes
Liveness
Mode
HTTP (GET)
Arguments
Path:
/opencds-decision-support-service/_k8s-health-checkPort:
8080(must match container port)
Timings
Initial Delay of
120sPeriod of
30sTimeout of
5s
Thresholds
1Successes1Failures
Readiness
Mode
HTTP (GET)
Arguments
Path:
/opencds-decision-support-service/_k8s-health-checkPort:
8080(must match container port)
Timings
Initial Delay of
120sPeriod of
30sTimeout of
5s
Thresholds
1Successes1Failures
Startup
The primary DSS workload container includes an optional startup probe script which passes a diagnostic payload to the embedded OpenCDS application, to verify the nominal startup of said application, and to perform a functional self-test prior to accepting real-world eCR payloads.
Mode
EXEC
Arguments
Command:
.ops/probes/startup.sh
Timings
Initial Delay of
90sPeriod of
10sTimeout of
15s
Thresholds
1Successes10Failures
Resources
1000
6144
N/A
2000
8192
N/A
Technology Stack
Container is built upon a Tomcat 9 base image, with the Java Runtime Engine version 8 embedded.
Volume Mounts
dss-pf
/data/dss-preflight-sync
java-diag
/hln/diagnostics
Workload Identity
Container does not require access to external-to-cluster resources.
Code Owners
Last updated