# Storefront

The chart also deploys a load balancer service enabling external access.

### Containers

#### Init Container

Chart contains an initialization container for any extra steps.

#### Main Container

Main container of this chart is an npm based process, which executes actual service 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
* global-secrets-docker: Used as the imagePullSecrets secret

### Configuration

The following table lists the configurable parameters of the Storefront chart and their default values.

| Parameter             | Description                                              | Default                                  |
| --------------------- | -------------------------------------------------------- | ---------------------------------------- |
| `template`            | id of the template to use                                | `"js-default"`                           |
| `namespace`           | namespace to deploy on                                   | `"storefront-ui"`                        |
| `tier`                | tier annotation to use for deployment                    | `"ui"`                                   |
| `unit`                | unit annotation to use for deployment                    | `"storefront"`                           |
| `scope`               | scope annotation to use for deployment                   | `"store"`                                |
| `language`            | language annotation to use for deployment                | `"javascript"`                           |
| `image`               | docker image to use for init container                   | `"node:buster"`                          |
| `rierinoImageBase`    | docker image to use for main container                   | `"ghcr.io/rierino-open/storefront-demo"` |
| `rierinoPullPolicy`   | docker image pull policy for main container              | `"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                                   | `"storefront-node-pool"`                 |
| `strategyType`        | deployment strategy to use (e.g. Recreate)               | `"RollingUpdate"`                        |
| `maxSurge`            |                                                          | `1`                                      |
| `maxUnavailable`      |                                                          | `0`                                      |
| `replicaCount`        | number of replicas to deploy                             | `1`                                      |
| `deploymentKind`      | whether deployment should be a StatefulSet or Deployment | `"Deployment"`                           |
| `podManagementPolicy` | policy for launching / terminating stateful set pods     | `"Parallel"`                             |
| `useProbes`           | whether main container should use liveness, etc. probes  | `false`                                  |
| `skipInit`            | whether should skip init container                       | `true`                                   |
| `lbPort`              | port for load balancer service                           | `443`                                    |
| `lbAnnotations.dummy` |                                                          | `"yes"`                                  |
| `initMemoryRequest`   | memory request for init container                        | `"256Mi"`                                |
| `initCpuRequest`      | cpu request for init container                           | `"250m"`                                 |
| `initMemoryLimit`     | memory limit for init container                          | `"512Mi"`                                |
| `initCpuLimit`        | cpu limit for init container                             | `"500m"`                                 |
| `memoryRequest`       | memory request for main container                        | `"256Mi"`                                |
| `cpuRequest`          | cpu request for main container                           | `"250m"`                                 |
| `memoryLimit`         | memory limit for main container                          | `"512Mi"`                                |
| `cpuLimit`            | cpu limit for main container                             | `"500m"`                                 |
| `rierinoVersion`      | Rierino image version to deploy                          | `"0.1.1"`                                |
| `port`                | port to use for web services                             | `8081`                                   |
| `scheme`              | scheme to use for web services                           | `"HTTP"`                                 |
