# Gateway

Gateway definition values are typically loaded from a url when calling this chart. The chart also deploys a headless service as well as a load balancer service for external access.

### Containers

#### Init Container

Chart contains an initialization container, which retrieves certifications required.

#### Main Container

Main container of this chart is a Java based process, which executes actual gateway and typically has liveness probes enabled.

### Configuration

#### Local Configuration

Chart contains:

* 1 x config map containing build/execution files mounted on /app/config
* 1 x environment config map that can be used to add environment variables
* 1 x secret that can be used to add secret files mounted on /app/secrets
* 1 x environment secret that can be used to add environment variables

#### Global Configuration

Chart containers also have access to:

* global-config: Mounted on /app/globalconfig including key-value pairs and extra lines to include in application.properties files
* global-config-env: A config map that can be used to add environment variables for all namespace deployments
* global-secrets: Mounted on /app/globalsecrets including key-secret pairs and extra lines to include in application.properties files
* global-secrets-env: A secret that can be used to add environment variables for all namespace deployments

### Configuration

The following table lists the configurable parameters of the Controller-gateway chart and their default values.

| Parameter                        | Description                                                                                | Default                                            |
| -------------------------------- | ------------------------------------------------------------------------------------------ | -------------------------------------------------- |
| `id`                             | unique id of the gateway                                                                   | `"x"`                                              |
| `namespace`                      | namespace to deploy on                                                                     | `"controller"`                                     |
| `tier`                           | tier annotation to use for deployment                                                      | `"controller"`                                     |
| `unit`                           | unit annotation to use for deployment                                                      | `"gateway"`                                        |
| `scope`                          | scope annotation to use for deployment                                                     | `"admin"`                                          |
| `language`                       | language annotation to use for deployment                                                  | `"java"`                                           |
| `image`                          | docker image to use for main container                                                     | `"gradle:openj9"`                                  |
| `imagePullPolicy`                |                                                                                            | `"IfNotPresent"`                                   |
| `cloud`                          | cloud vendor to use for deployment (e.g. gcp, aws)                                         | `"TBD"`                                            |
| `poolSelector`                   | node pool selector annotation specific to cloud vendor                                     | `"TBD"`                                            |
| `pool`                           | node pool to deploy on                                                                     | `"admin-gateway-pool"`                             |
| `strategyType`                   | deployment strategy to use                                                                 | `"Recreate"`                                       |
| `replicaCount`                   | number of replicas to deploy                                                               | `1`                                                |
| `podManagementPolicy`            | policy for launching / terminating stateful set pods                                       | `"Parallel"`                                       |
| `useProbes`                      | whether main container should use liveness, etc. probes                                    | `true`                                             |
| `useOTLP`                        | whether opentelemetry should be enabled                                                    | `false`                                            |
| `otlpInstrument`                 | opentelemetry auto-instrumentation                                                         | `"monitoring/grpc-instrumentation"`                |
| `lbPort`                         | port for load balancer service                                                             | `443`                                              |
| `lbAnnotations.dummy`            |                                                                                            | `"yes"`                                            |
| `jvmArgs`                        | JVM parameters such as -Xms128m                                                            | `""`                                               |
| `initMemoryRequest`              | memory request for init container                                                          | `"256Mi"`                                          |
| `initCpuRequest`                 | cpu request for init container                                                             | `"250m"`                                           |
| `initDiskRequest`                | ephemeral storage request for init container                                               | `"0"`                                              |
| `initMemoryLimit`                | memory limit for init container                                                            | `"512Mi"`                                          |
| `initCpuLimit`                   | cpu limit for init container                                                               | `"500m"`                                           |
| `initDiskLimit`                  | ephemeral storage limit for init container                                                 | `"0"`                                              |
| `memoryRequest`                  | memory request for main container                                                          | `"256Mi"`                                          |
| `cpuRequest`                     | cpu request for main container                                                             | `"250m"`                                           |
| `diskRequest`                    | ephemeral storage request for main container                                               | `"0"`                                              |
| `memoryLimit`                    | memory limit for main container                                                            | `"512Mi"`                                          |
| `cpuLimit`                       | cpu limit for main container                                                               | `"500m"`                                           |
| `diskLimit`                      | ephemeral storage limit for main container                                                 | `"0"`                                              |
| `disableMavenCentral`            | whether gradle should access maven central                                                 | `false`                                            |
| `mavenUrl`                       | url for Rierino maven packages                                                             | `"https://maven.pkg.github.com/rierino/maven"`     |
| `rierinoVersion`                 | Rierino package version to deploy                                                          | `"0.1.1"`                                          |
| `application`                    | application name to use                                                                    | `"TBD"`                                            |
| `gatewayId`                      | gateway id to use (as used in gateway system, channel, etc. configurations)                | `"TBD"`                                            |
| `logLevel`                       | logging level for the main container                                                       | `"ERROR"`                                          |
| `port`                           | port to use for web services                                                               | `0`                                                |
| `scheme`                         | scheme to use for web services                                                             | `"HTTP"`                                           |
| `useDiscovery`                   | whether the gateway should use service discovery to access some runners                    | `false`                                            |
| `consulHost`                     | Consul host (if useDiscovery)                                                              | `"${dollar}{{rierino.system.consul.main.host}}"`   |
| `consulPort`                     | Consul port (if useDiscovery)                                                              | `"${dollar}{{rierino.system.consul.main.port}}"`   |
| `useCert`                        | whether the gateway should generate and use a certificate (requires additional parameters) | `false`                                            |
| `valueLoaderClass`               | Java class name for key-value lookups                                                      | `"com.rierino.runner.loader.PropertiesKVLoader"`   |
| `valueLoaderProperties.path`     | File path for key-value lookups                                                            | `"/app/globalconfig/properties"`                   |
| `valueLoaderProperties.dynamic`  | Whether key-values can change over time                                                    | `"true"`                                           |
| `secretLoaderClass`              | Java class name for key-secret lookups                                                     | `"com.rierino.runner.loader.PropertiesKVLoader"`   |
| `secretLoaderProperties.path`    | File path for key-secret lookups                                                           | `"/app/globalsecrets/properties"`                  |
| `secretLoaderProperties.dynamic` | Whether key-secrets can change over time                                                   | `"true"`                                           |
| `adminCoreBaseUrl`               | url for admin core runner to load gateway configurations                                   | `"${dollar}{{rierino.system.admincore.url}}"`      |
| `adminCoreSecure`                | whether admin core runner uses service discovery                                           | `"${dollar}{{rierino.system.admincore.balanced}}"` |
| `adminCoreBalanced`              | whether admin core runner uses https protocol                                              | `"${dollar}{{rierino.system.admincore.secure}}"`   |
| `authEnabled`                    | whether gateway should service authentication APIs                                         | `true`                                             |
| `requestEnabled`                 | whether gateway should service request APIs                                                | `true`                                             |
| `commandEnabled`                 | whether gateway should service command APIs                                                | `true`                                             |
| `controlEnabled`                 | whether gateway should service control APIs                                                | `true`                                             |
| `fileEnabled`                    | whether gateway should service file APIs                                                   | `true`                                             |
| `trackerEnabled`                 | whether gateway should service tracker APIs                                                | `true`                                             |
| `gateway_extra_properties`       | extra application.properties to include                                                    | `"# No extra properties"`                          |
| `quiet`                          | whether gradle run should be quiet or not                                                  | `false`                                            |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.rierino.com/installation/artifacts/helm-charts/application-charts/gateway.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
