Public Information
This commit is contained in:
15
charts/application/Chart.yaml
Normal file
15
charts/application/Chart.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: v2
|
||||
name: nplus-application
|
||||
description: nplus Application, used to install Apps and Customizations into the nscale Application Layer.
|
||||
icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJFYmVuZV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNTEuMDI0IDUxLjAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTEuMDI0IDUxLjAyNCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBvbHlnb24gZmlsbD0iI0E0QkZFNCIgcG9pbnRzPSIzMi4zMjIsMTkuNzQ0IDIwLjY0OSwxOS43NDQgMTguNTkxLDMxLjQxNyAzMC4yNjQsMzEuNDE3IAkiLz4KCTxwb2x5Z29uIGZpbGw9IiNBNEJGRTQiIHBvaW50cz0iNDcuMTg1LDE5Ljc0NCAzNS41MTIsMTkuNzQ0IDMzLjQ1NCwzMS40MTcgNDUuMTI2LDMxLjQxNyAJIi8+Cgk8cG9seWdvbiBmaWxsPSIjQTRCRkU0IiBwb2ludHM9IjI5Ljc2NiwzNC41NTEgMTguMDk0LDM0LjU1MSAxNi4wMzUsNDYuMjI0IDI3LjcwOCw0Ni4yMjQgCSIvPgoJPHBvbHlnb24gZmlsbD0iI0E0QkZFNCIgcG9pbnRzPSIxNy41NywxOS43NDQgNS44OTcsMTkuNzQ0IDMuODM5LDMxLjQxNyAxNS41MTIsMzEuNDE3IAkiLz4KCTxwb2x5Z29uIGZpbGw9IiNBNEJGRTQiIHBvaW50cz0iMzUuMTUsNC43OTkgMjMuNDc3LDQuNzk5IDIxLjQxOSwxNi40NzIgMzMuMDkyLDE2LjQ3MiAJIi8+Cjwvc3ZnPgo=
|
||||
type: application
|
||||
# This is the version number of the application being deployed. This version number should be
|
||||
# incremented each time you make changes to the application. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
# It is recommended to use it with quotes.
|
||||
dependencies:
|
||||
- name: nplus-globals
|
||||
alias: globals
|
||||
version: "*-0"
|
||||
repository: "file://../globals"
|
||||
version: 1.0.0
|
||||
340
charts/application/README.md
Normal file
340
charts/application/README.md
Normal file
@@ -0,0 +1,340 @@
|
||||
|
||||
|
||||
# nplus-application
|
||||
|
||||
nplus Application, used to install Apps and Customizations into the nscale Application Layer.
|
||||
|
||||
## AppInstaller
|
||||
|
||||
In order to install Apps, you will need a matching AppInstaller. This can be downloaded from the Ceyoniq Service Portal.
|
||||
Once you have it, copy it the pool folder (or any other place where the application chart has access to):
|
||||
|
||||
```
|
||||
kubectl cp app-installer-9.0.1202.jar nplus-toolbox-0:/conf/pool
|
||||
```
|
||||
|
||||
## Ceyoniq Smart Business Apps (SBS)
|
||||
|
||||
The SBS Apps are automatically downloaded from the official Ceyoniq nstore by a job in the *nplus environment*, if you switched it on during the environment installation:
|
||||
|
||||
```
|
||||
nstoreDownloader.enabled: true
|
||||
```
|
||||
|
||||
If enabled, the Downloader job will run regularly in the background, and download the latest SBS Apps in the pool folder.
|
||||
You can always enabled it in the environment chart later on if desired:
|
||||
|
||||
```
|
||||
helm upgrade \
|
||||
--set toolbox.enabled=true \
|
||||
--set nstoreDownloader.enabled=true \
|
||||
dev nplus/nplus-environment
|
||||
```
|
||||
|
||||
## SBS Example
|
||||
|
||||
You can install SBS by adding the necessary apps to the deployment:
|
||||
|
||||
```yaml
|
||||
components:
|
||||
application: true
|
||||
application:
|
||||
appInstaller: "/pool/app-installer-9.0.1202.jar"
|
||||
docAreas:
|
||||
- id: "SBS"
|
||||
name: "DocArea with SBS"
|
||||
description: "This is a sample DocArea with the SBS Apps installed"
|
||||
apps:
|
||||
- "/pool/nstore/bl-app-9.0.1202.zip"
|
||||
- "/pool/nstore/gdpr-app-9.0.1302.zip"
|
||||
- "/pool/nstore/sbs-base-9.0.1302.zip"
|
||||
- "/pool/nstore/sbs-app-9.0.1302.zip"
|
||||
- "/pool/nstore/tmpl-app-9.0.1302.zip"
|
||||
- "/pool/nstore/cm-base-9.0.1302.zip"
|
||||
- "/pool/nstore/cm-app-9.0.1302.zip"
|
||||
- "/pool/nstore/hr-base-9.0.1302.zip"
|
||||
- "/pool/nstore/hr-app-9.0.1302.zip"
|
||||
- "/pool/nstore/pm-base-9.0.1302.zip"
|
||||
- "/pool/nstore/pm-app-9.0.1302.zip"
|
||||
- "/pool/nstore/sd-base-9.0.1302.zip"
|
||||
- "/pool/nstore/sd-app-9.0.1302.zip"
|
||||
- "/pool/nstore/kon-app-9.0.1302.zip"
|
||||
- "/pool/nstore/kal-app-9.0.1302.zip"
|
||||
- "/pool/nstore/dok-app-9.0.1302.zip"
|
||||
- "/pool/nstore/ts-base-9.0.1302.zip"
|
||||
- "/pool/nstore/ts-app-9.0.1302.zip"
|
||||
- "/pool/nstore/ocr-base-9.0.1302.zip"
|
||||
```
|
||||
|
||||
This will install the SBS Apps into the DocArea "SBS". The DocArea is created, if it does not exist.
|
||||
|
||||
## Install custom Generic Base Apps (GBA)
|
||||
|
||||
If you wish to deploy your custom GBAs, simply copy them to the pool (e.g. in the apps folder):
|
||||
|
||||
```
|
||||
kubectl cp my-gba-1.0.1000.zip nplus-toolbox-0:/conf/pool/apps
|
||||
```
|
||||
|
||||
Then, use the GBA file name and version in the DocArea:
|
||||
|
||||
```
|
||||
application:
|
||||
docAreas:
|
||||
- id: "MyGBA"
|
||||
name: "DocArea with my GBA"
|
||||
description: "This is a sample DocArea with a custom GBA installed"
|
||||
apps:
|
||||
- "/pool/apps/my-gba-1.0.1000.zip"
|
||||
```
|
||||
|
||||
## Downloading assets from the web, like git
|
||||
|
||||
If your assets are in git, you can simply download them prior to installing. That way, you do not have to upload them manually:
|
||||
|
||||
```
|
||||
application:
|
||||
download:
|
||||
- "https://git.nplus.cloud/public/nplus/raw/branch/master/apps/my-gba-1.0.1000.zip"
|
||||
docAreas:
|
||||
- id: "MyGBA"
|
||||
name: "DocArea with my GBA"
|
||||
description: "This is a sample DocArea with a custom GBA installed"
|
||||
apps:
|
||||
- "/pool/downloads/my-gba-1.0.1000.zip"
|
||||
```
|
||||
|
||||
> You can also use the *prepper* for downloading assets, which is useful to for example download snippets into the web client before it starts.
|
||||
|
||||
## Deploying additional parts
|
||||
|
||||
You might want to deploy additional parts like web snippets to your instance. This can by done by custom scripts.
|
||||
|
||||
Custom scripts can be run either in *global* or in *document area* context:
|
||||
|
||||
```
|
||||
application:
|
||||
preRun:
|
||||
- "/pool/scripts/global-init.sh"
|
||||
docAreas:
|
||||
- id: "MyGBA"
|
||||
run:
|
||||
- "/pool/scripts/da-deployment.sh"
|
||||
run:
|
||||
- "/pool/scripts/global-deployment.sh"
|
||||
```
|
||||
In *DA* context, the script will get the NAPPL information passed to it.
|
||||
In *global* context, the script does not get any application specific context.
|
||||
|
||||
Example (for a global script):
|
||||
|
||||
```
|
||||
#/bin/sh
|
||||
cp /pool/snippets/test.jar /instance/web/snippets
|
||||
```
|
||||
|
||||
This script copies the file *test.jar* to the web snippets folder, so the web containers have access to it.
|
||||
|
||||
Place this script in the pool folder of your environment, like this:
|
||||
|
||||
```
|
||||
kubectl cp global-deployment.sh nplus-toolbox-0:/conf/pool/scripts
|
||||
```
|
||||
|
||||
Then you can run it during the initialization Job like in the example above.
|
||||
Of course you also need to copy your snippet to the pool first:
|
||||
|
||||
```
|
||||
kubectl cp test.jar nplus-toolbox-0:/conf/pool/snippets
|
||||
```
|
||||
|
||||
Scripts can run Pre- and Post DocArea and App installs:
|
||||
|
||||
- The *global preRun* scripts are run **before** any document area initialization.
|
||||
- The *DA preRun* scripts are run **before** all apps are installed.
|
||||
- The *DA Run* scripts are run **after** all apps are installed.
|
||||
- The *global Run* scripts are run **after** any document area initialization.
|
||||
|
||||
## Debugging
|
||||
|
||||
The Application Chart uses a job that runs a pod once the Application Layer is available. This pod then creates document areas (if not present) and installs apps into them.
|
||||
|
||||
While the job is running, you can check its log using
|
||||
|
||||
```
|
||||
kubectl logs -l nplus/instance=<instance>,nplus/component=application
|
||||
```
|
||||
|
||||
Please substitute `<instance>` with your instance name.
|
||||
|
||||
The job/pod is automatically removed shortly after it finishes, so the `kubectl logs` command might not find the resource any more if you try this after minutes. Of course you will still find these logs in splunk, prometheus, kibana or whatever log stack you use.
|
||||
|
||||
Alternatively, you can check the log at `/conf/<instance>/application/10init.log` from inside the environment toolbox.
|
||||
|
||||
```
|
||||
kubectl exec --stdin --tty nplus-toolbox-0 -- cat /conf/<instance>/application/10init.log
|
||||
```
|
||||
|
||||
## Wait-One-Minute
|
||||
|
||||
If you have an update scenario (and not using argoCD with its waves) and your application is inside your instance, you might get into a race condition problem:
|
||||
|
||||
Your Application Layer is still up when the job is created. The jobs waits for the Application Layer, which - since it is still there - is only a split second and then the job executes. Kubernetes might then update the Application Layer which terminates, leaving the job crashing. As the application job only tries to install once, it will be left incomplete.
|
||||
|
||||
We use an init container `wait-one-minute`, which will wait a minute before the job executes, leaving Kubernetes and the Application Layer enough time to terminate for the update.
|
||||
|
||||
This is the default when **not** using argoCD and waves.
|
||||
|
||||
## nplus-application Chart Configuration
|
||||
|
||||
You can customize / configure nplus-application by setting configuration values on the command line or in values files,
|
||||
that you can pass to helm. Please see the samples directory for details.
|
||||
|
||||
In case there is no value set, the key will not be used in the manifest, resulting in values taken from the config files of the component.
|
||||
|
||||
### Template Functions
|
||||
|
||||
You can use template functions in the values files. If you do so, make sure you quote correctly (single quotes, if you have double quotes in the template,
|
||||
or escaped quotes).
|
||||
|
||||
### Global Values
|
||||
|
||||
All values can be set per component, per instance or globally per environment.
|
||||
|
||||
Example: `global.ingress.domain` sets the domain on instance level. You can still set a different domain on a component, such as administrator.
|
||||
In that case, simply set `ingress.domain` for the administrator chart and that setting will have priority:
|
||||
|
||||
- Prio 1 - Component Level: `ingress.domain`
|
||||
- Prio 2 - Instance Level: `global.ingress.domain`
|
||||
- Prio 3 - Environment Level: `global.environment.ingress.domain`
|
||||
|
||||
### Using Values in Templates
|
||||
|
||||
As it would be a lot of typing to write `.Values.ingress.domain | default .Values.global.ingress.domain | default .Values.global.environment.ingress.domain`in your
|
||||
template code, this is automatically done by nplus. You can simply type `.this.ingress.domain` and you will get a condensed and defaulted version
|
||||
of your Values.
|
||||
|
||||
So an example in your `values.yaml` would be:
|
||||
|
||||
```
|
||||
administrator:
|
||||
waitFor:
|
||||
- '-service {{ .component.prefix }}nappljobs.{{ .Release.Namespace }}.svc.cluster.local:\{{ .this.nappl.port }} -timeout 600'
|
||||
```
|
||||
|
||||
This example shows `.this.nappl.port` which might come from a component, instance or global setting. You do not need to care.
|
||||
The `.Release.Namespace` is set by helm. You have access to all Release and Chart Metadata, just like in your chart code.
|
||||
|
||||
The `.component.prefix` is calculated by nplus and gives you some handy shortcuts to internal variables:
|
||||
|
||||
- `.component.chartName`
|
||||
The name of the chart as in `.Chart.Name`, but with override by `.Values.nameOverride`
|
||||
- `.component.shortChartName`
|
||||
A shorter Version of the name - `nappl` instead of `nplus-component-nappl`
|
||||
- `.component.prefix`
|
||||
The instance Prefix used to name the resources including `-`. This prefix is dropped, if the
|
||||
`.Release.Name` equals `.Release.Namespace` for those of you that only
|
||||
run one nplus Instance per namespace
|
||||
- `.component.name`
|
||||
The name of the component, including `.Values.nameOverride` and some logic
|
||||
- `.component.fullName`
|
||||
The fullName inlcuding `.Values.fullnameOverride` and some logic
|
||||
- `.component.chart`
|
||||
Mainly the `Chart.Name` and `Chart.Version`
|
||||
- `.component.storagePath`
|
||||
The path where the component config is stored in the conf PVC
|
||||
- `.component.handler`
|
||||
The handler (either helm, argoCD or manual)
|
||||
|
||||
- `.instance.name`
|
||||
The name of the instance, but with override by `.Values.instanceOverride`
|
||||
- `.instance.group`
|
||||
The group, this instance belongs to. Override by `.Values.groupOverride`
|
||||
- `.instance.version`
|
||||
The *nscale* version (mostly taken from Application Layer), this instance is deploying.
|
||||
|
||||
- `.environment.name`
|
||||
The name of the environment, but with override by `.Values.environmentNameOverride`
|
||||
|
||||
### Keys
|
||||
|
||||
You can set any of the following values for this component:
|
||||
|
||||
| Key | Description | Default |
|
||||
|-----|-------------|---------|
|
||||
docAreas | Provide a list of docareas to create. Please also see the example files | |
|
||||
download | A list of URLs (Links) to Assets to download before anything else if the download is a .tar.gz, it is automatically untared to /pool/downloads | |
|
||||
env | Sets additional environment variables for the configuration. | |
|
||||
envMap | Sets the name of a configMap, which holds additional environment variables for the configuration. It is added as envFrom configMap to the container. | |
|
||||
envSecret | Sets the name of a secret, which holds additional environment variables for the configuration. It is added as envFrom secretRef to the container. | |
|
||||
fullnameOverride | This overrides the output of the internal fullname function | |
|
||||
**image**​.name | the name of the image to use | `"application-layer"` |
|
||||
**image**​.pullSecrets | you can provide your own pullSecrets, in case you use a private repo. | `["nscale-cr", "nplus-cr"]` |
|
||||
**image**​.repo | if you use a private repo, feel free to set it here | `"ceyoniq.azurecr.io/release/nscale"` |
|
||||
**image**​.tag | the tag of the image to use | `"latest"` |
|
||||
**meta**​.language | Sets the language of the main service (in the *service* container). This is used for instance if you turn OpenTelemetry on, to know which Agent to inject into the container. | |
|
||||
**meta**​.provider | sets provider (partner, reseller) information to be able to invoice per use in a cloud environment | |
|
||||
**meta**​.serviceContainer | The container name of the main service for this component. This is used to define where to inject the telemetry agents, if any | |
|
||||
**meta**​.stage | A optional parameter to indicate the stage (DEV, QA, PROD, ...) this component, instance or environment runs in. This can be used in template functions to add the stage to for instance the service name of telemetry services like open telemetry. (see telemetry example) | |
|
||||
**meta**​.tenant | sets tenant information to be able to invoice per use in a cloud environment | |
|
||||
**meta**​.type | the type of the component. You should not change this value, except if you use a pipeliner in core mode. In core mode, it should be *core*, else *pipeliner* This type is used to create cluster communication for nappl and nstl and potentially group multiple replicaSets into one service. | `"application"` |
|
||||
**meta**​.wave | Sets the wave in which this component should be deployed within an ArgoCD deployment if unset, it uses the default wave thus all components are installed in one wave, then relying on correct wait settings just like in a helm installation | |
|
||||
minReplicaCountType | if you set minReplicaCountType, a podDesruptionBudget will be created with this value as minAvailable, using the component type as selector. This is useful for components, that are spread across multiple replicaSets, like sharepoint or storage layer | |
|
||||
**mounts**​.caCerts​.configMap | Alternative 2: the name of the configMap to use. The Key has to be the File Name used in the path setting | |
|
||||
**mounts**​.caCerts​.secret | Alternative 1: the name of the secret to use. The Key has to be the File Name used in the path setting | |
|
||||
**mounts**​.componentCerts​.configMap | Alternative 2: the name of the configMap to use. The Key has to be the File Name used in the path setting | |
|
||||
**mounts**​.componentCerts​.secret | Alternative 1: the name of the secret to use. The Key has to be the File Name used in the path setting | |
|
||||
**mounts**​.conf​.path | Sets the path to the conf files <br>do not change this value | **info only**, do not change<br> `"/application"` |
|
||||
**mounts**​.data​.class | Sets the class of the data disk | |
|
||||
**mounts**​.data​.size | Sets the size of the data disk | |
|
||||
**mounts**​.data​.volumeName | If you do not want to have a Volume created by the provisioner, you can set the name of your volume here to attach to this pre-existing one | |
|
||||
**mounts**​.disk​.class | Sets the class of the disk | |
|
||||
**mounts**​.disk​.enabled | enables the use of the second data disk. If enabled, all paths defined will end up on this disk. In case of the (default) disabled, the paths will be added to the primaty data disk. | `false` |
|
||||
**mounts**​.disk​.migration | Enables the migration init container. This will copy the data in paths from the primary data disk to the newly enabled secondary disk. This is done only once and only if there is legacy data at all. No files are overwritten! | `false` |
|
||||
**mounts**​.disk​.size | Sets the size of the disk | |
|
||||
**mounts**​.disk​.volumeName | If you do not want to have a Volume created by the provisioner, you can set the name of your volume here to attach to this pre-existing one | |
|
||||
**mounts**​.file​.class | Sets the class of the shared disk | |
|
||||
**mounts**​.file​.size | Sets the size of the shared disk | |
|
||||
**mounts**​.file​.volumeName | If you do not want to have a Volume created by the provisioner, you can set the name of your volume here to attach to this pre-existing one | |
|
||||
**mounts**​.generic | Allows to define generic mounts of pre-provisioned PVs into any container. This can be used e.g. to mount migration nfs, cifs / samba shares into a pipeliner container. | |
|
||||
**mounts**​.logs​.size | Sets the size of the log disk (all paths) | |
|
||||
**mounts**​.pool​.path | Sets the path to a directory, there the `pool` folder from the `conf` volume should be mounted. this is used to store scripts, apps and assets that are required to deploy an application / solution <br>do not change this value | **info only**, do not change<br> `"/pool"` |
|
||||
**mounts**​.temp​.path | Sets the path to the temporary files <br>do not change this value | **info only**, do not change<br> `"/tmp"` |
|
||||
**mounts**​.temp​.size | Sets the size of the temporary disk (all paths) | |
|
||||
nameOverride | This overrides the output of the internal name function | |
|
||||
**nappl**​.account | The technical account to login with | |
|
||||
**nappl**​.domain | The domain of the technical account | |
|
||||
**nappl**​.host | nappl host name | |
|
||||
**nappl**​.instance | instance of the Application Layer, likely `instance1` | |
|
||||
**nappl**​.password | The password of the technical accunt (if not set by secret) | |
|
||||
**nappl**​.port | nappl port (http 8080 or https 8443) | |
|
||||
**nappl**​.secret | An optional secret that holds the credentials (the keys must be `account` and `password`) | |
|
||||
**nappl**​.ssl | sets the Advanced Connect to tls | |
|
||||
nodeSelector | select specific nodes for this component | |
|
||||
**nstl**​.host | The dns of the *nscale Server Storage Layer*. This is used to add it to the nappl configuration | |
|
||||
prerun | A list of scripts to run before the deployment of Apps | |
|
||||
**resources**​.limits​.cpu | The maximum allowed CPU for the container | |
|
||||
**resources**​.limits​.memory | The maximum allowed RAM for the container | |
|
||||
**resources**​.requests​.cpu | Set the share of guaranteed CPU to the container. | |
|
||||
**resources**​.requests​.memory | Set the share of guaranteed RAM to the container | |
|
||||
**rs**​.host | The dns of the *nscale rendition Server*. This is used to add it to the nappl configuration | |
|
||||
run | A list of scripts to run after the deployment of Apps | |
|
||||
**security**​.containerSecurityContext​.allowPrivilegeEscalation | Some functionality may need the possibility to allow privilege escalation. This should be very restrictive <br>you should not change this | **info only**, do not change<br> `false` |
|
||||
**security**​.containerSecurityContext​.readOnlyRootFilesystem | sets the container root file system to read only. This should be the case in production environment <br>you should not change this | **info only**, do not change<br> `true` |
|
||||
**security**​.podSecurityContext​.fsGroup | The file system group as which new files are created <br>there is normally no need to change this | **info only**, do not change<br> `1001` |
|
||||
**security**​.podSecurityContext​.fsGroupChangePolicy | Under which condition should the fsGroup be changed <br>there is normally no need to change this | **info only**, do not change<br> `"OnRootMismatch"` |
|
||||
**security**​.podSecurityContext​.runAsUser | The user under which the container ist run. Avoid 0 / root. The container should run in a non-root context for security <br>there is normally no need to change this | **info only**, do not change<br> `1001` |
|
||||
**security**​.zeroTrust | turns on *Zero Trust* Mode, disabling *all* http communication, even the internal http probes | `false` |
|
||||
**telemetry**​.openTelemetry | turns Open Telemetry on | |
|
||||
**telemetry**​.serviceName | Sets the service name for the telemetry service to more convenient identify the displayed component Example: "{{ .this.meta.type }}-{{ .instance.name }}" | |
|
||||
terminationGracePeriodSeconds | Sets the terminationGracePeriodSeconds for the component If not set, it uses the Kubernetes defaults | |
|
||||
timezone | set the time zone for this component to make sure log output has a specific timestamp, internal dates and times are correct (like the creationDate in nappl) etc. | `Europe/Berlin` |
|
||||
tolerations | Set tolerations for this component | |
|
||||
**utils**​.debug | Turn debugging *on* will give you stack trace etc. Please check out the Chart Developer Guide | `false` |
|
||||
**utils**​.disableWait | in case you use the argoCD Wave feature, you might think about switching off the waitFor mechanism, that makes sure PODs are only started after pre-requisites are fulfilled. You can disable the starndard wait mechanism, but at your own risk, as this might start components even if they are not intended to run yet. | `false` |
|
||||
**utils**​.disableWave | If you use argoCD, you most likely want to use the argo Wave Feature as well, making sure the components of an instance are deployed ordered. However, in DEV you might want to disable this to allow live changing components while previous waves are not finished yet. | `false` |
|
||||
**utils**​.includeNamespace | By default, the namespace is rendered into the manifest. However, if you want to use `helm template` and store manifests for later applying them to multiple namespaces, you might want to turn this `false` to be able to use `kubectl apply -n <namespace> -f template.yaml` later | `true` |
|
||||
**utils**​.maintenance | in Maintenance Mode, all *waitFor* actions will be skipped, the *Health Checks* are ignored and the pods will start in idle, not starting the service at all. This will allow you to gain access to the container to perform recovery and maintenance tasks while having the real container up. | `false` |
|
||||
**utils**​.renderComments | You can turn Comment rendering *on* to get descriptive information inside the manifests. It will also fail on depricated functions and keys, so it is recommended to only switch it off in PROD | `true` |
|
||||
waitFor | Defines a list of conditions that need to be met before this components starts. The condition must be a network port that opens, when the master component is ready. Mostly, this will be a service, since a component is only added to a service if the probes succeed. | |
|
||||
|
||||
14
charts/application/templates/NOTES.txt
Normal file
14
charts/application/templates/NOTES.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
{{- if .Values.docAreas }}
|
||||
{{- range $docArea := .Values.docAreas }}
|
||||
Created Document Area {{ $docArea.id }} on Server {{ $.this.nappl.host }}
|
||||
{{- if $docArea.apps }}
|
||||
{{- range $app := $docArea.apps }}
|
||||
- Installed App {{ $app }} into {{ $docArea.id }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
- No Apps in Document Area {{ $docArea.id }} specified
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
No Document Areas specified
|
||||
{{- end }}
|
||||
19
charts/application/templates/application.tpl
Normal file
19
charts/application/templates/application.tpl
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: nplus.cloud/v1beta1
|
||||
kind: Application
|
||||
metadata:
|
||||
{{- if .this.utils.includeNamespace }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
name: {{ .component.fullName }}
|
||||
labels:
|
||||
{{- include "nplus.instanceLabels" . | nindent 4 }}
|
||||
annotations:
|
||||
{{- include "nplus.annotations" . | nindent 4 }}
|
||||
argocd.argoproj.io/sync-wave: "1"
|
||||
spec:
|
||||
docAreas:
|
||||
{{- toYaml .Values.docAreas | nindent 4 }}
|
||||
run:
|
||||
{{- toYaml .Values.run | nindent 4 }}
|
||||
selector:
|
||||
{{- include "nplus.selectorLabels" . | nindent 4 }}
|
||||
18
charts/application/templates/config.tpl
Normal file
18
charts/application/templates/config.tpl
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ .component.fullName }}-config
|
||||
{{- if .this.utils.includeNamespace }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "nplus.instanceLabels" . | nindent 4 }}
|
||||
annotations:
|
||||
{{- include "nplus.argoWave" . | nindent 4 }}
|
||||
{{- include "nplus.annotations" . | nindent 4 }}
|
||||
{{- include "nplus.securityAnnotations" . | nindent 4 }}
|
||||
data:
|
||||
{{- range $path, $bytes := .Files.Glob "config/*" }}
|
||||
{{- base $path | nindent 2 }}: |
|
||||
{{- tpl ($.Files.Get $path) $ | nindent 4 }}
|
||||
{{- end }}
|
||||
89
charts/application/templates/job.tpl
Normal file
89
charts/application/templates/job.tpl
Normal file
@@ -0,0 +1,89 @@
|
||||
{{- include "nplus.init" $ -}}
|
||||
# Component: {{ .component.chartName }}
|
||||
# will connect to:
|
||||
{{- if (.this.nappl).host }}
|
||||
# nappl: {{ if ($.this.nappl).ssl -}}https{{- else -}}http{{- end -}}://{{ ($.this.nappl).host }}:{{ (.this.nappl).port }}/{{ (.this.nappl).instance }}
|
||||
{{- else }}
|
||||
# defined by config file in conf PV.
|
||||
{{- end }}
|
||||
#
|
||||
{{- if (.this.utils).maintenance -}}
|
||||
# Job must not be running, as we are in maintenance mode and there might not even be a nappl service
|
||||
{{- else }}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: {{ .component.fullName }}
|
||||
{{- if .this.utils.includeNamespace }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "nplus.instanceLabels" . | nindent 4 }}
|
||||
annotations:
|
||||
argocd.argoproj.io/hook: PostSync
|
||||
argocd.argoproj.io/hook-delete-policy: HookSucceeded
|
||||
{{- include "nplus.annotations" . | nindent 4 }}
|
||||
{{- include "nplus.securityAnnotations" . | nindent 4 }}
|
||||
spec:
|
||||
# Deletion ist done by Operator when successful, so no ttl necessary.
|
||||
# ttlSecondsAfterFinished: 60
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
app.kubernetes.io/instance: {{ .instance.group | default .instance.name | default .Release.Name }}
|
||||
app.kubernetes.io/component: {{ .component.chartName }}
|
||||
{{- include "nplus.templateLabels" . | nindent 8 }}
|
||||
spec:
|
||||
# hostname: {{ .component.fullName }}
|
||||
{{- include "nplus.imagePullSecrets" . | nindent 6 }}
|
||||
{{- include "nplus.podSecurityContext" . | nindent 6 }}
|
||||
{{- include "nplus.terminationGracePeriodSeconds" . | nindent 6 }}
|
||||
|
||||
initContainers:
|
||||
|
||||
{{- if (or .this.utils.disableWave (not (and .component.isArgo .this.meta.wave))) }}
|
||||
{{- include "nplus.waitOneMinute" . | nindent 6 }}
|
||||
{{- else }}
|
||||
# -- wait-one-minute - not waiting as {{ .this.utils.disableWave }} {{ .component.isArgo }} {{ .this.meta.wave }}
|
||||
{{- end }}
|
||||
{{- include "nplus.waitFor" . | nindent 6 }}
|
||||
|
||||
containers:
|
||||
- name: run
|
||||
image: {{ include "nplus.image" (dict "global" .Values.global "image" .Values.image) }}
|
||||
imagePullPolicy: {{ include "nplus.imagePullPolicy" .Values.image }}
|
||||
{{- include "nplus.containerSecurityContext" . | nindent 8 }}
|
||||
env:
|
||||
# -- NAPPL Connection Credentials
|
||||
{{- include "nplus.envCredentials" (list
|
||||
"APP_AL_USER" ($.this.nappl).account
|
||||
"APP_AL_PASSWORD" ($.this.nappl).password
|
||||
($.this.nappl).secret
|
||||
) | nindent 10 }}
|
||||
|
||||
{{- include "nplus.environment" . | nindent 8 }}
|
||||
|
||||
command: ["/bin/sh", "-c", "/config/run"]
|
||||
|
||||
{{- include "nplus.resources" . | nindent 8 }}
|
||||
|
||||
volumeMounts:
|
||||
{{- include "nplus.defaultMounts" . | nindent 8 }}
|
||||
- name: config
|
||||
mountPath: /config
|
||||
- name: conf
|
||||
subPath: {{ .this.instance.name }}
|
||||
mountPath: /instance
|
||||
|
||||
volumes:
|
||||
{{- include "nplus.defaultVolumes" . | nindent 6 }}
|
||||
- name: config
|
||||
configMap:
|
||||
name: {{ .component.fullName }}-config
|
||||
defaultMode: 0777
|
||||
|
||||
restartPolicy: Never
|
||||
backoffLimit: 0
|
||||
{{- end }}
|
||||
28
charts/application/templates/networkpolicy.tpl
Normal file
28
charts/application/templates/networkpolicy.tpl
Normal file
@@ -0,0 +1,28 @@
|
||||
{{- include "nplus.init" $ -}}
|
||||
{{- if ((.this.security).cni).createNetworkPolicy }}
|
||||
kind: NetworkPolicy
|
||||
apiVersion: networking.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .component.fullName }}
|
||||
{{- if .this.utils.includeNamespace }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "nplus.instanceLabels" . | nindent 4 }}
|
||||
annotations:
|
||||
{{- include "nplus.argoWave" . | nindent 4 }}
|
||||
{{- include "nplus.annotations" . | nindent 4 }}
|
||||
{{- include "nplus.securityAnnotations" . | nindent 4 }}
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
{{- include "nplus.selectorLabels" . | nindent 6 }}
|
||||
policyTypes:
|
||||
- Egress
|
||||
egress:
|
||||
- to:
|
||||
- podSelector:
|
||||
matchLabels:
|
||||
nplus/group: {{ .instance.group }}
|
||||
nplus/type: core
|
||||
{{- end }}
|
||||
725
charts/application/values.schema.json
Normal file
725
charts/application/values.schema.json
Normal file
@@ -0,0 +1,725 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"docAreas": {
|
||||
"default": "",
|
||||
"description": "Provide a list of docareas to create. Please also see the example files",
|
||||
"title": "docAreas"
|
||||
},
|
||||
"download": {
|
||||
"default": "",
|
||||
"description": "A list of URLs (Links) to Assets to download before anything else if the download is a .tar.gz, it is automatically untared to /pool/downloads",
|
||||
"title": "download"
|
||||
},
|
||||
"env": {
|
||||
"default": "",
|
||||
"description": "Sets additional environment variables for the configuration.",
|
||||
"title": "env"
|
||||
},
|
||||
"envMap": {
|
||||
"default": "",
|
||||
"description": "Sets the name of a configMap, which holds additional environment variables for the configuration. It is added as envFrom configMap to the container.",
|
||||
"title": "envMap"
|
||||
},
|
||||
"envSecret": {
|
||||
"default": "",
|
||||
"description": "Sets the name of a secret, which holds additional environment variables for the configuration. It is added as envFrom secretRef to the container.",
|
||||
"title": "envSecret"
|
||||
},
|
||||
"fullnameOverride": {
|
||||
"default": "",
|
||||
"description": "This overrides the output of the internal fullname function",
|
||||
"title": "fullnameOverride"
|
||||
},
|
||||
"global": {
|
||||
"description": "Global values are values that can be accessed from any chart or subchart by exactly the same name.",
|
||||
"title": "global",
|
||||
"type": "object"
|
||||
},
|
||||
"globals": {
|
||||
"description": "nplus Global Functions Library Chart",
|
||||
"properties": {
|
||||
"global": {
|
||||
"description": "Global values are values that can be accessed from any chart or subchart by exactly the same name.",
|
||||
"title": "global",
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"title": "nplus-globals",
|
||||
"type": "object"
|
||||
},
|
||||
"image": {
|
||||
"additionalProperties": false,
|
||||
"description": "provide the image to be used for this component",
|
||||
"properties": {
|
||||
"name": {
|
||||
"default": "application-layer",
|
||||
"description": "the name of the image to use",
|
||||
"title": "name"
|
||||
},
|
||||
"pullSecrets": {
|
||||
"description": "you can provide your own pullSecrets, in case you use a private repo.",
|
||||
"items": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"title": "pullSecrets"
|
||||
},
|
||||
"repo": {
|
||||
"default": "ceyoniq.azurecr.io/release/nscale",
|
||||
"description": "if you use a private repo, feel free to set it here",
|
||||
"title": "repo"
|
||||
},
|
||||
"tag": {
|
||||
"default": "ubi.9.3.1300.2024121814",
|
||||
"description": "the tag of the image to use",
|
||||
"title": "tag"
|
||||
}
|
||||
},
|
||||
"title": "image"
|
||||
},
|
||||
"meta": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"componentVersion": {
|
||||
"default": "",
|
||||
"description": "This is the version of the component, used for display @internal -- set by devOps pipeline, so do not modify",
|
||||
"title": "componentVersion"
|
||||
},
|
||||
"language": {
|
||||
"default": "",
|
||||
"description": "Sets the language of the main service (in the *service* container). This is used for instance if you turn OpenTelemetry on, to know which Agent to inject into the container.",
|
||||
"title": "language"
|
||||
},
|
||||
"ports": {
|
||||
"additionalProperties": false,
|
||||
"description": "lists the ports this component exposes. This is important for zero trust mode and others.",
|
||||
"properties": {
|
||||
"http": {
|
||||
"default": "",
|
||||
"description": "The http port this component uses (if any). In zero trust mode, this will be disabled. @internal -- this is a constant value of the component and should not be changed.",
|
||||
"title": "http"
|
||||
},
|
||||
"https": {
|
||||
"default": "",
|
||||
"description": "The tls / https port, this component uses (if any) @internal -- this is a constant value of the component and should not be changed.",
|
||||
"title": "https"
|
||||
},
|
||||
"rmi": {
|
||||
"default": "",
|
||||
"description": "A potential rmi port, this component uses (if any) @internal -- this is a constant value of the component and should not be changed.",
|
||||
"title": "rmi"
|
||||
},
|
||||
"tcp": {
|
||||
"default": "",
|
||||
"description": "A potential tcp port, this component uses (if any) @internal -- this is a constant value of the component and should not be changed.",
|
||||
"title": "tcp"
|
||||
},
|
||||
"tcps": {
|
||||
"default": "",
|
||||
"description": "A potential tls / tcps port, this component uses (if any) @internal -- this is a constant value of the component and should not be changed.",
|
||||
"title": "tcps"
|
||||
}
|
||||
},
|
||||
"title": "ports"
|
||||
},
|
||||
"provider": {
|
||||
"default": "",
|
||||
"description": "sets provider (partner, reseller) information to be able to invoice per use in a cloud environment",
|
||||
"title": "provider"
|
||||
},
|
||||
"serviceContainer": {
|
||||
"default": "",
|
||||
"description": "The container name of the main service for this component. This is used to define where to inject the telemetry agents, if any",
|
||||
"title": "serviceContainer"
|
||||
},
|
||||
"stage": {
|
||||
"default": "",
|
||||
"description": "A optional parameter to indicate the stage (DEV, QA, PROD, ...) this component, instance or environment runs in. This can be used in template functions to add the stage to for instance the service name of telemetry services like open telemetry. (see telemetry example)",
|
||||
"title": "stage"
|
||||
},
|
||||
"tenant": {
|
||||
"default": "",
|
||||
"description": "sets tenant information to be able to invoice per use in a cloud environment",
|
||||
"title": "tenant"
|
||||
},
|
||||
"type": {
|
||||
"default": "application",
|
||||
"description": "the type of the component. You should not change this value, except if you use a pipeliner in core mode. In core mode, it should be *core*, else *pipeliner* This type is used to create cluster communication for nappl and nstl and potentially group multiple replicaSets into one service.",
|
||||
"title": "type"
|
||||
},
|
||||
"wave": {
|
||||
"default": "",
|
||||
"description": "Sets the wave in which this component should be deployed within an ArgoCD deployment if unset, it uses the default wave thus all components are installed in one wave, then relying on correct wait settings just like in a helm installation",
|
||||
"title": "wave"
|
||||
}
|
||||
},
|
||||
"title": "meta",
|
||||
"type": "object"
|
||||
},
|
||||
"minReplicaCountType": {
|
||||
"default": "",
|
||||
"description": "if you set minReplicaCountType, a podDesruptionBudget will be created with this value as minAvailable, using the component type as selector. This is useful for components, that are spread across multiple replicaSets, like sharepoint or storage layer",
|
||||
"title": "minReplicaCountType"
|
||||
},
|
||||
"mounts": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"caCerts": {
|
||||
"additionalProperties": false,
|
||||
"description": "You can add a file with trusted Root Certificates (e.g. Azure), to be able to connect to alien services via https. If you have a self-signed root certificate, you can also add it here.",
|
||||
"properties": {
|
||||
"configMap": {
|
||||
"default": "",
|
||||
"description": "Alternative 2: the name of the configMap to use. The Key has to be the File Name used in the path setting",
|
||||
"title": "configMap"
|
||||
},
|
||||
"paths": {
|
||||
"default": "",
|
||||
"description": "Sets the path to the certs folder. @internal -- do not change this value",
|
||||
"title": "paths"
|
||||
},
|
||||
"secret": {
|
||||
"default": "",
|
||||
"description": "Alternative 1: the name of the secret to use. The Key has to be the File Name used in the path setting",
|
||||
"title": "secret"
|
||||
}
|
||||
},
|
||||
"title": "caCerts"
|
||||
},
|
||||
"componentCerts": {
|
||||
"additionalProperties": false,
|
||||
"description": "the java based nscale components have their own certificates, that you might want to upload. You can normally do so via the environment configuration, but should you want to use a secret, you can set it here",
|
||||
"properties": {
|
||||
"configMap": {
|
||||
"default": "",
|
||||
"description": "Alternative 2: the name of the configMap to use. The Key has to be the File Name used in the path setting",
|
||||
"title": "configMap"
|
||||
},
|
||||
"paths": {
|
||||
"default": "",
|
||||
"description": "Sets the path to the component certs. @internal -- do not change this value",
|
||||
"title": "paths"
|
||||
},
|
||||
"secret": {
|
||||
"default": "",
|
||||
"description": "Alternative 1: the name of the secret to use. The Key has to be the File Name used in the path setting",
|
||||
"title": "secret"
|
||||
}
|
||||
},
|
||||
"title": "componentCerts"
|
||||
},
|
||||
"conf": {
|
||||
"additionalProperties": false,
|
||||
"description": "The conf volume is a RWX volume mounted by the environment, that holds all configurations of all instances and components in this environment",
|
||||
"properties": {
|
||||
"path": {
|
||||
"default": "/application",
|
||||
"description": "Sets the path to the conf files @internal -- do not change this value",
|
||||
"title": "path"
|
||||
},
|
||||
"paths": {
|
||||
"default": "",
|
||||
"description": "Sets a list of paths to the conf files @internal -- do not change this value",
|
||||
"title": "paths"
|
||||
}
|
||||
},
|
||||
"title": "conf"
|
||||
},
|
||||
"data": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"class": {
|
||||
"default": "",
|
||||
"description": "Sets the class of the data disk",
|
||||
"title": "class"
|
||||
},
|
||||
"path": {
|
||||
"default": "",
|
||||
"description": "Sets the path to the data files @internal -- do not change this value",
|
||||
"title": "path"
|
||||
},
|
||||
"paths": {
|
||||
"default": "",
|
||||
"description": "Sets a list of paths to the data files @internal -- do not change this value",
|
||||
"title": "paths"
|
||||
},
|
||||
"size": {
|
||||
"default": "",
|
||||
"description": "Sets the size of the data disk",
|
||||
"title": "size"
|
||||
},
|
||||
"volumeName": {
|
||||
"default": "",
|
||||
"description": "If you do not want to have a Volume created by the provisioner, you can set the name of your volume here to attach to this pre-existing one",
|
||||
"title": "volumeName"
|
||||
}
|
||||
},
|
||||
"title": "data",
|
||||
"type": "object"
|
||||
},
|
||||
"disk": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"class": {
|
||||
"default": "",
|
||||
"description": "Sets the class of the disk",
|
||||
"title": "class"
|
||||
},
|
||||
"enabled": {
|
||||
"default": "false",
|
||||
"description": "enables the use of the second data disk. If enabled, all paths defined will end up on this disk. In case of the (default) disabled, the paths will be added to the primaty data disk.",
|
||||
"title": "enabled"
|
||||
},
|
||||
"migration": {
|
||||
"default": "false",
|
||||
"description": "Enables the migration init container. This will copy the data in paths from the primary data disk to the newly enabled secondary disk. This is done only once and only if there is legacy data at all. No files are overwritten!",
|
||||
"title": "migration"
|
||||
},
|
||||
"path": {
|
||||
"default": "",
|
||||
"description": "Sets the path to the disk files @internal -- do not change this value",
|
||||
"title": "path"
|
||||
},
|
||||
"paths": {
|
||||
"default": "",
|
||||
"description": "Sets a list of paths to the data files @internal -- do not change this value",
|
||||
"title": "paths"
|
||||
},
|
||||
"size": {
|
||||
"default": "",
|
||||
"description": "Sets the size of the disk",
|
||||
"title": "size"
|
||||
},
|
||||
"volumeName": {
|
||||
"default": "",
|
||||
"description": "If you do not want to have a Volume created by the provisioner, you can set the name of your volume here to attach to this pre-existing one",
|
||||
"title": "volumeName"
|
||||
}
|
||||
},
|
||||
"title": "disk",
|
||||
"type": "object"
|
||||
},
|
||||
"file": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"class": {
|
||||
"default": "",
|
||||
"description": "Sets the class of the shared disk",
|
||||
"title": "class"
|
||||
},
|
||||
"path": {
|
||||
"default": "",
|
||||
"description": "Sets the path to the shared files @internal -- do not change this value",
|
||||
"title": "path"
|
||||
},
|
||||
"paths": {
|
||||
"default": "",
|
||||
"description": "Sets a list of paths to the shared files @internal -- do not change this value",
|
||||
"title": "paths"
|
||||
},
|
||||
"size": {
|
||||
"default": "",
|
||||
"description": "Sets the size of the shared disk",
|
||||
"title": "size"
|
||||
},
|
||||
"volumeName": {
|
||||
"default": "",
|
||||
"description": "If you do not want to have a Volume created by the provisioner, you can set the name of your volume here to attach to this pre-existing one",
|
||||
"title": "volumeName"
|
||||
}
|
||||
},
|
||||
"title": "file",
|
||||
"type": "object"
|
||||
},
|
||||
"fonts": {
|
||||
"additionalProperties": false,
|
||||
"description": "If you want to use additional fonts like the msttcorefonts (Microsoft Core Fonts). This mounts the fonts directory from the environment pool",
|
||||
"properties": {
|
||||
"path": {
|
||||
"default": "",
|
||||
"description": "Sets the path to the fonts folder. @internal -- do not change this value",
|
||||
"title": "path"
|
||||
}
|
||||
},
|
||||
"title": "fonts"
|
||||
},
|
||||
"generic": {
|
||||
"default": "",
|
||||
"description": "Allows to define generic mounts of pre-provisioned PVs into any container. This can be used e.g. to mount migration nfs, cifs / samba shares into a pipeliner container.",
|
||||
"title": "generic"
|
||||
},
|
||||
"license": {
|
||||
"additionalProperties": false,
|
||||
"description": "some nscale Components require a license file and this defines it's location",
|
||||
"properties": {
|
||||
"path": {
|
||||
"default": "",
|
||||
"description": "Sets the path to the license files @internal -- do not change this value",
|
||||
"title": "path"
|
||||
}
|
||||
},
|
||||
"title": "license"
|
||||
},
|
||||
"logs": {
|
||||
"additionalProperties": false,
|
||||
"description": "The log volume is used to take any left-over logging in the container. The container should log to stdout, but if any component still tries to log to disk this disk needs to be writeable",
|
||||
"properties": {
|
||||
"path": {
|
||||
"default": "",
|
||||
"description": "Sets the path to the log files @internal -- do not change this value",
|
||||
"title": "path"
|
||||
},
|
||||
"paths": {
|
||||
"default": "",
|
||||
"description": "Sets a list of paths to the log files @internal -- do not change this value",
|
||||
"title": "paths"
|
||||
},
|
||||
"size": {
|
||||
"default": "",
|
||||
"description": "Sets the size of the log disk (all paths)",
|
||||
"title": "size"
|
||||
}
|
||||
},
|
||||
"title": "logs"
|
||||
},
|
||||
"pool": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"path": {
|
||||
"default": "/pool",
|
||||
"description": "Sets the path to a directory, there the `pool` folder from the `conf` volume should be mounted. this is used to store scripts, apps and assets that are required to deploy an application / solution @internal -- do not change this value",
|
||||
"title": "path"
|
||||
}
|
||||
},
|
||||
"title": "pool",
|
||||
"type": "object"
|
||||
},
|
||||
"ptemp": {
|
||||
"additionalProperties": false,
|
||||
"description": "The temp volume is used to hold any superflues and temporary data. it is deleted when the pod terminates. However, it is extremely important as all pods filesystems are read only",
|
||||
"properties": {
|
||||
"path": {
|
||||
"default": "",
|
||||
"description": "Sets the path for temporary files that are persisted @internal -- do not change this value",
|
||||
"title": "path"
|
||||
},
|
||||
"paths": {
|
||||
"default": "",
|
||||
"description": "Sets a list of paths for temporary files that are persisted @internal -- do not change this value",
|
||||
"title": "paths"
|
||||
}
|
||||
},
|
||||
"title": "ptemp"
|
||||
},
|
||||
"temp": {
|
||||
"additionalProperties": false,
|
||||
"description": "The temp volume is used to hold any superflues and temporary data. it is deleted when the pod terminates. However, it is extremely important as all pods filesystems are read only",
|
||||
"properties": {
|
||||
"path": {
|
||||
"default": "/tmp",
|
||||
"description": "Sets the path to the temporary files @internal -- do not change this value",
|
||||
"title": "path"
|
||||
},
|
||||
"paths": {
|
||||
"default": "",
|
||||
"description": "Sets a list of paths to the temporary files @internal -- do not change this value",
|
||||
"title": "paths"
|
||||
},
|
||||
"size": {
|
||||
"default": "",
|
||||
"description": "Sets the size of the temporary disk (all paths)",
|
||||
"title": "size"
|
||||
}
|
||||
},
|
||||
"title": "temp"
|
||||
}
|
||||
},
|
||||
"title": "mounts",
|
||||
"type": "object"
|
||||
},
|
||||
"nameOverride": {
|
||||
"default": "",
|
||||
"description": "This overrides the output of the internal name function",
|
||||
"title": "nameOverride"
|
||||
},
|
||||
"nappl": {
|
||||
"additionalProperties": false,
|
||||
"description": "The nscale Application Layer, this component should talk to",
|
||||
"properties": {
|
||||
"account": {
|
||||
"default": "",
|
||||
"description": "The technical account to login with",
|
||||
"title": "account"
|
||||
},
|
||||
"domain": {
|
||||
"default": "",
|
||||
"description": "The domain of the technical account",
|
||||
"title": "domain"
|
||||
},
|
||||
"host": {
|
||||
"default": "",
|
||||
"description": "nappl host name",
|
||||
"title": "host"
|
||||
},
|
||||
"instance": {
|
||||
"default": "",
|
||||
"description": "instance of the Application Layer, likely `instance1`",
|
||||
"title": "instance"
|
||||
},
|
||||
"password": {
|
||||
"default": "",
|
||||
"description": "The password of the technical accunt (if not set by secret)",
|
||||
"title": "password"
|
||||
},
|
||||
"port": {
|
||||
"default": "",
|
||||
"description": "nappl port (http 8080 or https 8443)",
|
||||
"title": "port"
|
||||
},
|
||||
"secret": {
|
||||
"default": "",
|
||||
"description": "An optional secret that holds the credentials (the keys must be `account` and `password`)",
|
||||
"title": "secret"
|
||||
},
|
||||
"ssl": {
|
||||
"default": "",
|
||||
"description": "sets the Advanced Connect to tls",
|
||||
"title": "ssl"
|
||||
}
|
||||
},
|
||||
"title": "nappl"
|
||||
},
|
||||
"nodeSelector": {
|
||||
"default": "",
|
||||
"description": "select specific nodes for this component",
|
||||
"title": "nodeSelector"
|
||||
},
|
||||
"nstl": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"host": {
|
||||
"default": "",
|
||||
"description": "The dns of the *nscale Server Storage Layer*. This is used to add it to the nappl configuration",
|
||||
"title": "host"
|
||||
}
|
||||
},
|
||||
"title": "nstl",
|
||||
"type": "object"
|
||||
},
|
||||
"prerun": {
|
||||
"default": "",
|
||||
"description": "A list of scripts to run before the deployment of Apps",
|
||||
"title": "prerun"
|
||||
},
|
||||
"resources": {
|
||||
"additionalProperties": false,
|
||||
"description": "Assigns hardware resources to container",
|
||||
"properties": {
|
||||
"limits": {
|
||||
"additionalProperties": false,
|
||||
"description": "Limits the maximum resources",
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"default": "",
|
||||
"description": "The maximum allowed CPU for the container",
|
||||
"title": "cpu"
|
||||
},
|
||||
"memory": {
|
||||
"default": "",
|
||||
"description": "The maximum allowed RAM for the container",
|
||||
"title": "memory"
|
||||
}
|
||||
},
|
||||
"title": "limits"
|
||||
},
|
||||
"requests": {
|
||||
"additionalProperties": false,
|
||||
"description": "Requests are used to assign a minimum to a container. This is the guaranteed amount",
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"default": "",
|
||||
"description": "Set the share of guaranteed CPU to the container.",
|
||||
"title": "cpu"
|
||||
},
|
||||
"memory": {
|
||||
"default": "",
|
||||
"description": "Set the share of guaranteed RAM to the container",
|
||||
"title": "memory"
|
||||
}
|
||||
},
|
||||
"title": "requests"
|
||||
}
|
||||
},
|
||||
"title": "resources"
|
||||
},
|
||||
"rs": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"host": {
|
||||
"default": "",
|
||||
"description": "The dns of the *nscale rendition Server*. This is used to add it to the nappl configuration",
|
||||
"title": "host"
|
||||
}
|
||||
},
|
||||
"title": "rs",
|
||||
"type": "object"
|
||||
},
|
||||
"run": {
|
||||
"default": "",
|
||||
"description": "A list of scripts to run after the deployment of Apps",
|
||||
"title": "run"
|
||||
},
|
||||
"security": {
|
||||
"additionalProperties": false,
|
||||
"description": "Security Section defining default runtime environment for your container",
|
||||
"properties": {
|
||||
"containerSecurityContext": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"allowPrivilegeEscalation": {
|
||||
"default": "false",
|
||||
"description": "Some functionality may need the possibility to allow privilege escalation. This should be very restrictive @internal -- you should not change this",
|
||||
"title": "allowPrivilegeEscalation"
|
||||
},
|
||||
"capabilities": {
|
||||
"additionalProperties": false,
|
||||
"description": "Capabilities this container should have. Only allow the necessity, and drop as many as possible @internal -- you should not change this",
|
||||
"properties": {
|
||||
"drop": {
|
||||
"items": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"title": "drop",
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"title": "capabilities"
|
||||
},
|
||||
"readOnlyRootFilesystem": {
|
||||
"default": "true",
|
||||
"description": "sets the container root file system to read only. This should be the case in production environment @internal -- you should not change this",
|
||||
"title": "readOnlyRootFilesystem"
|
||||
}
|
||||
},
|
||||
"title": "containerSecurityContext",
|
||||
"type": "object"
|
||||
},
|
||||
"podSecurityContext": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"fsGroup": {
|
||||
"default": "1001",
|
||||
"description": "The file system group as which new files are created @internal -- there is normally no need to change this",
|
||||
"title": "fsGroup"
|
||||
},
|
||||
"fsGroupChangePolicy": {
|
||||
"default": "OnRootMismatch",
|
||||
"description": "Under which condition should the fsGroup be changed @internal -- there is normally no need to change this",
|
||||
"title": "fsGroupChangePolicy"
|
||||
},
|
||||
"runAsUser": {
|
||||
"default": "1001",
|
||||
"description": "The user under which the container ist run. Avoid 0 / root. The container should run in a non-root context for security @internal -- there is normally no need to change this",
|
||||
"title": "runAsUser"
|
||||
}
|
||||
},
|
||||
"title": "podSecurityContext",
|
||||
"type": "object"
|
||||
},
|
||||
"zeroTrust": {
|
||||
"default": "`false`",
|
||||
"description": "turns on *Zero Trust* Mode, disabling *all* http communication, even the internal http probes",
|
||||
"title": "zeroTrust"
|
||||
}
|
||||
},
|
||||
"title": "security"
|
||||
},
|
||||
"telemetry": {
|
||||
"additionalProperties": false,
|
||||
"description": "Settings for telemetry tools",
|
||||
"properties": {
|
||||
"openTelemetry": {
|
||||
"default": "",
|
||||
"description": "turns Open Telemetry on",
|
||||
"title": "openTelemetry"
|
||||
},
|
||||
"serviceName": {
|
||||
"default": "",
|
||||
"description": "Sets the service name for the telemetry service to more convenient identify the displayed component Example: \"{{ .this.meta.type }}-{{ .instance.name }}\"",
|
||||
"title": "serviceName"
|
||||
}
|
||||
},
|
||||
"title": "telemetry"
|
||||
},
|
||||
"terminationGracePeriodSeconds": {
|
||||
"default": "",
|
||||
"description": "Sets the terminationGracePeriodSeconds for the component If not set, it uses the Kubernetes defaults",
|
||||
"title": "terminationGracePeriodSeconds"
|
||||
},
|
||||
"timezone": {
|
||||
"default": "`Europe/Berlin`",
|
||||
"description": "set the time zone for this component to make sure log output has a specific timestamp, internal dates and times are correct (like the creationDate in nappl) etc.",
|
||||
"title": "timezone"
|
||||
},
|
||||
"tolerations": {
|
||||
"default": "",
|
||||
"description": "Set tolerations for this component",
|
||||
"title": "tolerations"
|
||||
},
|
||||
"utils": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"debug": {
|
||||
"default": "`false`",
|
||||
"description": "Turn debugging *on* will give you stack trace etc. Please check out the Chart Developer Guide",
|
||||
"title": "debug"
|
||||
},
|
||||
"disableWait": {
|
||||
"default": "`false`",
|
||||
"description": "in case you use the argoCD Wave feature, you might think about switching off the waitFor mechanism, that makes sure PODs are only started after pre-requisites are fulfilled. You can disable the starndard wait mechanism, but at your own risk, as this might start components even if they are not intended to run yet.",
|
||||
"title": "disableWait"
|
||||
},
|
||||
"disableWave": {
|
||||
"default": "`false`",
|
||||
"description": "If you use argoCD, you most likely want to use the argo Wave Feature as well, making sure the components of an instance are deployed ordered. However, in DEV you might want to disable this to allow live changing components while previous waves are not finished yet.",
|
||||
"title": "disableWave"
|
||||
},
|
||||
"includeNamespace": {
|
||||
"default": "`true`",
|
||||
"description": "By default, the namespace is rendered into the manifest. However, if you want to use `helm template` and store manifests for later applying them to multiple namespaces, you might want to turn this `false` to be able to use `kubectl apply -n <namespace> -f template.yaml` later",
|
||||
"title": "includeNamespace"
|
||||
},
|
||||
"maintenance": {
|
||||
"default": "`false`",
|
||||
"description": "in Maintenance Mode, all *waitFor* actions will be skipped, the *Health Checks* are ignored and the pods will start in idle, not starting the service at all. This will allow you to gain access to the container to perform recovery and maintenance tasks while having the real container up.",
|
||||
"title": "maintenance"
|
||||
},
|
||||
"renderComments": {
|
||||
"default": "`true`",
|
||||
"description": "You can turn Comment rendering *on* to get descriptive information inside the manifests. It will also fail on depricated functions and keys, so it is recommended to only switch it off in PROD",
|
||||
"title": "renderComments"
|
||||
}
|
||||
},
|
||||
"title": "utils",
|
||||
"type": "object"
|
||||
},
|
||||
"waitFor": {
|
||||
"default": "",
|
||||
"description": "Defines a list of conditions that need to be met before this components starts. The condition must be a network port that opens, when the master component is ready. Mostly, this will be a service, since a component is only added to a service if the probes succeed.",
|
||||
"title": "waitFor"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
338
charts/application/values.yaml
Normal file
338
charts/application/values.yaml
Normal file
@@ -0,0 +1,338 @@
|
||||
# yaml-language-server: $schema=values.schema.json
|
||||
meta:
|
||||
# -- the type of the component. You should not change this value, except if
|
||||
# you use a pipeliner in core mode. In core mode, it should be *core*, else *pipeliner*
|
||||
# This type is used to create cluster communication for nappl and nstl and potentially
|
||||
# group multiple replicaSets into one service.
|
||||
type: application
|
||||
# -- lists the ports this component exposes. This is important for zero trust mode and others.
|
||||
ports:
|
||||
# -- The http port this component uses (if any). In zero trust mode, this will be disabled.
|
||||
# @internal -- this is a constant value of the component and should not be changed.
|
||||
http:
|
||||
# -- The tls / https port, this component uses (if any)
|
||||
# @internal -- this is a constant value of the component and should not be changed.
|
||||
https:
|
||||
# -- A potential tcp port, this component uses (if any)
|
||||
# @internal -- this is a constant value of the component and should not be changed.
|
||||
tcp:
|
||||
# -- A potential tls / tcps port, this component uses (if any)
|
||||
# @internal -- this is a constant value of the component and should not be changed.
|
||||
tcps:
|
||||
# -- A potential rmi port, this component uses (if any)
|
||||
# @internal -- this is a constant value of the component and should not be changed.
|
||||
rmi:
|
||||
# -- sets tenant information to be able to invoice per use in a cloud environment
|
||||
tenant:
|
||||
# -- sets provider (partner, reseller) information to be able to invoice per use in a cloud environment
|
||||
provider:
|
||||
# -- Sets the wave in which this component should be deployed within an ArgoCD deployment
|
||||
# if unset, it uses the default wave thus all components are installed in one wave, then relying
|
||||
# on correct wait settings just like in a helm installation
|
||||
wave:
|
||||
# -- Sets the language of the main service (in the *service* container). This is used for instance
|
||||
# if you turn OpenTelemetry on, to know which Agent to inject into the container.
|
||||
language:
|
||||
# -- The container name of the main service for this component. This is used to define where to
|
||||
# inject the telemetry agents, if any
|
||||
serviceContainer:
|
||||
# -- A optional parameter to indicate the stage (DEV, QA, PROD, ...) this component, instance or environment
|
||||
# runs in. This can be used in template functions to add the stage to for instance the service name of
|
||||
# telemetry services like open telemetry. (see telemetry example)
|
||||
stage:
|
||||
# -- This is the version of the component, used for display
|
||||
# @internal -- set by devOps pipeline, so do not modify
|
||||
componentVersion:
|
||||
mounts:
|
||||
# -- The conf volume is a RWX volume mounted by the environment, that holds
|
||||
# all configurations of all instances and components in this environment
|
||||
conf:
|
||||
# -- Sets the path to the conf files
|
||||
# @internal -- do not change this value
|
||||
path: "/application"
|
||||
# -- Sets a list of paths to the conf files
|
||||
# @internal -- do not change this value
|
||||
paths:
|
||||
pool:
|
||||
# -- Sets the path to a directory, there the `pool` folder from the `conf` volume should be mounted.
|
||||
# this is used to store scripts, apps and assets that are required to deploy an application / solution
|
||||
# @internal -- do not change this value
|
||||
path: "/pool"
|
||||
# -- The temp volume is used to hold any superflues and temporary data.
|
||||
# it is deleted when the pod terminates. However, it is extremely important
|
||||
# as all pods filesystems are read only
|
||||
temp:
|
||||
# -- Sets the path to the temporary files
|
||||
# @internal -- do not change this value
|
||||
path: "/tmp"
|
||||
# -- Sets a list of paths to the temporary files
|
||||
# @internal -- do not change this value
|
||||
paths:
|
||||
# -- Sets the size of the temporary disk (all paths)
|
||||
size:
|
||||
# -- The log volume is used to take any left-over logging in the container.
|
||||
# The container should log to stdout, but if any component still tries to log to disk
|
||||
# this disk needs to be writeable
|
||||
logs:
|
||||
# -- Sets the path to the log files
|
||||
# @internal -- do not change this value
|
||||
path:
|
||||
# -- Sets a list of paths to the log files
|
||||
# @internal -- do not change this value
|
||||
paths:
|
||||
# -- Sets the size of the log disk (all paths)
|
||||
size:
|
||||
# -- some nscale Components require a license file and this
|
||||
# defines it's location
|
||||
license:
|
||||
# -- Sets the path to the license files
|
||||
# @internal -- do not change this value
|
||||
path:
|
||||
# -- If you want to use additional
|
||||
# fonts like the msttcorefonts (Microsoft Core Fonts). This mounts the
|
||||
# fonts directory from the environment pool
|
||||
fonts:
|
||||
# -- Sets the path to the fonts folder.
|
||||
# @internal -- do not change this value
|
||||
path:
|
||||
# -- You can add a file with trusted Root Certificates (e.g. Azure), to be able to
|
||||
# connect to alien services via https. If you have a self-signed root certificate,
|
||||
# you can also add it here.
|
||||
caCerts:
|
||||
# -- Sets the path to the certs folder.
|
||||
# @internal -- do not change this value
|
||||
paths:
|
||||
# -- Alternative 1: the name of the secret to use. The Key has to be the File Name used in the path setting
|
||||
secret:
|
||||
# -- Alternative 2: the name of the configMap to use. The Key has to be the File Name used in the path setting
|
||||
configMap:
|
||||
# -- the java based nscale components have their own certificates, that you might want to upload.
|
||||
# You can normally do so via the environment configuration, but should you want to use a secret,
|
||||
# you can set it here
|
||||
componentCerts:
|
||||
# -- Sets the path to the component certs.
|
||||
# @internal -- do not change this value
|
||||
paths:
|
||||
# -- Alternative 1: the name of the secret to use. The Key has to be the File Name used in the path setting
|
||||
secret:
|
||||
# -- Alternative 2: the name of the configMap to use. The Key has to be the File Name used in the path setting
|
||||
configMap:
|
||||
data:
|
||||
# -- Sets the size of the data disk
|
||||
size:
|
||||
# -- Sets the class of the data disk
|
||||
class:
|
||||
# -- Sets the path to the data files
|
||||
# @internal -- do not change this value
|
||||
path:
|
||||
# -- Sets a list of paths to the data files
|
||||
# @internal -- do not change this value
|
||||
paths:
|
||||
# -- If you do not want to have a Volume created by the provisioner,
|
||||
# you can set the name of your volume here to attach to this pre-existing one
|
||||
volumeName:
|
||||
file:
|
||||
# -- Sets the size of the shared disk
|
||||
size:
|
||||
# -- Sets the class of the shared disk
|
||||
class:
|
||||
# -- Sets the path to the shared files
|
||||
# @internal -- do not change this value
|
||||
path:
|
||||
# -- Sets a list of paths to the shared files
|
||||
# @internal -- do not change this value
|
||||
paths:
|
||||
# -- If you do not want to have a Volume created by the provisioner,
|
||||
# you can set the name of your volume here to attach to this pre-existing one
|
||||
volumeName:
|
||||
# -- The temp volume is used to hold any superflues and temporary data.
|
||||
# it is deleted when the pod terminates. However, it is extremely important
|
||||
# as all pods filesystems are read only
|
||||
ptemp:
|
||||
# -- Sets the path for temporary files that are persisted
|
||||
# @internal -- do not change this value
|
||||
path:
|
||||
# -- Sets a list of paths for temporary files that are persisted
|
||||
# @internal -- do not change this value
|
||||
paths:
|
||||
# -- Allows to define generic mounts of pre-provisioned PVs into any container.
|
||||
# This can be used e.g. to mount migration nfs, cifs / samba shares into a pipeliner container.
|
||||
generic:
|
||||
disk:
|
||||
# -- Sets the size of the disk
|
||||
size:
|
||||
# -- Sets the class of the disk
|
||||
class:
|
||||
# -- Sets the path to the disk files
|
||||
# @internal -- do not change this value
|
||||
path:
|
||||
# -- Sets a list of paths to the data files
|
||||
# @internal -- do not change this value
|
||||
paths:
|
||||
# -- If you do not want to have a Volume created by the provisioner,
|
||||
# you can set the name of your volume here to attach to this pre-existing one
|
||||
volumeName:
|
||||
# -- enables the use of the second data disk. If enabled, all paths defined will end up on this disk.
|
||||
# In case of the (default) disabled, the paths will be added to the primaty data disk.
|
||||
enabled: false
|
||||
# -- Enables the migration init container. This will copy the data in paths from the primary data disk to the newly enabled secondary disk.
|
||||
# This is done only once and only if there is legacy data at all. No files are overwritten!
|
||||
migration: false
|
||||
# -- The nscale Application Layer, this component should talk to
|
||||
nappl:
|
||||
# -- nappl host name
|
||||
host:
|
||||
# -- nappl port (http 8080 or https 8443)
|
||||
port:
|
||||
# -- sets the Advanced Connect to tls
|
||||
ssl:
|
||||
# -- instance of the Application Layer, likely `instance1`
|
||||
instance:
|
||||
# -- The technical account to login with
|
||||
account:
|
||||
# -- The domain of the technical account
|
||||
domain:
|
||||
# -- The password of the technical accunt (if not set by secret)
|
||||
password:
|
||||
# -- An optional secret that holds the credentials (the keys must be `account` and `password`)
|
||||
secret:
|
||||
nstl:
|
||||
# -- The dns of the *nscale Server Storage Layer*. This is used to add it to the nappl configuration
|
||||
host:
|
||||
rs:
|
||||
# -- The dns of the *nscale rendition Server*. This is used to add it to the nappl configuration
|
||||
host:
|
||||
# -- provide the image to be used for this component
|
||||
image:
|
||||
# -- you can provide your own pullSecrets, in case you use
|
||||
# a private repo.
|
||||
pullSecrets:
|
||||
- nscale-cr
|
||||
- nplus-cr
|
||||
# -- the name of the image to use
|
||||
name: application-layer
|
||||
# -- the tag of the image to use
|
||||
tag: latest
|
||||
# -- if you use a private repo, feel free to set it here
|
||||
repo: ceyoniq.azurecr.io/release/nscale
|
||||
# -- Security Section defining default runtime environment for your container
|
||||
security:
|
||||
podSecurityContext:
|
||||
# -- The user under which the container ist run. Avoid 0 / root. The container should run in a non-root context
|
||||
# for security
|
||||
# @internal -- there is normally no need to change this
|
||||
runAsUser: 1001
|
||||
# -- The file system group as which new files are created
|
||||
# @internal -- there is normally no need to change this
|
||||
fsGroup: 1001
|
||||
# -- Under which condition should the fsGroup be changed
|
||||
# @internal -- there is normally no need to change this
|
||||
fsGroupChangePolicy: OnRootMismatch
|
||||
containerSecurityContext:
|
||||
# -- sets the container root file system to read only. This should be the case in production environment
|
||||
# @internal -- you should not change this
|
||||
readOnlyRootFilesystem: true
|
||||
# -- Some functionality may need the possibility to allow privilege escalation. This should be very restrictive
|
||||
# @internal -- you should not change this
|
||||
allowPrivilegeEscalation: false
|
||||
# -- Capabilities this container should have. Only allow the necessity, and drop as many as possible
|
||||
# @internal -- you should not change this
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
# -- turns on *Zero Trust* Mode, disabling *all* http communication, even the internal http probes
|
||||
# @default -- `false`
|
||||
zeroTrust:
|
||||
# -- Assigns hardware resources to container
|
||||
resources:
|
||||
# -- Requests are used to assign a minimum to a container. This is the guaranteed amount
|
||||
requests:
|
||||
# -- Set the share of guaranteed CPU to the container.
|
||||
cpu:
|
||||
# -- Set the share of guaranteed RAM to the container
|
||||
memory:
|
||||
# -- Limits the maximum resources
|
||||
limits:
|
||||
# -- The maximum allowed CPU for the container
|
||||
cpu:
|
||||
# -- The maximum allowed RAM for the container
|
||||
memory:
|
||||
# -- set the time zone for this component to make sure log output has a specific timestamp, internal dates and times are correct (like the creationDate in nappl)
|
||||
# etc.
|
||||
# @default -- `Europe/Berlin`
|
||||
timezone:
|
||||
# -- Set tolerations for this component
|
||||
tolerations:
|
||||
# -- select specific nodes for this component
|
||||
nodeSelector:
|
||||
# -- Sets the name of a secret, which holds additional environment variables for
|
||||
# the configuration. It is added as envFrom secretRef to the container.
|
||||
envSecret:
|
||||
# -- Sets the name of a configMap, which holds additional environment variables for
|
||||
# the configuration. It is added as envFrom configMap to the container.
|
||||
envMap:
|
||||
# -- Sets additional environment variables for
|
||||
# the configuration.
|
||||
env:
|
||||
# -- This overrides the output of the internal name function
|
||||
nameOverride:
|
||||
# -- This overrides the output of the internal fullname function
|
||||
fullnameOverride:
|
||||
# -- A list of scripts to run after the deployment of Apps
|
||||
run:
|
||||
# -- A list of scripts to run before the deployment of Apps
|
||||
prerun:
|
||||
# -- A list of URLs (Links) to Assets to download before anything else
|
||||
# if the download is a .tar.gz, it is automatically untared to /pool/downloads
|
||||
download:
|
||||
# -- Provide a list of docareas to create. Please also see the example files
|
||||
docAreas:
|
||||
utils:
|
||||
# -- Turn debugging *on* will give you stack trace etc.
|
||||
# Please check out the Chart Developer Guide
|
||||
# @default -- `false`
|
||||
debug:
|
||||
# -- You can turn Comment rendering *on* to get descriptive information inside the manifests. It
|
||||
# will also fail on depricated functions and keys, so it is recommended to only switch it off in PROD
|
||||
# @default -- `true`
|
||||
renderComments:
|
||||
# -- By default, the namespace is rendered into the manifest. However, if you want to use
|
||||
# `helm template` and store manifests for later applying them to multiple namespaces, you might
|
||||
# want to turn this `false` to be able to use `kubectl apply -n <namespace> -f template.yaml` later
|
||||
# @default -- `true`
|
||||
includeNamespace:
|
||||
# -- in Maintenance Mode, all *waitFor* actions will be skipped, the *Health Checks* are ignored and the
|
||||
# pods will start in idle, not starting the service at all. This will allow you to gain access to the container
|
||||
# to perform recovery and maintenance tasks while having the real container up.
|
||||
# @default -- `false`
|
||||
maintenance:
|
||||
# -- If you use argoCD, you most likely want to use the argo Wave Feature as well, making sure the components
|
||||
# of an instance are deployed ordered. However, in DEV you might want to disable this to allow live changing components
|
||||
# while previous waves are not finished yet.
|
||||
# @default -- `false`
|
||||
disableWave:
|
||||
# -- in case you use the argoCD Wave feature, you might think about switching off the waitFor mechanism, that makes sure PODs are
|
||||
# only started after pre-requisites are fulfilled. You can disable the starndard wait mechanism, but at your own risk, as this might
|
||||
# start components even if they are not intended to run yet.
|
||||
# @default -- `false`
|
||||
disableWait:
|
||||
# -- Defines a list of conditions that need to be met before this components starts.
|
||||
# The condition must be a network port that opens, when the master component is ready.
|
||||
# Mostly, this will be a service, since a component is only added to a service if the
|
||||
# probes succeed.
|
||||
waitFor:
|
||||
# -- if you set minReplicaCountType, a podDesruptionBudget will be created with this value as
|
||||
# minAvailable, using the component type as selector. This is useful for components, that are spread
|
||||
# across multiple replicaSets, like sharepoint or storage layer
|
||||
minReplicaCountType:
|
||||
# -- Settings for telemetry tools
|
||||
telemetry:
|
||||
# -- turns Open Telemetry on
|
||||
openTelemetry:
|
||||
# -- Sets the service name for the telemetry service to more convenient
|
||||
# identify the displayed component
|
||||
# Example: "{{ .this.meta.type }}-{{ .instance.name }}"
|
||||
serviceName:
|
||||
# -- Sets the terminationGracePeriodSeconds for the component
|
||||
# If not set, it uses the Kubernetes defaults
|
||||
terminationGracePeriodSeconds:
|
||||
Reference in New Issue
Block a user