From 899cfb71b372040c544071011dfdf7d8d119fbd2 Mon Sep 17 00:00:00 2001 From: Kjeld Schouten Date: Wed, 15 Oct 2025 15:11:59 +0200 Subject: [PATCH] add common docs --- charts/library/common/docs/addons.md | 250 +++ charts/library/common/docs/certificate.md | 304 ++++ charts/library/common/docs/configmap.md | 202 +++ charts/library/common/docs/container/args.md | 109 ++ .../library/common/docs/container/command.md | 54 + charts/library/common/docs/container/env.md | 427 +++++ .../library/common/docs/container/envFrom.md | 239 +++ .../library/common/docs/container/envList.md | 132 ++ .../library/common/docs/container/fixedEnv.md | 194 +++ charts/library/common/docs/container/index.md | 307 ++++ .../common/docs/container/lifecycle.md | 305 ++++ .../library/common/docs/container/probes.md | 513 ++++++ .../common/docs/container/resources.md | 301 ++++ .../common/docs/container/securityContext.md | 415 +++++ .../common/docs/container/termination.md | 110 ++ .../library/common/docs/containerOptions.md | 56 + charts/library/common/docs/credentials.md | 383 +++++ .../library/common/docs/fallbackDefaults.md | 829 ++++++++++ charts/library/common/docs/global.md | 260 +++ charts/library/common/docs/imagePullSecret.md | 392 +++++ charts/library/common/docs/index.md | 588 ++++++- .../common/docs/ingress/certManager.md | 81 + .../library/common/docs/ingress/homepage.md | 540 +++++++ charts/library/common/docs/ingress/index.md | 784 +++++++++ charts/library/common/docs/ingress/traefik.md | 247 +++ .../library/common/docs/middlewares/index.md | 290 ++++ .../docs/middlewares/traefik/add-prefix.md | 60 + .../docs/middlewares/traefik/basic-auth.md | 157 ++ .../docs/middlewares/traefik/buffering.md | 152 ++ .../common/docs/middlewares/traefik/chain.md | 114 ++ .../docs/middlewares/traefik/compress.md | 34 + .../docs/middlewares/traefik/content-type.md | 34 + .../docs/middlewares/traefik/forward-auth.md | 215 +++ .../docs/middlewares/traefik/headers.md | 777 +++++++++ .../common/docs/middlewares/traefik/index.md | 83 + .../docs/middlewares/traefik/ip-allow-list.md | 141 ++ .../middlewares/traefik/plugin-bouncer.md | 972 ++++++++++++ .../middlewares/traefik/plugin-geoblock.md | 413 +++++ .../traefik/plugin-mod-security.md | 135 ++ .../middlewares/traefik/plugin-real-ip.md | 89 ++ .../plugin-rewrite-response-headers.md | 169 ++ .../middlewares/traefik/plugin-theme-park.md | 164 ++ .../docs/middlewares/traefik/rate-limit.md | 85 + .../middlewares/traefik/redirect-regex.md | 110 ++ .../middlewares/traefik/redirect-scheme.md | 85 + .../middlewares/traefik/replace-path-regex.md | 85 + .../docs/middlewares/traefik/replace-path.md | 60 + .../common/docs/middlewares/traefik/retry.md | 85 + .../middlewares/traefik/strip-prefix-regex.md | 64 + .../docs/middlewares/traefik/strip-prefix.md | 89 ++ charts/library/common/docs/notes.md | 123 ++ .../common/docs/persistence/configmap.md | 203 +++ .../library/common/docs/persistence/device.md | 86 + .../common/docs/persistence/emptyDir.md | 83 + .../common/docs/persistence/hostPath.md | 90 ++ .../library/common/docs/persistence/index.md | 475 ++++++ .../library/common/docs/persistence/iscsi.md | 446 ++++++ charts/library/common/docs/persistence/nfs.md | 78 + .../common/docs/persistence/pvc-vct/index.md | 604 +++++++ .../docs/persistence/pvc-vct/static-custom.md | 83 + .../docs/persistence/pvc-vct/static-nfs.md | 83 + .../docs/persistence/pvc-vct/static-smb.md | 158 ++ .../library/common/docs/persistence/secret.md | 203 +++ .../common/docs/podDisruptionBudget.md | 258 +++ charts/library/common/docs/podOptions.md | 325 ++++ charts/library/common/docs/priorityClass.md | 262 +++ charts/library/common/docs/rbac.md | 519 ++++++ charts/library/common/docs/resources.md | 150 ++ charts/library/common/docs/secret.md | 225 +++ charts/library/common/docs/securityContext.md | 377 +++++ .../library/common/docs/service/ClusterIP.md | 54 + .../library/common/docs/service/ExternalIP.md | 146 ++ .../common/docs/service/ExternalName.md | 74 + .../common/docs/service/LoadBalancer.md | 147 ++ .../library/common/docs/service/NodePort.md | 75 + charts/library/common/docs/service/index.md | 539 +++++++ .../docs/service/integrations/traefik.md | 363 +++++ charts/library/common/docs/service/ports.md | 182 +++ charts/library/common/docs/serviceAccount.md | 258 +++ charts/library/common/docs/storageClass.md | 296 ++++ charts/library/common/docs/volumeSnapshot.md | 216 +++ .../common/docs/volumeSnapshotClass.md | 243 +++ charts/library/common/docs/webhook.md | 807 ++++++++++ .../library/common/docs/workload/cronjob.md | 331 ++++ .../library/common/docs/workload/daemonset.md | 192 +++ .../common/docs/workload/deployment.md | 217 +++ charts/library/common/docs/workload/index.md | 1412 +++++++++++++++++ charts/library/common/docs/workload/job.md | 188 +++ .../common/docs/workload/statefulset.md | 223 +++ 89 files changed, 23477 insertions(+), 1 deletion(-) create mode 100644 charts/library/common/docs/addons.md create mode 100644 charts/library/common/docs/certificate.md create mode 100644 charts/library/common/docs/configmap.md create mode 100644 charts/library/common/docs/container/args.md create mode 100644 charts/library/common/docs/container/command.md create mode 100644 charts/library/common/docs/container/env.md create mode 100644 charts/library/common/docs/container/envFrom.md create mode 100644 charts/library/common/docs/container/envList.md create mode 100644 charts/library/common/docs/container/fixedEnv.md create mode 100644 charts/library/common/docs/container/index.md create mode 100644 charts/library/common/docs/container/lifecycle.md create mode 100644 charts/library/common/docs/container/probes.md create mode 100644 charts/library/common/docs/container/resources.md create mode 100644 charts/library/common/docs/container/securityContext.md create mode 100644 charts/library/common/docs/container/termination.md create mode 100644 charts/library/common/docs/containerOptions.md create mode 100644 charts/library/common/docs/credentials.md create mode 100644 charts/library/common/docs/fallbackDefaults.md create mode 100644 charts/library/common/docs/global.md create mode 100644 charts/library/common/docs/imagePullSecret.md create mode 100644 charts/library/common/docs/ingress/certManager.md create mode 100644 charts/library/common/docs/ingress/homepage.md create mode 100644 charts/library/common/docs/ingress/index.md create mode 100644 charts/library/common/docs/ingress/traefik.md create mode 100644 charts/library/common/docs/middlewares/index.md create mode 100644 charts/library/common/docs/middlewares/traefik/add-prefix.md create mode 100644 charts/library/common/docs/middlewares/traefik/basic-auth.md create mode 100644 charts/library/common/docs/middlewares/traefik/buffering.md create mode 100644 charts/library/common/docs/middlewares/traefik/chain.md create mode 100644 charts/library/common/docs/middlewares/traefik/compress.md create mode 100644 charts/library/common/docs/middlewares/traefik/content-type.md create mode 100644 charts/library/common/docs/middlewares/traefik/forward-auth.md create mode 100644 charts/library/common/docs/middlewares/traefik/headers.md create mode 100644 charts/library/common/docs/middlewares/traefik/index.md create mode 100644 charts/library/common/docs/middlewares/traefik/ip-allow-list.md create mode 100644 charts/library/common/docs/middlewares/traefik/plugin-bouncer.md create mode 100644 charts/library/common/docs/middlewares/traefik/plugin-geoblock.md create mode 100644 charts/library/common/docs/middlewares/traefik/plugin-mod-security.md create mode 100644 charts/library/common/docs/middlewares/traefik/plugin-real-ip.md create mode 100644 charts/library/common/docs/middlewares/traefik/plugin-rewrite-response-headers.md create mode 100644 charts/library/common/docs/middlewares/traefik/plugin-theme-park.md create mode 100644 charts/library/common/docs/middlewares/traefik/rate-limit.md create mode 100644 charts/library/common/docs/middlewares/traefik/redirect-regex.md create mode 100644 charts/library/common/docs/middlewares/traefik/redirect-scheme.md create mode 100644 charts/library/common/docs/middlewares/traefik/replace-path-regex.md create mode 100644 charts/library/common/docs/middlewares/traefik/replace-path.md create mode 100644 charts/library/common/docs/middlewares/traefik/retry.md create mode 100644 charts/library/common/docs/middlewares/traefik/strip-prefix-regex.md create mode 100644 charts/library/common/docs/middlewares/traefik/strip-prefix.md create mode 100644 charts/library/common/docs/notes.md create mode 100644 charts/library/common/docs/persistence/configmap.md create mode 100644 charts/library/common/docs/persistence/device.md create mode 100644 charts/library/common/docs/persistence/emptyDir.md create mode 100644 charts/library/common/docs/persistence/hostPath.md create mode 100644 charts/library/common/docs/persistence/index.md create mode 100644 charts/library/common/docs/persistence/iscsi.md create mode 100644 charts/library/common/docs/persistence/nfs.md create mode 100644 charts/library/common/docs/persistence/pvc-vct/index.md create mode 100644 charts/library/common/docs/persistence/pvc-vct/static-custom.md create mode 100644 charts/library/common/docs/persistence/pvc-vct/static-nfs.md create mode 100644 charts/library/common/docs/persistence/pvc-vct/static-smb.md create mode 100644 charts/library/common/docs/persistence/secret.md create mode 100644 charts/library/common/docs/podDisruptionBudget.md create mode 100644 charts/library/common/docs/podOptions.md create mode 100644 charts/library/common/docs/priorityClass.md create mode 100644 charts/library/common/docs/rbac.md create mode 100644 charts/library/common/docs/resources.md create mode 100644 charts/library/common/docs/secret.md create mode 100644 charts/library/common/docs/securityContext.md create mode 100644 charts/library/common/docs/service/ClusterIP.md create mode 100644 charts/library/common/docs/service/ExternalIP.md create mode 100644 charts/library/common/docs/service/ExternalName.md create mode 100644 charts/library/common/docs/service/LoadBalancer.md create mode 100644 charts/library/common/docs/service/NodePort.md create mode 100644 charts/library/common/docs/service/index.md create mode 100644 charts/library/common/docs/service/integrations/traefik.md create mode 100644 charts/library/common/docs/service/ports.md create mode 100644 charts/library/common/docs/serviceAccount.md create mode 100644 charts/library/common/docs/storageClass.md create mode 100644 charts/library/common/docs/volumeSnapshot.md create mode 100644 charts/library/common/docs/volumeSnapshotClass.md create mode 100644 charts/library/common/docs/webhook.md create mode 100644 charts/library/common/docs/workload/cronjob.md create mode 100644 charts/library/common/docs/workload/daemonset.md create mode 100644 charts/library/common/docs/workload/deployment.md create mode 100644 charts/library/common/docs/workload/index.md create mode 100644 charts/library/common/docs/workload/job.md create mode 100644 charts/library/common/docs/workload/statefulset.md diff --git a/charts/library/common/docs/addons.md b/charts/library/common/docs/addons.md new file mode 100644 index 00000000000..4df845933e4 --- /dev/null +++ b/charts/library/common/docs/addons.md @@ -0,0 +1,250 @@ +--- +title: Addons +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/addons#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.addons` + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `addons` + +Addons to the workloads + +| | | +| ---------- | -------- | +| Key | `addons` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +addons: {} +``` + +--- + +### `addons.$addon` + +COnfigure the addon + +:::note + +Available addons: + +- CodeServer +- Netshoot +- GlueTun +- Tailscale + +::: + +| | | +| ---------- | --------------- | +| Key | `addons.$addon` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +addons: + codeserver: {} + netshoot: {} + gluetun: {} + tailscale: {} +``` + +--- + +#### `addons.$addon.enabled` + +Enables or Disables the Addon + +| | | +| ---------- | ----------------------- | +| Key | `addons.$addon.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +addons: + codeserver: + enabled: true +``` + +--- + +#### `addons.$addon.targetSelector` + +Define the workloads to add the addon to + +| | | +| ---------- | ------------------------------ | +| Key | `addons.$addon.targetSelector` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `["main"]` | + +Example + +```yaml +addons: + codeserver: + targetSelector: + - main + - other-workload +``` + +--- + +#### `addons.$addon.container` + +Define additional options for the container + +:::tip + +See container options in the [container](/truecharts-common/container) section. + +::: + +| | | +| ---------- | ----------------------------------------------- | +| Key | `addons.$addon.container` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | Depends on the addon (See common's values.yaml) | + +Example + +```yaml +addons: + codeserver: + container: {} +``` + +--- + +#### `addons.$addon.service` + +Define additional options for the service + +:::tip + +See service options in the [service](/truecharts-common/service) section. + +::: + +:::note + +Only applies to: + +- Codeserver + +::: + +| | | +| ---------- | ----------------------------------------------- | +| Key | `addons.$addon.service` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | Depends on the addon (See common's values.yaml) | + +Example + +```yaml +addons: + codeserver: + service: {} +``` + +--- + +#### `addons.$addon.ingress` + +Define additional options for the ingress + +:::tip + +See ingress options in the [ingress](/truecharts-common/ingress) section. + +::: + +:::note + +Only applies to: + +- Codeserver + +::: + +| | | +| ---------- | ----------------------------------------------- | +| Key | `addons.$addon.ingress` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | Depends on the addon (See common's values.yaml) | + +Example + +```yaml +addons: + codeserver: + ingress: {} +``` + +--- + +## Full Examples + +```yaml +addons: + codeserver: + enabled: true + container: + resources: + limits: + cpu: 3333m + memory: 3333Mi + service: + enabled: true + ports: + codeserver: + enabled: true + port: 12345 + targetPort: 12345 + ingress: + enabled: true + hosts: + - host: code.chart-example.local + paths: + - path: / + pathType: Prefix +``` diff --git a/charts/library/common/docs/certificate.md b/charts/library/common/docs/certificate.md new file mode 100644 index 00000000000..2112af16137 --- /dev/null +++ b/charts/library/common/docs/certificate.md @@ -0,0 +1,304 @@ +--- +title: Certificate +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/certificate#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.certificate` + +## Naming scheme + +- `$FullName-$CertificateName` (release-name-chart-name-certificateName) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `certificate` + +Define certificates + +| | | +| ---------- | ------------- | +| Key | `certificate` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +certificate: {} +``` + +--- + +### `$name` + +Define certificate + +| | | +| ---------- | ------------------- | +| Key | `certificate.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +certificate: + certificate-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the certificate + +| | | +| ---------- | --------------------------- | +| Key | `certificate.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +certificate: + certificate-name: + enabled: true +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | ----------------------------- | +| Key | `certificate.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `""` | + +Example + +```yaml +certificate: + certificate-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Define the labels for this certificate + +| | | +| ---------- | -------------------------- | +| Key | `certificate.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +certificate: + certificate-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Define the annotations for this certificate + +| | | +| ---------- | ------------------------------- | +| Key | `certificate.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +certificate: + certificate-name: + annotations: + key: value +``` + +--- + +#### `certificateIssuer` + +Define the certificate issuer for this certificate + +| | | +| ---------- | ------------------------------------- | +| Key | `certificate.$name.certificateIssuer` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +certificate: + certificate-name: + certificateIssuer: some-issuer +``` + +--- + +#### `hosts` + +Define the hosts for this certificate + +| | | +| ---------- | ------------------------- | +| Key | `certificate.$name.hosts` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On each entry) | +| Default | `false` | + +Example + +```yaml +certificate: + certificate-name: + hosts: + - host1 + - host2 +``` + +--- + +#### `certificateSecretTemplate` + +Define the certificate secret template for this certificate + +:::note + +At least one of the following keys must be defined + +[`labels`](/truecharts-common/certificate#labels-1), [`annotations`](/truecharts-common/certificate#annotations-1) + +::: + +| | | +| ---------- | --------------------------------------------- | +| Key | `certificate.$name.certificateSecretTemplate` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +certificate: + certificate-name: + certificateSecretTemplate: {} +``` + +--- + +##### `labels` + +Define the labels for this certificate secret template + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `certificate.$name.certificateSecretTemplate.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +certificate: + certificate-name: + certificateSecretTemplate: + labels: + key: value +``` + +--- + +##### `annotations` + +Define the annotations for this certificate secret template + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `certificate.$name.certificateSecretTemplate.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +certificate: + certificate-name: + certificateSecretTemplate: + annotations: + key: value +``` + +--- + +## Full Examples + +```yaml +certificate: + my-certificate1: + enabled: true + hosts: + - "{{ .Values.host }}" + certificateIssuer: "{{ .Values.issuer }}" + my-certificate2: + enabled: true + hosts: + - host2 + certificateIssuer: some-other-issuer + certificateSecretTemplate: + labels: + label1: label1 + label2: label2 + annotations: + annotation1: annotation1 + annotation2: annotation2 +``` diff --git a/charts/library/common/docs/configmap.md b/charts/library/common/docs/configmap.md new file mode 100644 index 00000000000..b5ca65d8c4d --- /dev/null +++ b/charts/library/common/docs/configmap.md @@ -0,0 +1,202 @@ +--- +title: Configmap +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/configmap#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.configmap` + +## Naming scheme + +- `$FullName-$ConfigmapName` (release-name-chart-name-configmap-name) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `configmap` + +Create Configmap objects + +| | | +| ---------- | ----------- | +| Key | `configmap` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +configmap: {} +``` + +--- + +### `$name` + +Define Configmap + +| | | +| ---------- | ----------------- | +| Key | `configmap.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +configmap: + configmap-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the Configmap + +| | | +| ---------- | ------------------------- | +| Key | `configmap.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +configmap: + configmap-name: + enabled: true +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | --------------------------- | +| Key | `configmap.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +configmap: + configmap-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Additional labels for configmap + +| | | +| ---------- | ------------------------ | +| Key | `configmap.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +configmap: + configmap-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Additional annotations for configmap + +| | | +| ---------- | ----------------------------- | +| Key | `configmap.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +configmap: + configmap-name: + annotations: + key: value +``` + +--- + +#### `data` + +Define the data of the configmap + +| | | +| ---------- | ---------------------- | +| Key | `configmap.$name.data` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Example | `{}` | + +```yaml +configmap: + configmap-name: + data: + key: value +``` + +--- + +## Full Examples + +```yaml +configmap: + configmap-name: + enabled: true + labels: + key: value + keytpl: "{{ .Values.some.value }}" + annotations: + key: value + keytpl: "{{ .Values.some.value }}" + data: + key: value + + other-configmap-name: + enabled: true + namespace: some-namespace + data: + key: | + multi line + text value +``` diff --git a/charts/library/common/docs/container/args.md b/charts/library/common/docs/container/args.md new file mode 100644 index 00000000000..dec90e16b42 --- /dev/null +++ b/charts/library/common/docs/container/args.md @@ -0,0 +1,109 @@ +--- +title: Args +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/args#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` +- `.Values.workload.$name.podSpec.initContainers.$name` + +--- + +## `args` + +Define arg(s). If it's single, can be defined as string + +| | | +| ---------- | ---------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.args` | +| Type | `string` or `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `[]` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + args: + - arg1 + - arg2 +# Or +workload: + workload-name: + podSpec: + containers: + container-name: + args: arg +``` + +--- + +## `extraArgs` + +Define extraArg(s). + +:::note + +Those are appended **after** the `args`. +Useful for adding args after the ones defined by the chart. + +::: + +| | | +| ---------- | --------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.extraArgs` | +| Type | `string` or `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `[]` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + extraArgs: + - extraArg1 + - extraArg2 +# Or +workload: + workload-name: + podSpec: + containers: + container-name: + extraArgs: extraArg +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + args: arg + extraArgs: + - extraArg +``` diff --git a/charts/library/common/docs/container/command.md b/charts/library/common/docs/container/command.md new file mode 100644 index 00000000000..8a51d5ceee0 --- /dev/null +++ b/charts/library/common/docs/container/command.md @@ -0,0 +1,54 @@ +--- +title: Command +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/command#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` +- `.Values.workload.$name.podSpec.initContainers.$name` +- `.Values.workload.$name.podSpec.containers.$name.probes.liveness` +- `.Values.workload.$name.podSpec.containers.$name.probes.readiness` +- `.Values.workload.$name.podSpec.containers.$name.probes.startup` + +--- + +## `command` + +Define command(s). If it's single, can be defined as string + +| | | +| ---------- | ------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.command` | +| Type | `string` or `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `[]` | + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + # As a list + command: + - command1 + - command2 + # As a string + command: command +``` diff --git a/charts/library/common/docs/container/env.md b/charts/library/common/docs/container/env.md new file mode 100644 index 00000000000..c3f70d08dd1 --- /dev/null +++ b/charts/library/common/docs/container/env.md @@ -0,0 +1,427 @@ +--- +title: Env +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/env#full-examples) section for complete examples. + +::: + +:::tip + +Variable names will be scanned for duplicates across all +[secrets](/truecharts-common/secret), [configmaps](/truecharts-common/configmap), +[env](/truecharts-common/container/env), [envList](/truecharts-common/container/envlist) and [fixedEnv](/truecharts-common/container/fixedenv) +and will throw an error if it finds any. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` +- `.Values.workload.$name.podSpec.initContainers.$name` + +--- + +## `env` + +Define env(s) for the container + +| | | +| ---------- | --------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (Only value) | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: {} +``` + +--- + +### `env.$key` + +Define the env key + +| | | +| ---------- | -------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key` | +| Type | `string` or `map` | +| Required | ✅ | +| Helm `tpl` | ✅ (Only on value, when it's a string) | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: "" +``` + +--- + +#### `env.$key.configMapKeyRef` + +Define variable from configMapKeyRef + +| | | +| ---------- | ------------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.env.$key.configMapKeyRef` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + configMapKeyRef: {} +``` + +--- + +##### `env.$key.configMapKeyRef.name` + +Define the configMap name + +:::note + +This will be automatically expanded to `fullname-secret-name`. +You can opt out of this by setting [`expandObjectName`](/truecharts-common/container/env#envkeyconfigmapkeyrefexpandobjectname) to `false` + +::: + +| | | +| ---------- | ----------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.configMapKeyRef.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + configMapKeyRef: + name: some-configmap-name +``` + +--- + +##### `env.$key.configMapKeyRef.key` + +Define the configMap key + +| | | +| ---------- | ---------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.configMapKeyRef.key` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + configMapKeyRef: + key: some-configmap-key +``` + +--- + +##### `env.$key.configMapKeyRef.expandObjectName` + +Whether to expand (adding the fullname as prefix) the configmap name + +| | | +| ---------- | ----------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.configMapKeyRef.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + configMapKeyRef: + expandObjectName: false +``` + +--- + +#### `env.$key.secretKeyRef` + +Define variable from secretKeyRef + +| | | +| ---------- | --------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.secretKeyRef` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + secretKeyRef: {} +``` + +--- + +##### `env.$key.secretKeyRef.name` + +Define the secret name + +:::note + +This will be automatically expanded to `fullname-secret-name`. +You can opt out of this by setting [`expandObjectName`](/truecharts-common/container/env#envkeysecretkeyrefexpandobjectname) to `false` + +::: + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.secretKeyRef.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + secretKeyRef: + name: some-secret-name +``` + +--- + +##### `env.$key.secretKeyRef.key` + +Define the secret key + +| | | +| ---------- | ------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.secretKeyRef.key` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + secretKeyRef: + key: some-secret-key +``` + +--- + +##### `env.$key.secretKeyRef.expandObjectName` + +Whether to expand (adding the fullname as prefix) the secret name + +| | | +| ---------- | -------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.secretKeyRef.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + secretKeyRef: + expandObjectName: false +``` + +--- + +#### `env.$key.fieldRef` + +Define variable from fieldRef + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.fieldRef` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + fieldRef: {} +``` + +--- + +##### `env.$key.fieldRef.fieldPath` + +Define the field path + +| | | +| ---------- | --------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.fieldRef.fieldPath` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + fieldRef: + fieldPath: metadata.name +``` + +--- + +##### `env.$key.fieldRef.apiVersion` + +Define the apiVersion + +| | | +| ---------- | ---------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.env.$key.fieldRef.apiVersion` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + env: + ENV_NAME: + fieldRef: + apiVersion: v1 +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + env: + ENV_NAME1: ENV_VALUE + ENV_NAME2: "{{ .Values.some.path }}" + ENV_NAME3: + configMapKeyRef: + # This will be expanded to 'fullname-configmap-name' + name: configmap-name + key: configmap-key + ENV_NAME4: + secretKeyRef: + name: secret-name + key: secret-key + expandObjectName: false + ENV_NAME5: + fieldRef: + fieldPath: metadata.name + apiVersion: v1 +``` diff --git a/charts/library/common/docs/container/envFrom.md b/charts/library/common/docs/container/envFrom.md new file mode 100644 index 00000000000..f1c0b7d9f13 --- /dev/null +++ b/charts/library/common/docs/container/envFrom.md @@ -0,0 +1,239 @@ +--- +title: EnvFrom +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/envfrom#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` +- `.Values.workload.$name.podSpec.initContainers.$name` + +--- + +## `envFrom` + +Define envFrom for the container + +| | | +| ---------- | ------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.envFrom` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envFrom: [] +``` + +--- + +### `envFrom.secretRef` + +Define the secretRef + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.envFrom[].secretRef` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envFrom: + - secretRef: {} +``` + +--- + +#### `envFrom.secretRef.name` + +Define the secret name + +:::note + +This will be automatically expanded to `fullname-secret-name`. +You can opt out of this by setting [`expandObjectName`](/truecharts-common/container/envfrom#envfromsecretrefexpandobjectname) to `false` + +::: + +| | | +| ---------- | ------------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.envFrom[].secretRef.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envFrom: + - secretRef: + name: secret-name +``` + +--- + +#### `envFrom.secretRef.expandObjectName` + +Whether to expand (adding the fullname as prefix) the secret name + +| | | +| ---------- | ------------------------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.envFrom[].secretRef.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envFrom: + - secretRef: + name: secret-name + expandObjectName: false +``` + +--- + +### `envFrom.configMapRef` + +Define the configMapRef + +| | | +| ---------- | ---------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.envFrom[].configMapRef` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envFrom: + - configMapRef: {} +``` + +--- + +#### `envFrom.configMapRef.name` + +Define the configmap name + +:::note + +This will be automatically expanded to `fullname-configmap-name`. +You can opt out of this by setting [`expandObjectName`](/truecharts-common/container/envfrom#envfromconfigmaprefexpandobjectname) to `false` + +::: + +| | | +| ---------- | --------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.envFrom[].configMapRef.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envFrom: + - configMapRef: + name: configmap-name +``` + +--- + +#### `envFrom.configMapRef.expandObjectName` + +Whether to expand (adding the fullname as prefix) the configmap name + +| | | +| ---------- | --------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.envFrom[].configMapRef.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envFrom: + - configMapRef: + name: configmap-name + expandObjectName: false +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + envFrom: + - secretRef: + # This will be expanded to `fullname-secret-name` + name: secret-name + - configMapRef: + name: configmap-name + expandObjectName: false +``` diff --git a/charts/library/common/docs/container/envList.md b/charts/library/common/docs/container/envList.md new file mode 100644 index 00000000000..5d8a01aba4b --- /dev/null +++ b/charts/library/common/docs/container/envList.md @@ -0,0 +1,132 @@ +--- +title: EnvList +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/envlist#full-examples) section for complete examples. + +::: + +:::tip + +Variable names will be scanned for duplicates across all +[secrets](/truecharts-common/secret), [configmaps](/truecharts-common/configmap), +[env](/truecharts-common/container/env), [envList](/truecharts-common/container/envlist) and [fixedEnv](/truecharts-common/container/fixedenv) +and will throw an error if it finds any. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` +- `.Values.workload.$name.podSpec.initContainers.$name` + +--- + +## `envList` + +Define env(s) for the container + +:::note + +- This should not be used unless you have instructions from the maintainer to do so. +- For native helm charts, use [env](/truecharts-common/container/env) instead. + +::: + +| | | +| ---------- | ------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.envList` | +| Type | `list` of `strings` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envList: [] +``` + +--- + +### `envList.name` + +Define the env name + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.envList[].name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envList: + - name: ENV_NAME +``` + +--- + +### `envList.value` + +Define the env value + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.envList[].value` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + envList: + - name: ENV_NAME + value: ENV_VALUE +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + envList: + - name: ENV_NAME1 + value: ENV_VALUE + - name: ENV_NAME2 + value: "{{ .Values.some.path }}" + - name: ENV_NAME3 + value: "" +``` diff --git a/charts/library/common/docs/container/fixedEnv.md b/charts/library/common/docs/container/fixedEnv.md new file mode 100644 index 00000000000..bbf58bf07a6 --- /dev/null +++ b/charts/library/common/docs/container/fixedEnv.md @@ -0,0 +1,194 @@ +--- +title: FixedEnv +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/fixedenv#full-examples) section for complete examples. + +::: + +:::tip + +Variable names will be scanned for duplicates across all +[secrets](/truecharts-common/secret), [configmaps](/truecharts-common/configmap), +[env](/truecharts-common/container/env), [envList](/truecharts-common/container/envlist) and [fixedEnv](/truecharts-common/container/fixedenv) +and will throw an error if it finds any. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` +- `.Values.workload.$name.podSpec.initContainers.$name` + +--- + +## `fixedEnv` + +Override fixedEnv for the container + +:::note + +By default it will set the following environment variables: + +- `TZ`: [Default TZ](/truecharts-common#tz) or [fixedEnv.TZ](/truecharts-common/container/fixedenv#fixedenvtz) +- `UMASK`: [Default UMASK](/truecharts-common/securitycontext#securitycontextcontainerumask) or [fixedEnv.UMASK](/truecharts-common/container/fixedenv#fixedenvumask) +- `UMASK_SET`: [Default UMASK](/truecharts-common/securitycontext#securitycontextcontainerumask) or [fixedEnv.UMASK](/truecharts-common/container/fixedenv#fixedenvumask) +- `S6_READ_ONLY_ROOT`: `1` + - Only when [`readOnlyRootFilesystem`](/truecharts-common/container/securitycontext#securitycontextreadonlyrootfilesystem) or [`runAsNonRoot`](/truecharts-common/container/securitycontext#securitycontextrunasnonroot) is `true` +- `PUID`, `USER_ID`, `UID`: [Default PUID](/truecharts-common/securitycontext#securitycontextcontainerpuid) or [fixedEnv.PUID](/truecharts-common/container/fixedenv#fixedenvpuid) + - Only when [`runAsUser`](/truecharts-common/securitycontext#securitycontextcontainerrunasuser) or [`runAsGroup`](/truecharts-common/securitycontext#securitycontextcontainerrunasgroup) is `0` +- `PGID`, `GROUP_ID`, `GID`: Same as [`fsGroup`](/truecharts-common/securitycontext#securitycontextpodfsgroup) + - Only when [`runAsUser`](/truecharts-common/securitycontext#securitycontextcontainerrunasuser) or [`runAsGroup`](/truecharts-common/securitycontext#securitycontextcontainerrunasgroup) is `0` +- `NVIDIA_DRIVER_CAPABILITIES`: [Default NVIDIA_CAPS](/truecharts-common/containeroptions#nvidia_caps) or [fixedEnv.NVIDIA_CAPS](/truecharts-common/container/fixedenv#fixedenvnvidia_caps) + - Only when `nvidia.com/gpu` is set to `> 0` under [`resources`](/truecharts-common/container/resources) + +::: + +| | | +| ---------- | -------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.fixedEnv` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + fixedEnv: {} +``` + +--- + +### `fixedEnv.TZ` + +Override the timezone for the container + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.fixedEnv.TZ` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common#tz) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + fixedEnv: + TZ: "America/New_York" +``` + +--- + +### `fixedEnv.UMASK` + +Override the umask for the container + +| | | +| ---------- | -------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.fixedEnv.UMASK` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext/#securitycontextcontainerumask) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + fixedEnv: + UMASK: "003" +``` + +--- + +### `fixedEnv.PUID` + +Override the PUID for the container + +| | | +| ---------- | ------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.fixedEnv.PUID` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext/#securitycontextcontainerpuid) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + fixedEnv: + PUID: "0" +``` + +--- + +### `fixedEnv.NVIDIA_CAPS` + +Override the NVIDIA_CAPS for the container + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.fixedEnv.NVIDIA_CAPS` | +| Type | `list` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/containeroptions#nvidia_caps) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + fixedEnv: + NVIDIA_CAPS: + - compute +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + fixedEnv: + TZ: "America/New_York" + NVIDIA_CAPS: + - compute + UMASK: "003" + PUID: "0" +``` diff --git a/charts/library/common/docs/container/index.md b/charts/library/common/docs/container/index.md new file mode 100644 index 00000000000..d9664e36966 --- /dev/null +++ b/charts/library/common/docs/container/index.md @@ -0,0 +1,307 @@ +--- +title: Containers / Init Containers +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` +- `.Values.workload.$name.podSpec.initContainers.$name` + +:::tip + +Replace references to `$name` with the actual name you want to use. + +::: + +## Notes + +Every option under `workload.$name.podSpec.containers.$name` is also +available under `workload.$name.podSpec.initContainers.$name`. + +Unless otherwise noted. + +--- + +## `enabled` + +Define if the container is enabled or not + +| | | +| ---------- | ------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + enabled: true +``` + +--- + +## `type` + +Define the type of container + +:::note + +- Only applies to `initContainers` +- Init containers for each type are executed in an alphabetical order based on their name. + +::: + +| | | +| ---------- | -------------------------------------------------- | +| Key | `workload.$name.podSpec.initContainers.$name.type` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `init` | + +Valid Values: + +- `init` (Runs before the containers is started.) +- `install` (Runs before the containers is started and only on install.) +- `upgrade` (Runs before the containers is started and only on upgrade.) + +Example + +```yaml +workload: + workload-name: + podSpec: + initContainers: + container-name: + type: init +``` + +--- + +## `imageSelector` + +Define the image `map` to use + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.imageSelector` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `image` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + imageSelector: image +``` + +--- + +## `primary` + +Define if the container is primary or not + +:::note + +Does **not** apply to `initContainers` + +::: + +| | | +| ---------- | ------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.primary` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + primary: true +``` + +--- + +## `stdin` + +Define if the container should have stdin enabled or not + +| | | +| ---------- | ----------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.stdin` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + stdin: true +``` + +--- + +## `tty` + +Define if the container should have tty enabled or not + +| | | +| ---------- | --------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.tty` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + tty: true +``` + +--- + +## `command` + +See [command](/truecharts-common/container/command) + +--- + +## `args` + +See [args](/truecharts-common/container/args#args) + +--- + +## `extraArgs` + +See [extraArgs](/truecharts-common/container/args#extraargs) + +--- + +## `termination` + +See [termination](/truecharts-common/container/termination) + +--- + +## `lifecycle` + +:::note + +Does **not** apply to `initContainers` + +::: + +See [lifecycle](/truecharts-common/container/lifecycle) + +--- + +## `probes` + +:::note + +Does **not** apply to `initContainers` + +::: + +See [probes](/truecharts-common/container/probes) + +--- + +## `resources` + +See [resources](/truecharts-common/resources) + +--- + +## `securityContext` + +See [securityContext](/truecharts-common/securitycontext) + +--- + +## `envFrom` + +See [envFrom](/truecharts-common/container/envfrom) + +--- + +## `fixedEnv` + +See [fixedEnv](/truecharts-common/container/fixedenv) + +--- + +## `env` + +See [env](/truecharts-common/container/env) + +--- + +## `envList` + +See [envList](/truecharts-common/container/envlist) + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + imageSelector: image + stdin: true + tty: true + initContainers: + init-container-name: + enabled: true + type: init + imageSelector: image + stdin: true + tty: true +``` diff --git a/charts/library/common/docs/container/lifecycle.md b/charts/library/common/docs/container/lifecycle.md new file mode 100644 index 00000000000..011c011bd57 --- /dev/null +++ b/charts/library/common/docs/container/lifecycle.md @@ -0,0 +1,305 @@ +--- +title: Lifecycle +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/lifecycle#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` + +--- + +## `lifecycle` + +Define lifecycle for the container + +| | | +| ---------- | --------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.lifecycle` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + lifecycle: {} +``` + +--- + +### `lifecycle.preStop` + +Define preStop lifecycle + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.lifecycle.preStop` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + lifecycle: + preStop: {} +``` + +--- + +### `lifecycle.postStart` + +Define preStop lifecycle + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.lifecycle.postStart` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + lifecycle: + postStart: {} +``` + +--- + +#### `lifecycle.$hook.type` + +Define hook type + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.lifecycle.$hook.type` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Valid Values: + +- `exec` +- `http` +- `https` + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + lifecycle: + preStop: + type: exec +``` + +--- + +#### `lifecycle.$hook.command` + +Define command(s) + +:::note + +- Only applies when `type: exec` +- It is **required** + +::: + +See [Command](/truecharts-common/container/command#command) for more information. + +--- + +#### `lifecycle.$hook.port` + +Define the port + +:::note + +- Only applies when `type: http` or `type: https` +- It is **required** + +::: + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.lifecycle.$hook.port` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + lifecycle: + postStart: + type: http + port: 8080 +``` + +--- + +#### `lifecycle.$hook.host` + +Define the host + +:::note + +- Only applies when `type: http` or `type: https` + +::: + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.lifecycle.$hook.host` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + lifecycle: + postStart: + type: http + port: 8080 + host: localhost +``` + +--- + +#### `lifecycle.$hook.path` + +Define the path + +:::note + +- Only applies when `type: http` or `type: https` + +::: + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.lifecycle.$hook.path` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `"/"` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + lifecycle: + postStart: + type: http + port: 8080 + host: localhost + path: /path +``` + +--- + +#### `lifecycle.$hook.httpHeaders` + +Define the httpHeaders + +| | | +| ---------- | --------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.lifecycle.$hook.httpHeaders` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + lifecycle: + postStart: + type: http + port: 8080 + host: localhost + path: /path + httpHeaders: + key: value +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + lifecycle: + preStop: + type: exec + command: + - command + postStart: + type: http + port: 8080 + host: localhost + path: /path + httpHeaders: + key: value +``` diff --git a/charts/library/common/docs/container/probes.md b/charts/library/common/docs/container/probes.md new file mode 100644 index 00000000000..0969dffdbc4 --- /dev/null +++ b/charts/library/common/docs/container/probes.md @@ -0,0 +1,513 @@ +--- +title: Probes +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/probes#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` + +--- + +## `probes` + +Define probes for the container + +| | | +| ---------- | ------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.probes` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: {} +``` + +### `probes.liveness` + +Define the liveness probe + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.liveness` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: {} +``` + +--- + +### `probes.readiness` + +Define the readiness probe + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.readiness` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + readiness: {} +``` + +--- + +### `probes.startup` + +Define the startup probe + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.startup` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + startup: {} +``` + +--- + +#### `probes.$probe.enabled` + +Enable or disable the probe + +| | | +| ---------- | --------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + enabled: true +``` + +--- + +#### `probes.$probe.type` + +Define probe type + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.type` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `http` | + +Valid Values: + +- `exec` +- `http` +- `https` +- `tcp` +- `grpc` + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + type: http +``` + +--- + +#### `probes.$probe.command` + +Define command(s) + +:::note + +- Only applies when `type: exec` +- It is **required** + +::: + +See [Command](/truecharts-common/container/command#command) for more information. + +--- + +#### `probes.$probe.port` + +Define the port + +:::note + +- Only applies when `type: grpc/tcp/http/https` + +::: + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.port` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + port: 8080 +``` + +--- + +#### `probes.$probe.path` + +Define the path + +:::note + +- Only applies when `type: http/https` + +::: + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.path` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `/` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + path: /healthz +``` + +--- + +#### `probes.$probe.httpHeaders` + +Define the httpHeaders + +:::note + +- Only applies when `type: http/https` + +::: + +| | | +| ---------- | ------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.httpHeaders` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + httpHeaders: + key1: value1 + key2: value2 +``` + +--- + +#### `probes.$probe.spec` + +Define the probe spec + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.spec` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + spec: {} +``` + +--- + +##### `probes.$probe.spec.initialDelaySeconds` + +Define the initialDelaySeconds in seconds + +| | | +| ---------- | ---------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.spec.initialDelaySeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See defaults for each probe [here](/truecharts-common/fallbackdefaults#probetimeouts) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + spec: + initialDelaySeconds: 10 +``` + +--- + +##### `probes.$probe.spec.periodSeconds` + +Define the periodSeconds in seconds + +| | | +| ---------- | ---------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.spec.periodSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See defaults for each probe [here](/truecharts-common/fallbackdefaults#probetimeouts) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + spec: + periodSeconds: 10 +``` + +--- + +##### `probes.$probe.spec.timeoutSeconds` + +Define the timeoutSeconds in seconds + +| | | +| ---------- | ---------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.spec.timeoutSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See defaults for each probe [here](/truecharts-common/fallbackdefaults#probetimeouts) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + spec: + timeoutSeconds: 10 +``` + +--- + +##### `probes.$probe.spec.failureThreshold` + +Define the failureThreshold in seconds + +| | | +| ---------- | ---------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.spec.failureThreshold` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See defaults for each probe [here](/truecharts-common/fallbackdefaults#probetimeouts) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + liveness: + spec: + failureThreshold: 10 +``` + +--- + +##### `probes.$probe.spec.successThreshold` + +Define the successThreshold in seconds. `liveness` and `startup` must always be 1 + +| | | +| ---------- | ---------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.probes.$probe.spec.successThreshold` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See defaults for each probe [here](/truecharts-common/fallbackdefaults#probetimeouts) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + probes: + readiness: + spec: + successThreshold: 10 +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + probes: + liveness: + enabled: true + type: https + port: 8080 + path: /healthz + httpHeaders: + key1: value1 + key2: value2 + spec: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 10 + failureThreshold: 10 + successThreshold: 10 + readiness: + enabled: true + type: tcp + port: 8080 + spec: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 10 + failureThreshold: 10 + successThreshold: 10 + startup: + enabled: true + type: exec + command: + - command1 + - command2 + spec: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 10 + failureThreshold: 10 + successThreshold: 10 +``` diff --git a/charts/library/common/docs/container/resources.md b/charts/library/common/docs/container/resources.md new file mode 100644 index 00000000000..d4b4cbdca18 --- /dev/null +++ b/charts/library/common/docs/container/resources.md @@ -0,0 +1,301 @@ +--- +title: Resources +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/resources#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` +- `.Values.workload.$name.podSpec.initContainers.$name` + +## Notes + +- [CPU Regex Validation](https://regex101.com/r/D4HouI/1) +- [Memory Regex Validation](https://regex101.com/r/4X3Z9V/1) + +--- + +## `resources` + +The resources that the container can use. + +| | | +| ---------- | --------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.resources` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/resources#defaults) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: {} +``` + +--- + +### `resources.requests` + +The minimum amount of resources that the container needs. + +:::note + +Requests are **required**, because without it, kubernetes uses the `limits` as the `requests`. +Which can lead pods to be evicted or not even scheduled when they reach their `limits`. + +::: + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.resources.requests` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/resources#resourcesrequests) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: + requests: {} +``` + +--- + +#### `resources.requests.cpu` + +The minimum amount of CPU that the container can use. + +| | | +| ---------- | ---------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.resources.requests.cpu` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/resources#resourcesrequestscpu) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: + requests: + cpu: 10m +``` + +--- + +#### `resources.requests.memory` + +The minimum amount of memory that the container can use. + +| | | +| ---------- | ------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.resources.requests.memory` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/resources#resourcesrequestsmemory) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: + requests: + memory: 50Mi +``` + +--- + +### `resources.limits` + +The maximum amount of resources that the container can use. + +:::note + +Limits are **optional**, can be set to "unlimited" by setting it's values (`cpu` and `memory`) to `0`. + +::: + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.resources.limits` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/resources#resourceslimits) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: + limits: {} +``` + +--- + +#### `resources.limits.cpu` + +The maximum amount of CPU that the container can use. + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.resources.limits.cpu` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/resources#resourceslimitscpu) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: + limits: + cpu: "1" +``` + +--- + +#### `resources.limits.memory` + +The maximum amount of memory that the container can use. + +| | | +| ---------- | ----------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.resources.limits.memory` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/resources#resourceslimitsmemory) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: + limits: + memory: 1Gi +``` + +--- + +#### `resources.limits."gpu.intel.com/i915"` + +An Intel GPU added when available +_Note that `gpu.intel.com/i915` is a single key, despite of the `.`_ + +Default + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: + limits: + gpu.intel.com/i915: 1 +``` + +--- + +#### `resources.limits."nvidia.com/gpu"` + +An NVIDIA GPU added when available +_Note that `nvidia.com/gpu` is a single key, despite of the `.`_ + +Default + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: + limits: + nvidia.com/gpu: 1 +``` + +--- + +#### `resources.limits."amd.com/gpu"` + +An AMD GPU added when available +_Note that `amd.com/gpu` is a single key, despite of the `.`_ + +Default + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + resources: + limits: + amd.com/gpu: 1 +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + resources: + limits: + cpu: "1" + memory: 1Gi + requests: + cpu: 10m + memory: 50Mi +``` diff --git a/charts/library/common/docs/container/securityContext.md b/charts/library/common/docs/container/securityContext.md new file mode 100644 index 00000000000..4d1da829576 --- /dev/null +++ b/charts/library/common/docs/container/securityContext.md @@ -0,0 +1,415 @@ +--- +title: Security Context +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/securitycontext#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` +- `.Values.workload.$name.podSpec.initContainers.$name` + +--- + +## `securityContext` + +Define securityContext for the container + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.securityContext` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainer) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: {} +``` + +--- + +### `securityContext.runAsUser` + +Define the runAsUser for the container + +| | | +| ---------- | ----------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.securityContext.runAsUser` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerrunasuser) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + runAsUser: 568 +``` + +--- + +### `securityContext.runAsGroup` + +Define the runAsGroup for the container + +| | | +| ---------- | ------------------------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.securityContext.runAsGroup` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerrunasgroup) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + runAsGroup: 568 +``` + +--- + +### `securityContext.readOnlyRootFilesystem` + +Define the readOnlyRootFilesystem for the container + +| | | +| ---------- | ------------------------------------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.securityContext.readOnlyRootFilesystem` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerreadonlyrootfilesystem) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + readOnlyRootFilesystem: true +``` + +--- + +### `securityContext.allowPrivilegeEscalation` + +Define the allowPrivilegeEscalation for the container + +| | | +| ---------- | -------------------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.securityContext.allowPrivilegeEscalation` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerallowprivilegeescalation) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + allowPrivilegeEscalation: false +``` + +--- + +### `securityContext.privileged` + +Define the privileged for the container + +| | | +| ---------- | ------------------------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.securityContext.privileged` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerprivileged) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + privileged: false +``` + +--- + +### `securityContext.runAsNonRoot` + +Define the runAsNonRoot for the container + +| | | +| ---------- | -------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.securityContext.runAsNonRoot` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerrunasnonroot) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + runAsNonRoot: true +``` + +--- + +### `securityContext.capabilities` + +Define the capabilities for the container + +:::note + +If at least one capability is defined in either [`add`](/truecharts-common/container/securitycontext/#securitycontextcapabilitiesadd) or [`drop`](/truecharts-common/container/securitycontext/#securitycontextcapabilitiesdrop) +on container level, it will **NOT** get merged with the value(s) from the `.Values.securityContext.container.capabilities.[add/drop]`. +But it will override them. + +::: + +:::tip + +When setting capabilities for containers, remember to **NOT** include `CAP_` prefix. +For example, `CAP_NET_ADMIN` should be `NET_ADMIN`. This is not specific to this chart, +but a general Kubernetes thing. + +::: + +| | | +| ---------- | -------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.securityContext.capabilities` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainercapabilities) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + capabilities: {} +``` + +--- + +#### `securityContext.capabilities.add` + +Define the capabilities.add for the container + +| | | +| ---------- | ----------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.securityContext.capabilities.add` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainercapabilitiesadd) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + capabilities: + add: [] +``` + +--- + +#### `securityContext.capabilities.drop` + +Define the capabilities.drop for the container + +| | | +| ---------- | ------------------------------------------------------------------------------------ | +| Key | `workload.$name.podSpec.containers.$name.securityContext.capabilities.drop` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainercapabilitiesdrop) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + capabilities: + drop: [] +``` + +--- + +### `securityContext.seccompProfile` + +Define the seccompProfile for the container + +| | | +| ---------- | ---------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.securityContext.seccompProfile` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerseccompprofile) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + seccompProfile: {} +``` + +--- + +#### `securityContext.seccompProfile.type` + +Define the seccompProfile.type for the container + +| | | +| ---------- | -------------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.securityContext.seccompProfile.type` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerseccompprofiletype) | + +Valid Values: + +- `RuntimeDefault` +- `Localhost` +- `Unconfined` + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + seccompProfile: + type: Localhost +``` + +--- + +#### `securityContext.seccompProfile.profile` + +Define the seccompProfile.profile for the container + +:::note + +Only **required** when `securityContext.seccompProfile.type` is `Localhost`. + +::: + +| | | +| ---------- | ----------------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.securityContext.seccompProfile.profile` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerseccompprofileprofile) | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + securityContext: + seccompProfile: + type: Localhost + profile: path/to/profile.json +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + securityContext: + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + privileged: false + seccompProfile: + type: Localhost + profile: path/to/profile.json + capabilities: + add: [] + drop: + - ALL +``` diff --git a/charts/library/common/docs/container/termination.md b/charts/library/common/docs/container/termination.md new file mode 100644 index 00000000000..e2c21751a05 --- /dev/null +++ b/charts/library/common/docs/container/termination.md @@ -0,0 +1,110 @@ +--- +title: Termination +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/container/termination#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload.$name.podSpec.containers.$name` + +--- + +## `termination` + +Define termination for the container + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.termination` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + termination: {} +``` + +--- + +### `termination.messagePath` + +Define termination message path for the container + +| | | +| ---------- | ----------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.termination.messagePath` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + termination: + messagePath: /dev/termination-log +``` + +--- + +### `termination.messagePolicy` + +Define termination message policy for the container + +| | | +| ---------- | ------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.containers.$name.termination.messagePolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + containers: + container-name: + termination: + messagePolicy: File +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + podSpec: + containers: + container-name: + enabled: true + primary: true + termination: + messagePath: /dev/termination-log + messagePolicy: File +``` diff --git a/charts/library/common/docs/containerOptions.md b/charts/library/common/docs/containerOptions.md new file mode 100644 index 00000000000..c2cc6770500 --- /dev/null +++ b/charts/library/common/docs/containerOptions.md @@ -0,0 +1,56 @@ +--- +title: Container Options +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/containeroptions#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.containerOptions` + +## Defaults + +```yaml +containerOptions: + NVIDIA_CAPS: + - all +``` + +--- + +## `NVIDIA_CAPS` + +Defines the NVIDIA_CAPS to be passed as an environment variable to the container. + +| | | +| ---------- | ------------------------------ | +| Key | `containerOptions.NVIDIA_CAPS` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `["all"]` | + +Example: + +```yaml +containerOptions: + NVIDIA_CAPS: + - compute + - utility +``` + +--- + +## Full Examples + +```yaml +containerOptions: + NVIDIA_CAPS: + - compute + - utility +``` diff --git a/charts/library/common/docs/credentials.md b/charts/library/common/docs/credentials.md new file mode 100644 index 00000000000..825303ec3b0 --- /dev/null +++ b/charts/library/common/docs/credentials.md @@ -0,0 +1,383 @@ +--- +title: credentials +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/credentials#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.credentials` + +## Naming scheme + +- `$FullName-$credentialsName` (release-name-chart-name-credentials-name) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `credentials` + +Create credentials objects + +| | | +| ---------- | ------------- | +| Key | `credentials` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +credentials: {} +``` + +--- + +### `$name` + +Define credentials + +| | | +| ---------- | ------------------- | +| Key | `credentials.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +credentials: + credentials-name: {} +``` + +--- + +#### `type` + +Define the type of the credentials + +| | | +| ---------- | ------------------------ | +| Key | `credentials.$name.type` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Example | `s3` | + +```yaml +credentials: + credentials-name: + type: s3 +``` + +--- + +#### `url` + +Define the url of the credentials + +:::tip + +In some cases, such as when using an IP instead of a hostname, it might be +necessary to manually specify the connection's [region](/truecharts-common/credentials#region). + +::: + +| | | +| ---------- | ------------------------ | +| Key | `credentials.$name.url` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Example | `https://mys3server.com` | + +```yaml +credentials: + credentials-name: + url: "https://mys3server.com" +``` + +--- + +#### `region` + +Override the region to use when connecting to the endpoint + +:::note + +Setting this manually is usually not necessary as the region should normally +be automatically detected from the [URL](/truecharts-common/credentials#url). + +::: + +| | | +| ---------- | -------------------------- | +| Key | `credentials.$name.region` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Example | `""` | + +```yaml +credentials: + credentials-name: + region: "us-east-1" +``` + +--- + +#### `customCASecretRef` + +Reference a secret containing a custom CA to be used when connecting to the +endpoint defined by `url` over HTTPS. + +:::note + +Defining both this and [customCA](/truecharts-common/credentials#customca) is invalid and +will result in an error. + +::: + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `credentials.$name.customCASecretRef` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Example | `{}` | + +```yaml +credentials: + credentials-name: + customCASecretRef: {} +``` + +--- + +##### `customCASecretRef.name` + +Define the secret name + +:::note + +This will be automatically expanded to `fullname-secret-name`. +You can opt out of this by setting [`expandObjectName`](/truecharts-common/credentials#customcasecretrefexpandobjectname) to `false` + +::: + +| | | +| ---------- | ------------------------------------------ | +| Key | `credentials.$name.customCASecretRef.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Example | `""` | + +```yaml +credentials: + credentials-name: + customCASecretRef: + name: secret-name +``` + +--- + +##### `customCASecretRef.key` + +Define the key in the secret data containing the CA + +| | | +| ---------- | ------------------------------------------ | +| Key | `credentials.$name.customCASecretRef.key` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Example | `""` | + +```yaml +credentials: + credentials-name: + customCASecretRef: + key: ca.crt +``` + +--- + +##### `customCASecretRef.expandObjectName` + +Whether to expand (adding the fullname as prefix) the secret name + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `credentials.$name.customCASecretRef.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Example | `true` | + +```yaml +credentials: + credentials-name: + customCASecretRef: + expandObjectName: false +``` + +--- + +#### `customCA` + +Define a custom CA certificate to be used when connecting to the endpoint +defined by `url` over HTTPS. + +:::note + +Defining both this and [customCASecretRef](/truecharts-common/credentials#customcasecretref) +is invalid and will result in an error. + +::: + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `credentials.$name.customCA` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Example | `-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----` | + +```yaml +credentials: + credentials-name: + customCA: |- + -----BEGIN CERTIFICATE----- + ... + -----END CERTIFICATE----- +``` + +--- + +#### `path` + +Define the optional path-override of the credentials + +| | | +| ---------- | ------------------------ | +| Key | `credentials.$name.path` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Example | `/somecustompath` | + +```yaml +credentials: + credentials-name: + path: "/somecustompath" +``` + +--- + +#### `bucket` + +Define the bucket of the credentials + +| | | +| ---------- | -------------------------- | +| Key | `credentials.$name.bucket` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Example | `mybucket` | + +```yaml +credentials: + credentials-name: + bucket: mybucket +``` + +--- + +#### `accessKey` + +Define the accessKey of the credentials + +| | | +| ---------- | ----------------------------- | +| Key | `credentials.$name.accessKey` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Example | `mysecretaccesskey` | + +```yaml +credentials: + credentials-name: + accessKey: myaccesskeyid +``` + +--- + +#### `secretKey` + +Define the secretKey of the credentials + +| | | +| ---------- | ----------------------------- | +| Key | `credentials.$name.secretKey` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Example | `mysecretkey` | + +```yaml +credentials: + credentials-name: + secretKey: mysecretkey +``` + +--- + +#### `encrKey` + +Define the encryption key of the credentials + +| | | +| ---------- | --------------------------- | +| Key | `credentials.$name.encrKey` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Example | `myencryptionkey` | + +```yaml +credentials: + credentials-name: + encrKey: myencryptionkey +``` + +--- + +## Full Examples + +```yaml +credentials: + mys3: + type: s3 + url: "https://mys3server.com" + bucket: "mybucket" + accessKey: "mysecretaccesskey" + secretKey: "mysecretkey" + encrKey: "myencryptionkey" +``` diff --git a/charts/library/common/docs/fallbackDefaults.md b/charts/library/common/docs/fallbackDefaults.md new file mode 100644 index 00000000000..4d8daf6b1e4 --- /dev/null +++ b/charts/library/common/docs/fallbackDefaults.md @@ -0,0 +1,829 @@ +--- +title: Fallback Defaults +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/fallbackdefaults#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.fallbackDefaults` + +--- + +## Defaults + +```yaml +fallbackDefaults: + probeType: http + serviceProtocol: tcp + serviceType: ClusterIP + storageClass: + persistenceType: emptyDir + pvcRetain: true + pvcSize: 100Gi + vctSize: 100Gi + accessModes: + - ReadWriteOnce + probeTimeouts: + liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 1 + readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 2 + startup: + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 2 + failureThreshold: 60 + successThreshold: 1 + topologyKey: kubernetes.io/hostname +``` + +## `probeType` + +Define default probe type when not defined in the container level + +| | | +| ---------- | ---------------------------- | +| Key | `fallbackDefaults.probeType` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `http` | + +Valid Values: + +- See [Probe Types](/truecharts-common/container/probes#probesprobetype) + +Example + +```yaml +fallbackDefaults: + probeType: http +``` + +--- + +## `serviceProtocol` + +Define default service protocol when not defined in the service + +| | | +| ---------- | ---------------------------------- | +| Key | `fallbackDefaults.serviceProtocol` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `tcp` | + +Valid Values: + +- See [Service Protocols](/truecharts-common/service/ports#protocol) + +Example + +```yaml +fallbackDefaults: + serviceProtocol: tcp +``` + +--- + +## `serviceType` + +Define default service type when not defined in the service + +| | | +| ---------- | ------------------------------ | +| Key | `fallbackDefaults.serviceType` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `ClusterIP` | + +Valid Values: + +- See [Service Types](/truecharts-common/service#type) + +Example + +```yaml +fallbackDefaults: + serviceType: ClusterIP +``` + +--- + +## `storageClass` + +Define default storage class when not defined in the persistence + +| | | +| ---------- | ------------------------------- | +| Key | `fallbackDefaults.storageClass` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +fallbackDefaults: + storageClass: some-storage-class +``` + +--- + +## `persistenceType` + +Define default persistence type when not defined in the persistence + +| | | +| ---------- | ---------------------------------- | +| Key | `fallbackDefaults.persistenceType` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `emptyDir` | + +Valid Values: + +- See [Persistence Types](/truecharts-common/persistence#type) + +Example + +```yaml +fallbackDefaults: + persistenceType: pvc +``` + +--- + +## `pvcRetain` + +Define default pvc retain when not defined in the persistence + +| | | +| ---------- | ---------------------------- | +| Key | `fallbackDefaults.pvcRetain` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +fallbackDefaults: + pvcRetain: true +``` + +--- + +## `pvcSize` + +Define default pvc size when not defined in the persistence + +| | | +| ---------- | -------------------------- | +| Key | `fallbackDefaults.pvcSize` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `100Gi` | + +Example + +```yaml +fallbackDefaults: + pvcSize: 100Gi +``` + +--- + +## `vctSize` + +Define default vct size when not defined in the persistence + +| | | +| ---------- | -------------------------- | +| Key | `fallbackDefaults.vctSize` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `100Gi` | + +Example + +```yaml +fallbackDefaults: + vctSize: 100Gi +``` + +--- + +## `accessModes` + +Define default access modes when not defined in the persistence + +| | | +| ---------- | ------------------------------ | +| Key | `fallbackDefaults.accessModes` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `ReadWriteOnce` | + +Example + +```yaml +fallbackDefaults: + accessModes: + - ReadWriteOnce +``` + +--- + +## `probeTimeouts` + +Define default probe timeouts if not defined in the container + +| | | +| ---------- | -------------------------------- | +| Key | `fallbackDefaults.probeTimeouts` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | + +Default + +```yaml +fallbackDefaults: + probeTimeouts: + liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 1 + readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 2 + startup: + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 2 + failureThreshold: 60 + successThreshold: 1 +``` + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 1 + readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 2 + startup: + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 2 + failureThreshold: 60 + successThreshold: 1 +``` + +--- + +### `probeTimeouts.liveness` + +Define default liveness probe timeouts if not defined in the container + +| | | +| ---------- | ----------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.liveness` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | + +Default + +```yaml +fallbackDefaults: + probeTimeouts: + liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 1 +``` + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 1 +``` + +--- + +#### `probeTimeouts.liveness.initialDelaySeconds` + +Define default liveness probe initialDelaySeconds if not defined in the container + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.liveness.initialDelaySeconds` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `10` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + liveness: + initialDelaySeconds: 10 +``` + +--- + +#### `probeTimeouts.liveness.periodSeconds` + +Define default liveness probe periodSeconds if not defined in the container + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.liveness.periodSeconds` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `10` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + liveness: + periodSeconds: 10 +``` + +--- + +#### `probeTimeouts.liveness.timeoutSeconds` + +Define default liveness probe timeoutSeconds if not defined in the container + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.liveness.timeoutSeconds` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `5` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + liveness: + timeoutSeconds: 5 +``` + +--- + +#### `probeTimeouts.liveness.failureThreshold` + +Define default liveness probe failureThreshold if not defined in the container + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.liveness.failureThreshold` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `5` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + liveness: + failureThreshold: 5 +``` + +--- + +#### `probeTimeouts.liveness.successThreshold` + +Define default liveness probe successThreshold if not defined in the container + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.liveness.successThreshold` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `1` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + liveness: + successThreshold: 1 +``` + +--- + +### `probeTimeouts.readiness` + +Define default readiness probe timeouts if not defined in the container + +| | | +| ---------- | ------------------------------------------ | +| Key | `fallbackDefaults.probeTimeouts.readiness` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | + +Default + +```yaml +fallbackDefaults: + probeTimeouts: + readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 2 +``` + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 2 +``` + +--- + +#### `probeTimeouts.readiness.initialDelaySeconds` + +Define default readiness probe initialDelaySeconds if not defined in the container + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.readiness.initialDelaySeconds` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `10` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + readiness: + initialDelaySeconds: 10 +``` + +--- + +#### `probeTimeouts.readiness.periodSeconds` + +Define default readiness probe periodSeconds if not defined in the container + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.readiness.periodSeconds` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `10` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + readiness: + periodSeconds: 10 +``` + +--- + +#### `probeTimeouts.readiness.timeoutSeconds` + +Define default readiness probe timeoutSeconds if not defined in the container + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.readiness.timeoutSeconds` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `5` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + readiness: + timeoutSeconds: 5 +``` + +--- + +#### `probeTimeouts.readiness.failureThreshold` + +Define default readiness probe failureThreshold if not defined in the container + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.readiness.failureThreshold` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `5` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + readiness: + failureThreshold: 5 +``` + +--- + +#### `probeTimeouts.readiness.successThreshold` + +Define default readiness probe successThreshold if not defined in the container + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.readiness.successThreshold` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `2` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + readiness: + successThreshold: 2 +``` + +--- + +### `probeTimeouts.startup` + +Define default startup probe timeouts if not defined in the container + +| | | +| ---------- | ---------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.startup` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | + +Default + +```yaml +fallbackDefaults: + probeTimeouts: + startup: + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 2 + failureThreshold: 60 + successThreshold: 1 +``` + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + startup: + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 2 + failureThreshold: 60 + successThreshold: 1 +``` + +--- + +#### `probeTimeouts.startup.initialDelaySeconds` + +Define default startup probe initialDelaySeconds if not defined in the container + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `fallbackDefaults.probeTimeouts.startup.initialDelaySeconds` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `10` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + startup: + initialDelaySeconds: 10 +``` + +--- + +#### `probeTimeouts.startup.periodSeconds` + +Define default startup probe periodSeconds if not defined in the container + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `fallbackDefaults.probeTimeouts.startup.periodSeconds` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `5` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + startup: + periodSeconds: 5 +``` + +--- + +#### `probeTimeouts.startup.timeoutSeconds` + +Define default startup probe timeoutSeconds if not defined in the container + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.startup.timeoutSeconds` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `2` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + startup: + timeoutSeconds: 2 +``` + +--- + +#### `probeTimeouts.startup.failureThreshold` + +Define default startup probe failureThreshold if not defined in the container + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.startup.failureThreshold` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `60` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + startup: + failureThreshold: 60 +``` + +--- + +#### `probeTimeouts.startup.successThreshold` + +Define default startup probe successThreshold if not defined in the container + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `fallbackDefaults.probeTimeouts.startup.successThreshold` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `1` | + +Example + +```yaml +fallbackDefaults: + probeTimeouts: + startup: + successThreshold: 1 +``` + +--- + +## `topologyKey` + +Define default topologyKey for topologySpreadConstraints in podOptions + + +| | | +| ---------- | ------------------------------ | +| Key | `fallbackDefaults.topologyKey` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `kubernetes.io/hostname` | + + +--- + +## Full Examples + +```yaml +fallbackDefaults: + probeType: http + serviceProtocol: tcp + serviceType: ClusterIP + persistenceType: pvc + probeTimeouts: + liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 1 + readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 2 + startup: + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 2 + failureThreshold: 60 + successThreshold: 1 + topologyKey: truecharts.org/example +``` diff --git a/charts/library/common/docs/global.md b/charts/library/common/docs/global.md new file mode 100644 index 00000000000..48879e36c7f --- /dev/null +++ b/charts/library/common/docs/global.md @@ -0,0 +1,260 @@ +--- +title: Global +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/global#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.global` + +--- + +## Defaults + +```yaml +global: + labels: {} + annotations: {} + namespace: "" + minNodePort: 9000 + stopAll: false + metallb: + addServiceAnnotations: true + traefik: + addServiceAnnotations: true +``` + +--- + +## `labels` + +Additional Labels that apply to all objects + +| | | +| ---------- | ----------------- | +| Key | `global.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +global: + labels: + key: value +``` + +--- + +## `annotations` + +Additional Annotations that apply to all objects + +| | | +| ---------- | -------------------- | +| Key | `global.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +global: + annotations: + key: value +``` + +--- + +## `namespace` + +Namespace to apply to all objects, also applies to chart deps + +| | | +| ---------- | ------------------ | +| Key | `global.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +global: + namespace: "" +``` + +--- + +## `minNodePort` + +Minimum Node Port Allowed + +| | | +| ---------- | -------------------- | +| Key | `global.minNodePort` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `9000` | + +Example + +```yaml +global: + minNodePort: 9000 +``` + +--- + +## `stopAll` + +Applies different techniques to stop all objects in the chart and its dependencies + +| | | +| ---------- | ---------------- | +| Key | `global.stopAll` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +global: + stopAll: false +``` + +## `metallb` + +Settings for metallb integration + +| | | +| ---------- | ---------------- | +| Key | `global.metallb` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | + +Default + +```yaml +global: + metallb: + addServiceAnnotations: true +``` + +Example + +```yaml +global: + metallb: + addServiceAnnotations: false +``` + +--- + +## `traefik` + +Settings for traefik integration + +| | | +| ---------- | ---------------- | +| Key | `global.traefik` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | + +Default + +```yaml +global: + traefik: + addServiceAnnotations: true +``` + +Example + +```yaml +global: + traefik: + addServiceAnnotations: false +``` + +--- + +### `traefik.addServiceAnnotations` + +Add annotations to services for traefik + +| | | +| ---------- | -------------------------------------- | +| Key | `global.traefik.addServiceAnnotations` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +global: + traefik: + addServiceAnnotations: true +``` + +--- + +### `traefik.commonMiddlewares` + +Define middlewares that will be applied to all ingresses + +| | | +| ---------- | ----------------------------------- | +| Key | `global.traefik.commonMiddlewares` | +| Type | `list` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[{name: tc-basic-secure-headers}]` | + +Example + +```yaml +global: + traefik: + commonMiddlewares: + - name: tc-basic-secure-headers +``` + +--- + +## Full Examples + +```yaml +global: + labels: + key: value + annotations: + key: value + namespace: "" + minNodePort: 9000 + stopAll: false + metallb: + addServiceAnnotations: true + traefik: + addServiceAnnotations: true + commonMiddlewares: + - name: tc-basic-secure-headers +``` diff --git a/charts/library/common/docs/imagePullSecret.md b/charts/library/common/docs/imagePullSecret.md new file mode 100644 index 00000000000..0c0ec2a670e --- /dev/null +++ b/charts/library/common/docs/imagePullSecret.md @@ -0,0 +1,392 @@ +--- +title: Image Pull Secret +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/imagepullsecret#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.imagePullSecret` + +## Naming scheme + +- `$FullName-$ImagePullSecretName` (release-name-chart-name-imagePullSecretName) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## Target Selector + +- `targetSelectAll` (bool): Whether to assign the secret to all pods or not. `targetSelector` is ignored in this case +- `targetSelector` (list): Define the pod(s) to assign the secret +- `targetSelector` (empty): Assign the secret to the primary pod + +--- + +## `imagePullSecret` + +Define image pull secrets + +| | | +| ---------- | ----------------- | +| Key | `imagePullSecret` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +imagePullSecret: {} +``` + +--- + +### `$name` + +Define image pull secret + +| | | +| ---------- | ----------------------- | +| Key | `imagePullSecret.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the image pull secret + +| | | +| ---------- | ------------------------------- | +| Key | `imagePullSecret.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + enabled: true +``` + +--- + +#### `existingSecret` + +Define the existing secret name + +:::note + +If this is defined, only the following keys are used: + +- `enabled` +- `targetSelectAll` +- `targetSelector` + +::: + +| | | +| ---------- | -------------------------------------- | +| Key | `imagePullSecret.$name.existingSecret` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + enabled: true + existingSecret: some-existing-secret +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | --------------------------------- | +| Key | `imagePullSecret.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `""` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Additional labels for image pull secret + +| | | +| ---------- | ------------------------------ | +| Key | `imagePullSecret.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Additional annotations for image pull secret + +| | | +| ---------- | ----------------------------------- | +| Key | `imagePullSecret.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + annotations: + key: value +``` + +--- + +#### `targetSelectAll` + +Whether to assign the secret to all pods or not + +| | | +| ---------- | --------------------------------------- | +| Key | `imagePullSecret.$name.targetSelectAll` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + targetSelectAll: true +``` + +--- + +#### `targetSelector` + +Define the pod(s) to assign the secret + +| | | +| ---------- | -------------------------------------- | +| Key | `imagePullSecret.$name.targetSelector` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + targetSelector: + - workload-name1 + - workload-name2 +``` + +--- + +#### `data` + +Define the data of the image pull secret + +| | | +| ---------- | ---------------------------- | +| Key | `imagePullSecret.$name.data` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + data: {} +``` + +--- + +##### `data.registry` + +Define the registry of the image pull secret + +| | | +| ---------- | ------------------------------------- | +| Key | `imagePullSecret.$name.data.registry` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + data: + registry: quay.io +``` + +--- + +##### `data.username` + +Define the username of the image pull secret + +| | | +| ---------- | ------------------------------------- | +| Key | `imagePullSecret.$name.data.username` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + data: + username: my_user +``` + +--- + +##### `data.password` + +Define the password of the image pull secret + +| | | +| ---------- | ------------------------------------- | +| Key | `imagePullSecret.$name.data.password` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + data: + password: my_pass +``` + +--- + +##### `data.email` + +Define the email of the image pull secret + +| | | +| ---------- | ---------------------------------- | +| Key | `imagePullSecret.$name.data.email` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +imagePullSecret: + pull-secret-name: + data: + email: my_email@example.com +``` + +--- + +## Full Examples + +```yaml +imagePullSecret: + + pull-secret-name: + enabled: true + namespace: some-namespace + labels: + key: value + keytpl: "{{ .Values.some.value }}" + annotations: + key: value + keytpl: "{{ .Values.some.value }}" + data: + registry: quay.io + username: my_user + password: my_pass + email: my_mail@example.com + targetSelectAll: true + + other-pull-secret-name: + enabled: true + namespace: some-namespace + data: + registry: "{{ .Values.my_registry }}" + username: "{{ .Values.my_user }}" + password: "{{ .Values.my_pass }}" + email: "{{ .Values.my_mail }}" + targetSelector: + - workload-name1 + - workload-name2 +``` diff --git a/charts/library/common/docs/index.md b/charts/library/common/docs/index.md index 3159ebae812..fe2f576e545 100644 --- a/charts/library/common/docs/index.md +++ b/charts/library/common/docs/index.md @@ -1 +1,587 @@ -Somepage +--- +title: Common Chart Documentation +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values` + +## Notes + +This applies across all the documentation: + +- Helm `tpl`: + - ❌ means that the value is not templated + - ✅ means that the value is templated, + for example instead of a hardcoded value, you can set it to `{{ .Values.some.value }}`. + and it will be replaced by the value contained in `.Values.some.value` at the installation/upgrade time. + +--- + +## `global` + +Global values that apply to all charts + +:::note + +See more info about global values [here](/truecharts-common/global) + +::: + +| | | +| ---------- | ----------------------------------- | +| Key | `global` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/global#defaults) | + +Example + +```yaml +global: {} +``` + +--- + +## `fallbackDefaults` + +The fallback defaults are used when a value is not defined in the chart. + +:::note + +- See more info about fallbackDefaults [here](/truecharts-common/fallbackdefaults) + +::: + +| | | +| ---------- | --------------------------------------------- | +| Key | `fallbackDefaults` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/fallbackdefaults#defaults) | + +--- + +## `extraTpl` + +Define kubernetes resources, 1 per list item, tpl will be resolved + +| | | +| ---------- | ------------------ | +| Key | `extraTpl` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `[]` | + +Example + +```yaml +extraTpl: + - | + apiVersion: v1 + kind: Deployment + ... +``` + +--- + +## `operator` + +Contains specific settings for helm charts containing or using system + +| | | +| ---------- | ---------- | +| Key | `operator` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | + +Default + +```yaml +operator: + register: false + verify: + enabled: true + additionalsystem: [] +``` + +Example + +```yaml +operator: + register: true + verify: + enabled: true + additionalsystem: + - operator1 + - operator2 +``` + +--- + +### `operator.register` + +Adds a configmap in the operator's namespace to register the chart as an operator + +| | | +| ---------- | ------------------- | +| Key | `operator.register` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +operator: + register: true +``` + +--- + +### `operator.verify` + +Contains specific settings for verifying system + +| | | +| ---------- | ----------------- | +| Key | `operator.verify` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | + +Default + +```yaml +operator: + verify: + enabled: true + additionalsystem: [] +``` + +Example + +```yaml +operator: + verify: + enabled: true + additionalsystem: + - operator1 + - operator2 +``` + +--- + +#### `operator.verify.enabled` + +Enables or disables the verification of system + +| | | +| ---------- | ------------------------- | +| Key | `operator.verify.enabled` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +operator: + verify: + enabled: true +``` + +--- + +#### `operator.verify.additionalsystem` + +Additional system to verify + +| | | +| ---------- | ---------------------------------- | +| Key | `operator.verify.additionalsystem` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +operator: + verify: + additionalsystem: + - operator1 + - operator2 +``` + +--- + +## `podOptions` + +Options that apply to all pods, unless overridden at the pod level + +:::note + +See more info about podOptions [here](/truecharts-common/podoptions) + +::: + +| | | +| ---------- | --------------------------------------- | +| Key | `podOptions` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/podoptions#defaults) | + +Example + +```yaml +podOptions: + enableServiceLinks: false + hostNetwork: false + hostPID: false + hostUsers: false + hostIPC: false + shareProcessNamespace: false + restartPolicy: Always + dnsPolicy: ClusterFirst + dnsConfig: + options: + - name: ndots + value: "1" + hostAliases: [] + tolerations: [] + runtimeClassName: "" + automountServiceAccountToken: false + terminationGracePeriodSeconds: 120 +``` + +--- + +## `containerOptions` + +Options that apply to all containers, unless overridden at the container level + +:::note + +See more info about containerOptions [here](/truecharts-common/containeroptions) + +::: + +| | | +| ---------- | --------------------------------------------- | +| Key | `containerOptions` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/containeroptions#defaults) | + +Example + +```yaml +containerOptions: + NVIDIA_CAPS: + - all +``` + +--- + +## `TZ` + +Timezone that is used everywhere applicable, unless overridden at the container level + +| | | +| ---------- | ----- | +| Key | `TZ` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `UTC` | + +Example + +```yaml +TZ: UTC +``` + +--- + +## `namespace` + +Namespace to apply to all objects, unless overridden at the object level + +:::note + +Does not apply to chart deps, use global.namespace for that + +::: + +--- + +## `resources` + +Define resources for all containers, unless overridden at the container level + +:::note + +Resources apply to **EACH** container, not to the pod as a whole. + +::: + +| | | +| ---------- | -------------------------------------- | +| Key | `resources` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/resources#defaults) | + +Example + +```yaml +resources: + limits: + cpu: 4000m + memory: 8Gi + requests: + cpu: 10m + memory: 50Mi +``` + +--- + +## `securityContext` + +Define security context for all containers and pods, unless overridden at the container/pod level + +:::note + +See more info about securityContext [here](/truecharts-common/securitycontext) + +::: + +| | | +| ---------- | -------------------------------------------- | +| Key | `securityContext` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | See [here](/truecharts-common/securitycontext#defaults) | + +Example + +```yaml +securityContext: + container: + PUID: 568 + UMASK: "002" + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + privileged: false + seccompProfile: + type: RuntimeDefault + capabilities: + add: [] + drop: + - ALL + pod: + fsGroup: 568 + fsGroupChangePolicy: OnRootMismatch + supplementalGroups: [] + sysctls: [] +``` + +--- + +## Images + +:::tip + +Use [`imageSelector`](/truecharts-common/container#imageselector) to select the image to use for a container. + +::: + +Images are defined in the following format: + +```yaml +image: + repository: "" + tag: "" + pullPolicy: IfNotPresent +``` + +For additional images, you can define them in the following format: + +```yaml +nameImage: + repository: "" + tag: "" + pullPolicy: IfNotPresent +``` + +:::note + +There isn't anything special in the above format (`nameImage`), it's just a convention. +It's also a format that some external tools can use for automatic image updates. +For example, [Renovate](https://docs.renovatebot.com/modules/manager/helm-values/#additional-information) + +::: + +--- + +### `image` + +Defines the image details + +| | | +| ---------- | ------- | +| Key | `image` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | + +Default + +```yaml +image: + repository: "" + tag: "" + pullPolicy: IfNotPresent +``` + +Example + +```yaml +image: + repository: "my-repo" + tag: "latest" + pullPolicy: IfNotPresent +``` + +--- + +### `image.repository` + +Defines the image repository + +| | | +| ---------- | ------------------ | +| Key | `image.repository` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +image: + repository: "my-repo" +``` + +--- + +### `image.tag` + +Defines the image tag + +| | | +| ---------- | ----------- | +| Key | `image.tag` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +image: + tag: "latest" +``` + +--- + +### `image.pullPolicy` + +Defines the image pull policy + +| | | +| ---------- | ------------------ | +| Key | `image.pullPolicy` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `IfNotPresent` | + +Example + +```yaml +image: + pullPolicy: IfNotPresent +``` + +--- + +## Additional Documentation + +- [certificate](/truecharts-common/certificate) +- [configmap](/truecharts-common/configmap) +- [container](/truecharts-common/container) +- [containerOptions](/truecharts-common/containeroptions) +- [imagePullSecret](/truecharts-common/imagepullsecret) +- [ingress](/truecharts-common/ingress) +- [middlewares](/truecharts-common/middlewares) +- [notes](/truecharts-common/notes) +- [persistence](/truecharts-common/persistence) +- [podDisruptionBudget](/truecharts-common/poddisruptionbudget) +- [priorityClass](/truecharts-common/priorityclass) +- [rbac](/truecharts-common/rbac) +- [resources](/truecharts-common/resources) +- [secret](/truecharts-common/secret) +- [securityContext](/truecharts-common/securitycontext) +- [service](/truecharts-common/service) +- [serviceAccount](/truecharts-common/serviceaccount) +- [storageClass](/truecharts-common/storageclass) +- [volumeSnapshot](/truecharts-common/volumesnapshot) +- [volumeSnapshotClass](/truecharts-common/volumesnapshotclass) +- [webhook](/truecharts-common/webhook) +- [webhook](/truecharts-common/webhook) +- [workload](/truecharts-common/workload) + +--- + +## Full Examples + +```yaml +operator: + register: false + verify: + enabled: true + additionalsystem: + - operator1 + - operator2 +extraTpl: + - | + apiVersion: v1 + kind: Deployment + ... +``` diff --git a/charts/library/common/docs/ingress/certManager.md b/charts/library/common/docs/ingress/certManager.md new file mode 100644 index 00000000000..63350c64def --- /dev/null +++ b/charts/library/common/docs/ingress/certManager.md @@ -0,0 +1,81 @@ +--- +title: Cert Manager Integration +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/ingress/certmanager#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.ingress.$name.integration.certManager` + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `enabled` + +Enables or Disables the cert-manager integration + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingress.$name.integrations.certManager.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + certManager: + enabled: true +``` + +--- + +## `certificateIssuer` + +Define the certificate issuer for this cert-manager integration + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingress.$name.integrations.certManager.certificateIssuer` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + certManager: + certificateIssuer: some-issuer +``` + +--- + +## Full Examples + +```yaml +ingress: + ingress-name: + integrations: + certManager: + enabled: true + certificateIssuer: some-issuer +``` diff --git a/charts/library/common/docs/ingress/homepage.md b/charts/library/common/docs/ingress/homepage.md new file mode 100644 index 00000000000..4ad944d1be4 --- /dev/null +++ b/charts/library/common/docs/ingress/homepage.md @@ -0,0 +1,540 @@ +--- +title: Homepage Integration +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/ingress/homepage#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.ingress.$name.integration.homepage` + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `enabled` + +Enables or Disables the homepage integration + +| | | +| ---------- | --------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + enabled: true +``` + +--- + +## `name` + +Define the name for the application + +:::note + +Sets the `gethomepage.dev/name` annotation + +::: + +| | | +| ---------- | ------------------------------------------ | +| Key | `ingress.$name.integrations.homepage.name` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | The Release Name | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + name: some-name +``` + +--- + +## `description` + +Define the description for the application + +:::note + +Sets the `gethomepage.dev/description` annotation + +::: + +| | | +| ---------- | ------------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.description` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | The Description of the Chart | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + description: some-description +``` + +--- + +## `group` + +Define the group for the application + +:::note + +Sets the `gethomepage.dev/group` annotation + +::: + +| | | +| ---------- | ------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.group` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + group: some-group +``` + +--- + +## `icon` + +Define the icon for the application + +:::note + +Sets the `gethomepage.dev/icon` annotation + +::: + +| | | +| ---------- | ------------------------------------------ | +| Key | `ingress.$name.integrations.homepage.icon` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | The Chart Icon | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + icon: some-icon +``` + +--- + +## `href` + +Define the href for the application + +:::note + +Sets the `gethomepage.dev/href` annotation + +::: + +| | | +| ---------- | ------------------------------------------ | +| Key | `ingress.$name.integrations.homepage.href` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | The first ingress host | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + href: some-href +``` + +--- + +## `weight` + +Define the weight for the application + +:::note + +Sets the `gethomepage.dev/weight` annotation + +::: + +| | | +| ---------- | -------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.weight` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + weight: 0 +``` + +--- + +## `podSelector` + +Define the pods to select + +:::note + +Sets the `gethomepage.dev/pod-selector` annotation + +::: + +| | | +| ---------- | ------------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.podSelector` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + podSelector: + - main + - nginx +``` + +--- + +## `widget` + +Define configuration for the widget + +| | | +| ---------- | -------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.widget` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + widget: {} +``` + +--- + +### `widget.enabled` + +Enables or Disables the widget + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.widget.enabled` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + widget: + enabled: true +``` + +--- + +### `widget.type` + +Define the type of the widget + +:::note + +Sets the `gethomepage.dev/widget.type` annotation + +::: + +| | | +| ---------- | ------------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.widget.type` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | The Chart Name | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + widget: + type: some-type +``` + +--- + +### `widget.version` + +Define the version of the widget + +:::note + +Sets the `gethomepage.dev/widget.version` annotation + +::: + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.widget.version` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `1` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + widget: + version: 1 +``` + +--- + +### `widget.url` + +Define the url for the widget + +:::note + +Sets the `gethomepage.dev/widget.url` annotation + +::: + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingress.$name.integrations.homepage.widget.url` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | The first ingress host | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + widget: + url: some-url +``` + +--- + +### `widget.custom` + +Define custom annotations for the widget + +:::note + +Sets the `gethomepage.dev/widget.$key` annotation + +::: + +| | | +| ---------- | --------------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.widget.custom` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + widget: + custom: {} +``` + +--- + +### `widget.customkv` + +Define custom annotations for the widget as a list + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.widget.customkv` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + widget: + customkv: [] +``` + +--- + +## `widget.customkv[].key` + +Define the key for the custom annotation + +:::note + +Sets the `gethomepage.dev/widget.$key` annotation + +::: + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.widget.customkv[].key` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + widget: + customkv: + - key: some-key +``` + +--- + +## `widget.customkv[].value` + +Define the value for the custom annotation + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingress.$name.integrations.homepage.widget.customkv[].value` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: + widget: + customkv: + - value: some-value +``` + +--- + +## Full Examples + +```yaml +ingress: + ingress-name: + integrations: + homepage: + enabled: false + name: "" + description: "" + group: "" + icon: "" + href: "" + weight: 0 + podSelector: [] + widget: + enabled: true + type: "" + url: "" + custom: + key: value + customkv: + - key: some key + value: some value +``` diff --git a/charts/library/common/docs/ingress/index.md b/charts/library/common/docs/ingress/index.md new file mode 100644 index 00000000000..090df90cb57 --- /dev/null +++ b/charts/library/common/docs/ingress/index.md @@ -0,0 +1,784 @@ +--- +title: Ingress +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/ingress#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.ingress` + +## Naming scheme + +- Primary: `$FullName` (release-name-chart-name) +- Non-Primary: `$FullName-$IngressName` (release-name-chart-name-ingress-name) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## Target Selector + +- `targetSelector` (dict): Define the `service: port` to assign the ingress +- `targetSelector` (empty): Assign the ingress to the primary `service: port` + +--- + +## `ingress` + +Create Ingress objects + +| | | +| ---------- | --------- | +| Key | `ingress` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: {} +``` + +--- + +### `$name` + +Define Ingress + +| | | +| ---------- | --------------- | +| Key | `ingress.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the Ingress + +| | | +| ---------- | ----------------------- | +| Key | `ingress.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +ingress: + ingress-name: + enabled: true +``` + +--- + +#### `primary` + +Define the primary ingress + +| | | +| ---------- | ----------------------- | +| Key | `ingress.$name.primary` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +ingress: + ingress-name: + primary: true +``` + +--- + +#### `expandObjectName` + +Define if the object name should be expanded + +| | | +| ---------- | -------------------------------- | +| Key | `ingress.$name.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +ingress: + ingress-name: + expandObjectName: true +``` + +--- + +#### `required` + +Define if the ingress is required + +| | | +| ---------- | ------------------------ | +| Key | `ingress.$name.required` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +ingress: + ingress-name: + required: true +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | ------------------------- | +| Key | `ingress.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Additional labels for ingress + +| | | +| ---------- | ---------------------- | +| Key | `ingress.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Additional annotations for ingress + +| | | +| ---------- | --------------------------- | +| Key | `ingress.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + annotations: + key: value +``` + +--- + +#### `ingressClassName` + +Define the ingress class name for this object + +| | | +| ---------- | -------------------------------- | +| Key | `ingress.$name.ingressClassName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `nil` | + +Example + +```yaml +ingress: + ingress-name: + ingressClassName: some-ingress-class-name +``` + +--- + +#### `targetSelector` + +Define the `service: port` to assign the ingress + +| | | +| ---------- | ------------------------------ | +| Key | `ingress.$name.targetSelector` | +| Type | `dict` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + targetSelector: + service-name: port-name +``` + +--- + +#### `hosts` + +Define the hosts for this ingress + +| | | +| ---------- | --------------------- | +| Key | `ingress.$name.hosts` | +| Type | `list` of `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +ingress: + ingress-name: + hosts: [] +``` + +--- + +##### `hosts[].host` + +Define the host for this ingress + +| | | +| ---------- | ---------------------------- | +| Key | `ingress.$name.hosts[].host` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + hosts: + - host: chart-example.local +``` + +--- + +##### `hosts[].paths` + +Define the paths for this ingress + +| | | +| ---------- | ----------------------------- | +| Key | `ingress.$name.hosts[].paths` | +| Type | `list` of `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +ingress: + ingress-name: + hosts: + - host: chart-example.local + paths: [] +``` + +--- + +###### `hosts[].paths[].path` + +Define the path for this ingress + +| | | +| ---------- | ------------------------------------ | +| Key | `ingress.$name.hosts[].paths[].path` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + hosts: + - host: chart-example.local + paths: + - path: / +``` + +--- + +###### `hosts[].paths[].pathType` + +Define the path type for this ingress + +| | | +| ---------- | ---------------------------------------- | +| Key | `ingress.$name.hosts[].paths[].pathType` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `Prefix` | + +Example + +```yaml +ingress: + ingress-name: + hosts: + - host: chart-example.local + paths: + - path: / + pathType: Prefix +``` + +--- + +###### `hosts[].paths[].overrideService` + +Overrides the "selected" service for this path + +| | | +| ---------- | ----------------------------------------------- | +| Key | `ingress.$name.hosts[].paths[].overrideService` | +| Type | `dict` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + hosts: + - host: chart-example.local + paths: + - path: / + pathType: Prefix + overrideService: {} +``` + +--- + +###### `hosts[].paths[].overrideService.name` + +Define the service name for this path + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `ingress.$name.hosts[].paths[].overrideService.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + hosts: + - host: chart-example.local + paths: + - path: / + pathType: Prefix + overrideService: + name: main +``` + +--- + +###### `hosts[].paths[].overrideService.expandObjectName` + +Define if the override service object name should be expanded + +| | | +| ---------- | ---------------------------------------------------------------- | +| Key | `ingress.$name.hosts[].paths[].overrideService.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `true` | + +Example + +```yaml +ingress: + ingress-name: + hosts: + - host: chart-example.local + paths: + - path: / + pathType: Prefix + overrideService: + name: main + expandObjectName: false +``` + +--- + +###### `hosts[].paths[].overrideService.port` + +Define the service port for this path + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `ingress.$name.hosts[].paths[].overrideService.port` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +ingress: + ingress-name: + hosts: + - host: chart-example.local + paths: + - path: / + pathType: Prefix + overrideService: + port: 80 +``` + +--- + +#### `tls` + +Define the TLS for this ingress + +| | | +| ---------- | ------------------- | +| Key | `ingress.$name.tls` | +| Type | `list` of `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +ingress: + ingress-name: + tls: [] +``` + +--- + +##### `tls[].hosts` + +Define the hosts for this TLS + +| | | +| ---------- | -------------------------- | +| Key | `ingress.$name.tls[].host` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On each entry) | +| Default | `[]` | + +Example + +```yaml +ingress: + ingress-name: + tls: + - hosts: + - chart-example.local +``` + +--- + +##### `tls[].secretName` + +Define the secret name for this TLS + +| | | +| ---------- | -------------------------------- | +| Key | `ingress.$name.tls[].secretName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + tls: + - hosts: + - chart-example.local + secretName: chart-example-tls +``` + +--- + +##### `tls[].certificateIssuer` + +Define the certificate issuer for this TLS + +| | | +| ---------- | --------------------------------------- | +| Key | `ingress.$name.tls[].certificateIssuer` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + tls: + - hosts: + - chart-example.local + certificateIssuer: some-issuer +``` + +--- + +##### `tls[].clusterIssuer` + +Define the cluster issuer for this TLS + +| | | +| ---------- | ----------------------------------- | +| Key | `ingress.$name.tls[].clusterIssuer` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + tls: + - hosts: + - chart-example.local + clusterIssuer: some-issuer +``` + +--- + +#### `integrations` + +Define the integrations for this ingress + +| | | +| ---------- | ---------------------------- | +| Key | `ingress.$name.integrations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + integrations: {} +``` + +--- + +##### `integrations.certManager` + +Define the cert-manager integration for this ingress + +See more details in [Cert Manager Integration](/truecharts-common/ingress/certmanager) + +| | | +| ---------- | ---------------------------------------- | +| Key | `ingress.$name.integrations.certManager` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + certManager: {} +``` + +--- + +##### `integrations.traefik` + +Define the traefik integration for this ingress + +See more details in [Traefik Integration](/truecharts-common/ingress/traefik) + +| | | +| ---------- | ------------------------------------ | +| Key | `ingress.$name.integrations.traefik` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + traefik: {} +``` + +--- + +##### `integrations.homepage` + +Define the homepage integration for this ingress + +See more details in [Homepage Integration](/truecharts-common/ingress/homepage) + +| | | +| ---------- | ------------------------------------- | +| Key | `ingress.$name.integrations.homepage` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + homepage: {} +``` + +--- + +## Full Examples + +```yaml +ingress: + main: + enabled: false + primary: true + required: false + expandObjectName: false + labels: + key: value + annotations: + key: value + ingressClassName: "" + targetSelector: + main: main + hosts: + - host: chart-example.local + paths: + - path: / + pathType: Prefix + overrideService: + name: main + port: 80 + tls: + - hosts: + - chart-example.local + secretName: chart-example-tls + # OR + certificateIssuer: "" + integrations: + certManager: + enabled: false + certificateIssuer: "" + traefik: + enabled: true + entrypoints: + - websecure + forceTLS: true + middlewares: + - name: my-middleware + namespace: "" + homepage: + enabled: false + name: "" + description: "" + group: "" + icon: "" + widget: + type: "" + url: "" + custom: + key: value + customkv: + - key: some key + value: some value +``` diff --git a/charts/library/common/docs/ingress/traefik.md b/charts/library/common/docs/ingress/traefik.md new file mode 100644 index 00000000000..f12cbf5bb81 --- /dev/null +++ b/charts/library/common/docs/ingress/traefik.md @@ -0,0 +1,247 @@ +--- +title: Traefik Integration +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/ingress/traefik#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.ingress.$name.integration.traefik` + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `enabled` + +Enables or Disables the traefik integration + +| | | +| ---------- | -------------------------------------------- | +| Key | `ingress.$name.integrations.traefik.enabled` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + traefik: + enabled: true +``` + +--- + +## `entrypoints` + +Define the entrypoints for this traefik integration + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingress.$name.integrations.traefik.entrypoints` | +| Type | `list` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `["websecure"]` | + +--- + +## `forceTLS` + +Force TLS on this ingress + +:::note + +Adds the `traefik.ingress.kubernetes.io/router.tls` annotation. + +It does that both with this set OR when [entrypoints](/truecharts-common/ingress/traefik#entrypoints) include `websecure` + +::: + +| | | +| ---------- | --------------------------------------------- | +| Key | `ingress.$name.integrations.traefik.forceTLS` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + traefik: + forceTLS: true +``` + +--- + +## `middlewares` + +The middlewares for this traefik integration + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingress.$name.integrations.traefik.middlewares` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + traefik: + middlewares: + - name: my-middleware + namespace: "" +``` + +--- + +### `middlewares[].name` + +The name of the middleware + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `ingress.$name.integrations.traefik.middlewares[].name` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + traefik: + middlewares: + - name: my-middleware + namespace: "" +``` + +--- + +### `middlewares[].namespace` + +The namespace of the middleware + +:::tip + +If not defined, the current namespace will be used. + +::: + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `ingress.$name.integrations.traefik.middlewares[].namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + traefik: + middlewares: + - name: my-middleware + namespace: my-namespace +``` + +--- + +### `middlewares[].expandObjectName` + +Whether to expand the middleware name + +| | | +| ---------- | ------------------------------------------------------------------- | +| Key | `ingress.$name.integrations.traefik.middlewares[].expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + traefik: + middlewares: + - name: my-middleware + expandObjectName: false +``` + +--- + +## `chartMiddlewares` + +Same as [middlewares](#middlewares) but meant to be used by the chart developer +to define some custom middleware specific to this ingress. + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `ingress.$name.integrations.traefik.chartMiddlewares` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +ingress: + ingress-name: + integrations: + traefik: + chartMiddlewares: + - name: my-middleware +``` + +--- + +## Full Examples + +```yaml +ingress: + ingress-name: + integrations: + traefik: + enabled: true + entrypoints: + - websecure + forceTLS: true + middlewares: + - name: my-middleware + namespace: "" + expandObjectName: false + chartMiddlewares: + - name: my-middleware +``` diff --git a/charts/library/common/docs/middlewares/index.md b/charts/library/common/docs/middlewares/index.md new file mode 100644 index 00000000000..22b486c65fb --- /dev/null +++ b/charts/library/common/docs/middlewares/index.md @@ -0,0 +1,290 @@ +--- +title: Ingress Middlewares +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.ingressMiddlewares` + +## Naming scheme + +- `$FullName-$MiddlewareName` (release-name-chart-name-middleware-name) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `ingressMiddlewares` + +Create Middleware objects + +| | | +| ---------- | -------------------- | +| Key | `ingressMiddlewares` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingressMiddlewares: {} +``` + +--- + +### `$provider` + +Define Middleware + +:::note + +- Available providers are: + - [traefik](/truecharts-common/middlewares/traefik) + +::: + +| | | +| ---------- | ------------------------------ | +| Key | `ingressMiddlewares.$provider` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingressMiddlewares: + traefik: {} +``` + +--- + +#### `$name` + +Define Middleware + +| | | +| ---------- | ------------------------------------ | +| Key | `ingressMiddlewares.$provider.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: {} +``` + +--- + +##### `enabled` + +Enables or Disables the Middleware + +| | | +| ---------- | -------------------------------------------- | +| Key | `ingressMiddlewares.$provider.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true +``` + +--- + +##### `expandObjectName` + +Whether to expand (adding the fullname as prefix) the middleware name. + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `ingressMiddleware.$provider.$name.expandObjectName` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `true` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + expandObjectName: false +``` + +--- + +##### `namespace` + +Define the namespace for this object + +| | | +| ---------- | ---------------------------------------------- | +| Key | `ingressMiddlewares.$provider.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + namespace: some-namespace +``` + +--- + +##### `labels` + +Additional labels for middleware + +| | | +| ---------- | ------------------------------------------- | +| Key | `ingressMiddlewares.$provider.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + labels: + key: value +``` + +--- + +##### `annotations` + +Additional annotations for middleware + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingressMiddlewares.$provider.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + annotations: + key: value +``` + +--- + +##### `data` + +Define the data of the middleware + +| | | +| ---------- | ----------------------------------------- | +| Key | `ingressMiddlewares.$provider.$name.data` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Example | `{}` | + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + key: value +``` + +--- + +##### `type` + +Define the type for this object + +:::note + +See the [provider](/truecharts-common/middlewares#provider) documentation for more information. + +::: + +| | | +| ---------- | ----------------------------------------- | +| Key | `ingressMiddlewares.$provider.$name.type` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + type: buffering +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: buffering + expandObjectName: false + labels: + key: value + keytpl: "{{ .Values.some.value }}" + annotations: + key: value + keytpl: "{{ .Values.some.value }}" + data: + key: value + + other-middleware-name: + enabled: true + type: buffering + namespace: some-namespace + data: + key: value +``` diff --git a/charts/library/common/docs/middlewares/traefik/add-prefix.md b/charts/library/common/docs/middlewares/traefik/add-prefix.md new file mode 100644 index 00000000000..7bdc893bc74 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/add-prefix.md @@ -0,0 +1,60 @@ +--- +title: Add Prefix Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/add-prefix#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/addprefix) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: add-prefix`. + +::: + +--- + +## `prefix` + +Define the prefix + +| | | +| ---------- | ---------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.prefix` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + prefix: some-prefix +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: add-prefix + data: + prefix: some-prefix +``` diff --git a/charts/library/common/docs/middlewares/traefik/basic-auth.md b/charts/library/common/docs/middlewares/traefik/basic-auth.md new file mode 100644 index 00000000000..3f631f52f0e --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/basic-auth.md @@ -0,0 +1,157 @@ +--- +title: Basic Auth Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/basic-auth#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/basicauth) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: basic-auth`. + +::: + +--- + +## `users` + +Define the users + +:::note + +If this is set, the `secret` key must not be set. + +::: + +| | | +| ---------- | --------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.users` | +| Type | `list` of `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + users: + - username: some-username + password: some-password +``` + +--- + +### `users[].username` + +Define the username + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.users.username` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + users: + - username: some-username + password: some-password +``` + +--- + +### `users[].password` + +Define the password + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.users.password` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + users: + - username: some-username + password: some-password +``` + +--- + +## `secret` + +Define the secret + +:::note + +If this is set, the `users` key must not be set. + +::: + +| | | +| ---------- | ---------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.secret` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + secret: some-secret +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name1: + enabled: true + type: basic-auth + data: + users: + - username: some-username + password: some-password + middleware-name2: + enabled: true + type: basic-auth + data: + secret: some-secret +``` diff --git a/charts/library/common/docs/middlewares/traefik/buffering.md b/charts/library/common/docs/middlewares/traefik/buffering.md new file mode 100644 index 00000000000..ad52a69657e --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/buffering.md @@ -0,0 +1,152 @@ +--- +title: Buffering Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/buffering#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/buffering) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: buffering`. + +::: + +--- + +## `maxRequestBodyBytes` + +Define the maxRequestBodyBytes + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.maxRequestBodyBytes` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + maxRequestBodyBytes: 1024 +``` + +--- + +## `memRequestBodyBytes` + +Define the memRequestBodyBytes + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.memRequestBodyBytes` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + memRequestBodyBytes: 1024 +``` + +--- + +## `maxResponseBodyBytes` + +Define the maxResponseBodyBytes + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.maxResponseBodyBytes` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + maxResponseBodyBytes: 1024 +``` + +--- + +## `memResponseBodyBytes` + +Define the memResponseBodyBytes + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.memResponseBodyBytes` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + memResponseBodyBytes: 1024 +``` + +--- + +## `retryExpression` + +Define the retryExpression + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.retryExpression` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + retryExpression: "some-expression" +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: buffering + data: + maxRequestBodyBytes: 1024 + memRequestBodyBytes: 1024 + maxResponseBodyBytes: 1024 + memResponseBodyBytes: 1024 + retryExpression: "some-expression" +``` diff --git a/charts/library/common/docs/middlewares/traefik/chain.md b/charts/library/common/docs/middlewares/traefik/chain.md new file mode 100644 index 00000000000..573b4f7127d --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/chain.md @@ -0,0 +1,114 @@ +--- +title: Chain Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/chain#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/chain) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: chain`. + +::: + +--- + +## `middlewares` + +Define the middlewares + +| | | +| ---------- | --------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.middlewares` | +| Type | `list` of `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +middlewares: + traefik: + middleware-name: + data: + middlewares: [] +``` + +--- + +### `middlewares[].name` + +Define the middleware name + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.middlewares.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +middlewares: + traefik: + middleware-name: + data: + middlewares: + - name: some-name +``` + +--- + +### `middlewares[].expandObjectName` + +Define the middleware expandObjectName + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.middlewares.expandObjectName` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +middlewares: + traefik: + middleware-name: + data: + middlewares: + - name: some-name + expandObjectName: false +``` + +--- + +## Full Examples + +```yaml +middlewares: + traefik: + middleware-name: + enabled: true + type: chain + data: + middlewares: + - name: some-middleware + - name: some-other-middleware + expandObjectName: false +``` diff --git a/charts/library/common/docs/middlewares/traefik/compress.md b/charts/library/common/docs/middlewares/traefik/compress.md new file mode 100644 index 00000000000..5b5b61f3ce8 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/compress.md @@ -0,0 +1,34 @@ +--- +title: Compress Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/compress#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/compress) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: compress`. + +::: + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: compress +``` diff --git a/charts/library/common/docs/middlewares/traefik/content-type.md b/charts/library/common/docs/middlewares/traefik/content-type.md new file mode 100644 index 00000000000..0bfff04bea3 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/content-type.md @@ -0,0 +1,34 @@ +--- +title: Content Type Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/content-type#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/contenttype) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: content-type`. + +::: + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: content-type +``` diff --git a/charts/library/common/docs/middlewares/traefik/forward-auth.md b/charts/library/common/docs/middlewares/traefik/forward-auth.md new file mode 100644 index 00000000000..5d90c1b77d0 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/forward-auth.md @@ -0,0 +1,215 @@ +--- +title: Forward Auth Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/forward-auth#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/forwardauth) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: forward-auth`. + +::: + +--- + +## `address` + +Define the address + +| | | +| ---------- | ----------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.address` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + address: some-address +``` + +--- + +## `authResponseHeadersRegex` + +Define the authResponseHeadersRegex + +| | | +| ---------- | ---------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.authResponseHeadersRegex` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + authResponseHeadersRegex: some-regex +``` + +--- + +## `trustForwardHeader` + +Define the trustForwardHeader + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.trustForwardHeader` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + trustForwardHeader: true +``` + +--- + +## `authResponseHeaders` + +Define the authResponseHeaders + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.authResponseHeaders` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + authResponseHeaders: + - some-header +``` + +--- + +## `authRequestHeaders` + +Define the authRequestHeaders + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.authRequestHeaders` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + authRequestHeaders: + - some-header +``` + +--- + +## `tls` + +Define the tls + +| | | +| ---------- | ------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.tls` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + tls: {} +``` + +--- + +### `tls.insecureSkipVerify` + +Define the tls.insecureSkipVerify + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.tls.insecureSkipVerify` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + tls: + insecureSkipVerify: true +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: forward-auth + data: + address: some-address + authResponseHeadersRegex: some-regex + trustForwardHeader: true + authResponseHeaders: + - some-header + authRequestHeaders: + - some-header + tls: + insecureSkipVerify: true +``` diff --git a/charts/library/common/docs/middlewares/traefik/headers.md b/charts/library/common/docs/middlewares/traefik/headers.md new file mode 100644 index 00000000000..43d11c85be4 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/headers.md @@ -0,0 +1,777 @@ +--- +title: Headers Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/headers#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/headers) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: headers`. + +::: + +--- + +## `customRequestHeaders` + +Define the customRequestHeaders + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.customRequestHeaders` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + customRequestHeaders: + some-name: some-value + some-other-name: some-other-value +``` + +--- + +## `customResponseHeaders` + +Define the customResponseHeaders + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.customResponseHeaders` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + customResponseHeaders: + some-name: some-value + some-other-name: some-other-value +``` + +--- + +## `accessControlAllowCredentials` + +Define the accessControlAllowCredentials + +| | | +| ---------- | --------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.accessControlAllowCredentials` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + accessControlAllowCredentials: true +``` + +--- + +## `accessControlAllowHeaders` + +Define the accessControlAllowHeaders + +| | | +| ---------- | ----------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.accessControlAllowHeaders` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + accessControlAllowHeaders: + - some-header + - some-other-header +``` + +--- + +## `accessControlAllowMethods` + +Define the accessControlAllowMethods + +| | | +| ---------- | ----------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.accessControlAllowMethods` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + accessControlAllowMethods: + - GET + - POST + - PUT + - DELETE +``` + +--- + +## `accessControlAllowOriginList` + +Define the accessControlAllowOriginList + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.accessControlAllowOriginList` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + accessControlAllowOriginList: + - some-origin + - some-other-origin +``` + +--- + +## `accessControlAllowOriginListRegex` + +Define the accessControlAllowOriginListRegex + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.accessControlAllowOriginList` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + accessControlAllowOriginListRegex: + - some-origin-regex + - some-other-origin-regex +``` + +--- + +## `accessControlExposeHeaders` + +Define the accessControlExposeHeaders + +| | | +| ---------- | ------------------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.accessControlExposeHeaders` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + accessControlExposeHeaders: + - some-header + - some-other-header +``` + +--- + +## `accessControlMaxAge` + +Define the accessControlMaxAge + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.accessControlMaxAge` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + accessControlMaxAge: 1000 +``` + +--- + +## `addVaryHeader` + +Define the addVaryHeader + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.addVaryHeader` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + addVaryHeader: true +``` + +--- + +## `allowedHosts` + +Define the allowedHosts + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.allowedHosts` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + allowedHosts: + - some-host + - some-other-host +``` + +--- + +## `hostsProxyHeaders` + +Define the hostsProxyHeaders + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.hostsProxyHeaders` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + hostsProxyHeaders: + - some-header + - some-other-header +``` + +--- + +## `sslProxyHeaders` + +Define the sslProxyHeaders + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.sslProxyHeaders` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + sslProxyHeaders: + some-header: some-value + some-other-header: some-other-value +``` + +--- + +## `stsSeconds` + +Define the stsSeconds + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.stsSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + stsSeconds: 1000 +``` + +--- + +## `stsIncludeSubdomains` + +Define the stsIncludeSubdomains + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.stsIncludeSubdomains` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + stsIncludeSubdomains: true +``` + +--- + +## `stsPreload` + +Define the stsPreload + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.stsPreload` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + stsPreload: true +``` + +--- + +## `forceSTSHeader` + +Define the forceSTSHeader + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.forceSTSHeader` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + forceSTSHeader: true +``` + +--- + +## `frameDeny` + +Define the frameDeny + +| | | +| ---------- | ------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.frameDeny` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + frameDeny: true +``` + +--- + +## `customFrameOptionsValue` + +Define the customFrameOptionsValue + +| | | +| ---------- | --------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.customFrameOptionsValue` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + customFrameOptionsValue: some-value +``` + +--- + +## `contentTypeNosniff` + +Define the contentTypeNosniff + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.contentTypeNosniff` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + contentTypeNosniff: true +``` + +--- + +## `browserXssFilter` + +Define the browserXssFilter + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.browserXssFilter` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + browserXssFilter: true +``` + +--- + +## `customBrowserXSSValue` + +Define the customBrowserXSSValue + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.customBrowserXSSValue` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + customBrowserXSSValue: some-value +``` + +--- + +## `contentSecurityPolicy` + +Define the contentSecurityPolicy + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.contentSecurityPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + contentSecurityPolicy: some-value +``` + +--- + +## `contentSecurityPolicyReportOnly` + +Define the contentSecurityPolicyReportOnly + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.contentSecurityPolicy` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + contentSecurityPolicyReportOnly: true +``` + +--- + +## `publicKey` + +Define the publicKey + +| | | +| ---------- | ------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.publicKey` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + publicKey: some-public-key +``` + +--- + +## `referrerPolicy` + +Define the referrerPolicy + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.referrerPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + referrerPolicy: some-referrer-policy +``` + +--- + +## `permissionsPolicy` + +Define the permissionsPolicy + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.permissionsPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + permissionsPolicy: some-permissions-policy +``` + +--- + +## `isDevelopment` + +Define the isDevelopment + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.isDevelopment` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + isDevelopment: true +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: headers + data: + customRequestHeaders: + some-name: some-value + some-other-name: some-other-value + customResponseHeaders: + some-name: some-value + some-other-name: some-other-value + accessControlAllowCredentials: true + accessControlAllowHeaders: + - some-header + - some-other-header + accessControlAllowMethods: + - GET + - DELETE + accessControlAllowOriginList: + - some-origin + - some-other-origin + accessControlAllowOriginListRegex: + - some-origin-regex + - some-other-origin-regex + accessControlExposeHeaders: + - some-header + - some-other-header + accessControlMaxAge: 1000 + addVaryHeader: true + allowedHosts: + - some-host + - some-other-host + hostsProxyHeaders: + - some-header + - some-other-header + sslProxyHeaders: + some-header: some-value + some-other-header: some-other-value + stsSeconds: 1000 + stsIncludeSubdomains: true + stsPreload: true + forceSTSHeader: true + frameDeny: true + customFrameOptionsValue: some-value + contentTypeNosniff: true + browserXssFilter: true + customBrowserXSSValue: some-value + contentSecurityPolicy: some-value + contentSecurityPolicyReportOnly: true + publicKey: some-public-key + referrerPolicy: some-referrer-policy + permissionsPolicy: some-permissions-policy + isDevelopment: true +``` diff --git a/charts/library/common/docs/middlewares/traefik/index.md b/charts/library/common/docs/middlewares/traefik/index.md new file mode 100644 index 00000000000..2b0b92e8d60 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/index.md @@ -0,0 +1,83 @@ +--- +title: Traefik Middlewares +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik` + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `type` + +Define the type for this object + +Available types: + +- [add-prefix](/truecharts-common/middlewares/traefik/add-prefix) +- [basic-auth](/truecharts-common/middlewares/traefik/basic-auth) +- [buffering](/truecharts-common/middlewares/traefik/buffering) +- [chain](/truecharts-common/middlewares/traefik/chain) +- [compress](/truecharts-common/middlewares/traefik/compress) +- [content-type](/truecharts-common/middlewares/traefik/content-type) +- [forward-auth](/truecharts-common/middlewares/traefik/forward-auth) +- [headers](/truecharts-common/middlewares/traefik/headers) +- [ip-allow-list](/truecharts-common/middlewares/traefik/ip-allow-list) +- [plugin-bouncer](/truecharts-common/middlewares/traefik/plugin-bouncer) +- [plugin-geoblock](/truecharts-common/middlewares/traefik/plugin-geoblock) +- [plugin-mod-security](/truecharts-common/middlewares/traefik/plugin-mod-security) +- [plugin-real-ip](/truecharts-common/middlewares/traefik/plugin-real-ip) +- [plugin-rewrite-response-headers](/truecharts-common/middlewares/traefik/plugin-rewrite-response-headers) +- [plugin-theme-park](/truecharts-common/middlewares/traefik/plugin-theme-park) +- [rate-limit](/truecharts-common/middlewares/traefik/rate-limit) +- [redirect-regex](/truecharts-common/middlewares/traefik/redirect-regex) +- [redirect-scheme](/truecharts-common/middlewares/traefik/redirect-scheme) +- [replace-path-regex](/truecharts-common/middlewares/traefik/replace-path-regex) +- [replace-path](/truecharts-common/middlewares/traefik/replace-path) +- [retry](/truecharts-common/middlewares/traefik/retry) +- [strip-prefix-regex](/truecharts-common/middlewares/traefik/strip-prefix-regex) +- [strip-prefix](/truecharts-common/middlewares/traefik/strip-prefix) + +| | | +| ---------- | ----------------------------------------- | +| Key | `ingressMiddlewares.$provider.$name.type` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + type: buffering +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: buffering + data: + key: value +``` diff --git a/charts/library/common/docs/middlewares/traefik/ip-allow-list.md b/charts/library/common/docs/middlewares/traefik/ip-allow-list.md new file mode 100644 index 00000000000..7beac18e5ce --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/ip-allow-list.md @@ -0,0 +1,141 @@ +--- +title: IP Allow List Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/ip-allow-list#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/ipallowlist) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: ip-allow-list`. + +::: + +--- + +## `sourceRange` + +Define the sourceRange + +| | | +| ---------- | --------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.sourceRange` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + sourceRange: + - some-source-range +``` + +--- + +## `ipStrategy` + +Define the ipStrategy + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.ipStrategy` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + ipStrategy: {} +``` + +--- + +### `ipStrategy.depth` + +Define the ipStrategy.depth + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.ipStrategy.depth` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + ipStrategy: + depth: 1 +``` + +--- + +### `ipStrategy.excludedIPs` + +Define the ipStrategy.excludedIPs + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.ipStrategy.excludedIPs` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + ipStrategy: + excludedIPs: + - some-excluded-ip +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: ip-allow-list + data: + sourceRange: + - some-source-range + ipStrategy: + depth: 1 + excludedIPs: + - some-excluded-ip +``` diff --git a/charts/library/common/docs/middlewares/traefik/plugin-bouncer.md b/charts/library/common/docs/middlewares/traefik/plugin-bouncer.md new file mode 100644 index 00000000000..46b571cfaab --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/plugin-bouncer.md @@ -0,0 +1,972 @@ +--- +title: Plugin Bouncer Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/plugin-bouncer#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: plugin-bouncer`. + +::: + +--- + +## `pluginName` + +Define the pluginName + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.pluginName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `bouncer` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + pluginName: my-plugin-name +``` + +--- + +## `enabled` + +Define the enabled + +| | | +| ---------- | ----------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + enabled: true +``` + +--- + +## `logLevel` + +Define the logLevel + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.logLevel` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + logLevel: DEBUG +``` + +--- + +## `updateIntervalSeconds` + +Define the updateIntervalSeconds + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.updateIntervalSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + updateIntervalSeconds: 60 +``` + +--- + +## `updateMaxFailure` + +Define the updateMaxFailure + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.updateMaxFailure` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + updateMaxFailure: 0 +``` + +--- + +## `defaultDecisionSeconds` + +Define the defaultDecisionSeconds + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.defaultDecisionSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + defaultDecisionSeconds: 60 +``` + +--- + +## `httpTimeoutSeconds` + +Define the httpTimeoutSeconds + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.httpTimeoutSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + httpTimeoutSeconds: 10 +``` + +--- + +## `crowdsecMode` + +Define the crowdsecMode + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsec` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecMode: live +``` + +--- + +## `crowdsecAppsecEnabled` + +Define the crowdsecAppsecEnabled + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecAppsecEnabled` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecAppsecEnabled: false +``` + +--- + +## `crowdsecAppsecHost` + +Define the crowdsecAppsecHost + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecAppsecHost` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecAppsecHost: crowdsec:7422 +``` + +--- + +## `crowdsecAppsecFailureBlock` + +Define the crowdsecAppsecFailureBlock + +| | | +| ---------- | ------------------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecAppsecFailureBlock` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecAppsecFailureBlock: true +``` + +--- + +## `crowdsecAppsecUnreachableBlock` + +Define the crowdsecAppsecUnreachableBlock + +| | | +| ---------- | ---------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecAppsecUnreachableBlock` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecAppsecUnreachableBlock: true +``` + +--- + +## `crowdsecLapiKey` + +Define the crowdsecLapiKey + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecLapiKey` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecLapiKey: privateKey-foo +``` + +--- + +## `crowdsecLapiHost` + +Define the crowdsecLapiHost + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecLapiHost` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecLapiHost: crowdsec:8080 +``` + +--- + +## `crowdsecLapiScheme` + +Define the crowdsecLapiScheme + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsec` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecLapiScheme: http +``` + +--- + +## `crowdsecLapiTLSInsecureVerify` + +Define the crowdsecLapiTLSInsecureVerify + +| | | +| ---------- | --------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecLapiTLSInsecureVerify` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecLapiTLSInsecureVerify: false +``` + +--- + +## `crowdsecCapiMachineId` + +Define the crowdsecCapiMachineId + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecCapiMachineId` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecCapiMachineId: login +``` + +--- + +## `crowdsecCapiPassword` + +Define the crowdsecCapiPassword + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecCapiPassword` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecCapiPassword: password +``` + +--- + +## `crowdsecCapiScenarios` + +Define the crowdsecCapiScenarios + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecCapiScenarios` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecCapiScenarios: + - crowdsecurity/http-path-traversal-probing + - crowdsecurity/http-xss-probing + - crowdsecurity/http-generic-bf +``` + +--- + +## `forwardedHeadersTrustedIPs` + +Define the forwardedHeadersTrustedIPs + +| | | +| ---------- | ------------------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.forwardedHeadersTrustedIPs` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + forwardedHeadersTrustedIPs: + - 10.0.10.23/32 + - 10.0.20.0/24 +``` + +--- + +## `clientTrustedIPs` + +Define the clientTrustedIPs + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.clientTrustedIPs` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + clientTrustedIPs: + - 192.168.1.0/24 +``` + +--- + +## `forwardedHeadersCustomName` + +Define the forwardedHeadersCustomName + +| | | +| ---------- | ------------------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.forwardedHeadersCustomName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + forwardedHeadersCustomName: X-Custom-Header +``` + +--- + +## `remediationHeadersCustomName` + +Define the remediationHeadersCustomName + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.remediationHeadersCustomName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + remediationHeadersCustomName: cs-remediation +``` + +--- + +## `redisCacheEnabled` + +Define the redisCacheEnabled + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.redisCacheEnabled` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + redisCacheEnabled: false +``` + +--- + +## `redisCacheHost` + +Define the redisCacheHost + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.redisCacheHost` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + redisCacheHost: "redis:6379" +``` + +--- + +## `redisCachePassword` + +Define the redisCachePassword + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.redisCachePassword` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + redisCachePassword: password +``` + +--- + +## `redisCacheDatabase` + +Define the redisCacheDatabase + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.redisCacheDatabase` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + redisCacheDatabase: "5" +``` + +--- + +## `crowdsecLapiTLSCertificateAuthority` + +Define the crowdsecLapiTLSCertificateAuthority + +| | | +| ---------- | --------------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecLapiTLSCertificateAuthority` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecLapiTLSCertificateAuthority: |- + -----BEGIN CERTIFICATE----- + MIIEBzCCAu+gAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlVT + ... + Q0veeNzBQXg1f/JxfeA39IDIX1kiCf71tGlT + -----END CERTIFICATE----- +``` + +--- + +## `crowdsecLapiTLSCertificateBouncer` + +Define the crowdsecLapiTLSCertificateBouncer + +| | | +| ---------- | ------------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecLapiTLSCertificateBouncer` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecLapiTLSCertificateBouncer: |- + -----BEGIN CERTIFICATE----- + MIIEHjCCAwagAwIBAgIUOBTs1eqkaAUcPplztUr2xRapvNAwDQYJKoZIhvcNAQEL + ... + RaXAnYYUVRblS1jmePemh388hFxbmrpG2pITx8B5FMULqHoj11o2Rl0gSV6tHIHz + N2U= + -----END CERTIFICATE----- +``` + +--- + +## `crowdsecLapiTLSCertificateBouncerKey` + +Define the crowdsecLapiTLSCertificateBouncerKey + +| | | +| ---------- | ---------------------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.crowdsecLapiTLSCertificateBouncerKey` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + crowdsecLapiTLSCertificateBouncerKey: |- + -----BEGIN TOTALY NOT A SECRET----- + MIIEogIBAAKCAQEAtYQnbJqifH+ZymePylDxGGLIuxzcAUU4/ajNj+qRAdI/Ux3d + ... + ic5cDRo6/VD3CS3MYzyBcibaGaV34nr0G/pI+KEqkYChzk/PZRA= + -----END TOTALY NOT A SECRET----- +``` + +--- + +## `captchaProvider` + +Define the captchaProvider + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.captchaProvider` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + captchaProvider: hcaptcha +``` + +--- + +## `captchaSiteKey` + +Define the captchaSiteKey + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.captchaSiteKey` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + captchaSiteKey: FIXME +``` + +--- + +## `captchaSecretKey` + +Define the captchaSecretKey + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.captchaSecretKey` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + captchaSecretKey: FIXME +``` + +--- + +## `captchaGracePeriodSeconds` + +Define the captchaGracePeriodSeconds + +| | | +| ---------- | ----------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.captchaGracePeriodSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + captchaGracePeriodSeconds: 1800 +``` + +--- + +## `captchaHTMLFilePath` + +Define the captchaHTMLFilePath + +| | | +| ---------- | ----------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.captchaHTMLFilePath` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + captchaHTMLFilePath: /captcha.html +``` + +--- + +## `banHTMLFilePath` + +Define the banHTMLFilePath + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.banHTMLFilePath` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + banHTMLFilePath: /ban.html +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: plugin-bouncer + data: + enabled: true + logLevel: DEBUG + updateIntervalSeconds: 60 + updateMaxFailure: 0 + defaultDecisionSeconds: 60 + httpTimeoutSeconds: 10 + crowdsecMode: live + crowdsecAppsecEnabled: false + crowdsecAppsecHost: crowdsec:7422 + crowdsecAppsecFailureBlock: true + crowdsecAppsecUnreachableBlock: true + crowdsecLapiKey: privateKey-foo + crowdsecLapiHost: crowdsec:8080 + crowdsecLapiScheme: http + crowdsecLapiTLSInsecureVerify: false + crowdsecCapiMachineId: login + crowdsecCapiPassword: password + crowdsecCapiScenarios: + - crowdsecurity/http-path-traversal-probing + - crowdsecurity/http-xss-probing + - crowdsecurity/http-generic-bf + forwardedHeadersTrustedIPs: + - 10.0.10.23/32 + - 10.0.20.0/24 + clientTrustedIPs: + - 192.168.1.0/24 + forwardedHeadersCustomName: X-Custom-Header + remediationHeadersCustomName: cs-remediation + redisCacheEnabled: false + redisCacheHost: "redis:6379" + redisCachePassword: password + redisCacheDatabase: "5" + crowdsecLapiTLSCertificateAuthority: |- + -----BEGIN TOTALY NOT A CERT----- + MIIEBzCCAu+gAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlVT + ... + Q0veeNzBQXg1f/JxfeA39IDIX1kiCf71tGlT + -----END TOTALY NOT A CERT----- + crowdsecLapiTLSCertificateBouncer: |- + -----BEGIN TOTALY NOT A CERT----- + MIIEHjCCAwagAwIBAgIUOBTs1eqkaAUcPplztUr2xRapvNAwDQYJKoZIhvcNAQEL + ... + RaXAnYYUVRblS1jmePemh388hFxbmrpG2pITx8B5FMULqHoj11o2Rl0gSV6tHIHz + N2U= + -----END TOTALY NOT A CERT----- + captchaProvider: hcaptcha + captchaSiteKey: FIXME + captchaSecretKey: FIXME + captchaGracePeriodSeconds: 1800 + captchaHTMLFilePath: /captcha.html + banHTMLFilePath: /ban.html +``` diff --git a/charts/library/common/docs/middlewares/traefik/plugin-geoblock.md b/charts/library/common/docs/middlewares/traefik/plugin-geoblock.md new file mode 100644 index 00000000000..91db6be205e --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/plugin-geoblock.md @@ -0,0 +1,413 @@ +--- +title: Plugin Geoblock Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/plugin-geoblock#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://github.com/PascalMinder/geoblock) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: plugin-geoblock`. + +::: + +--- + +## `pluginName` + +Define the pluginName + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.pluginName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `GeoBlock` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + pluginName: my-plugin-name +``` + +--- + +## `api` + +Define the api + +| | | +| ---------- | ------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.api` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + api: https://api.geoblock.org/v2/geoblock +``` + +--- + +## `allowLocalRequests` + +Define the allowLocalRequests + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.allowLocalRequests` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + allowLocalRequests: true +``` + +--- + +## `logLocalRequests` + +Define the logLocalRequests + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.logLocalRequests` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + logLocalRequests: true +``` + +--- + +## `logAllowedRequests` + +Define the logAllowedRequests + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.logAllowedRequests` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + logAllowedRequests: true +``` + +--- + +## `logApiRequests` + +Define the logApiRequests + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.logApiRequests` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + logApiRequests: true +``` + +--- + +## `apiTimeoutMs` + +Define the apiTimeoutMs + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.apiTimeoutMs` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + apiTimeoutMs: 1000 +``` + +--- + +## `cacheSize` + +Define the cacheSize + +| | | +| ---------- | ------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.cacheSize` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + cacheSize: 1000 +``` + +--- + +## `forceMonthlyUpdate` + +Define the forceMonthlyUpdate + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.forceMonthlyUpdate` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + forceMonthlyUpdate: true +``` + +--- + +## `allowUnknownCountries` + +Define the allowUnknownCountries + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.allowUnknownCountries` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + allowUnknownCountries: true +``` + +--- + +## `unknownCountryApiResponse` + +Define the unknownCountryApiResponse + +| | | +| ---------- | ----------------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.unknownCountryApiResponse` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + unknownCountryApiResponse: some-value +``` + +--- + +## `blackListMode` + +Define the blackListMode + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.blackListMode` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + blackListMode: true +``` + +--- + +## `silentStartUp` + +Define the silentStartUp + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.silentStartUp` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + silentStartUp: true +``` + +--- + +## `addCountryHeader` + +Define the addCountryHeader + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.addCountryHeader` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + addCountryHeader: true +``` + +--- + +## `countries` + +Define the countries + +| | | +| ---------- | ------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.countries` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + countries: + - some-country + - some-other-country +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: plugin-geoblock + data: + api: https://api.geoblock.org/v2/geoblock + allowLocalRequests: true + logLocalRequests: true + logAllowedRequests: true + logApiRequests: true + apiTimeoutMs: 1000 + cacheSize: 1000 + forceMonthlyUpdate: true + allowUnknownCountries: true + unknownCountryApiResponse: some-value + blackListMode: some-value + silentStartUp: true + addCountryHeader: true + countries: + - some-country + - some-other-country +``` diff --git a/charts/library/common/docs/middlewares/traefik/plugin-mod-security.md b/charts/library/common/docs/middlewares/traefik/plugin-mod-security.md new file mode 100644 index 00000000000..5fd48d70203 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/plugin-mod-security.md @@ -0,0 +1,135 @@ +--- +title: Plugin Mod Security Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/plugin-mod-security#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://github.com/acouvreur/traefik-modsecurity-plugin) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: plugin-mod-security`. + +::: + +--- + +## `pluginName` + +Define the pluginName + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.pluginName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `traefik-modsecurity-plugin` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + pluginName: my-plugin-name +``` + +--- + +## `modSecurityUrl` + +Define the modSecurityUrl + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.modSecurityUrl` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + modSecurityUrl: https://example.com +``` + +--- + +## `timeoutMillis` + +Define the timeoutMillis + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.timeoutMillis` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + timeoutMillis: 1000 +``` + +--- + +## `maxBodySize` + +Define the maxBodySize + +| | | +| ---------- | --------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.maxBodySize` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + maxBodySize: 1024 +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: plugin-mod-security + data: + pluginName: my-plugin-name + modSecurityUrl: https://example.com + timeoutMillis: 1000 + maxBodySize: 1024 +``` diff --git a/charts/library/common/docs/middlewares/traefik/plugin-real-ip.md b/charts/library/common/docs/middlewares/traefik/plugin-real-ip.md new file mode 100644 index 00000000000..e2e9a32b4bf --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/plugin-real-ip.md @@ -0,0 +1,89 @@ +--- +title: Plugin Real IP Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/plugin-theme-park#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://github.com/jramsgz/traefik-real-ip) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: plugin-real-ip`. + +::: + +--- + +## `pluginName` + +Define the pluginName + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.pluginName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `traefik-real-ip` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + pluginName: my-plugin-name +``` + +--- + +## `excludednets` + +Define the excludednets + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.excludednets` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + excludednets: + - some-excluded-net + - some-other-excluded-net +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: plugin-real-ip + data: + pluginName: my-plugin-name + excludednets: + - some-excluded-net + - some-other-excluded-net +``` diff --git a/charts/library/common/docs/middlewares/traefik/plugin-rewrite-response-headers.md b/charts/library/common/docs/middlewares/traefik/plugin-rewrite-response-headers.md new file mode 100644 index 00000000000..b03b33495e5 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/plugin-rewrite-response-headers.md @@ -0,0 +1,169 @@ +--- +title: Plugin Rewrite Response Headers Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/plugin-rewrite-response-headers#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://github.com/XciD/traefik-plugin-rewrite-headers/) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: plugin-rewrite-response-headers`. + +::: + +--- + +## `pluginName` + +Define the pluginName + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.pluginName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `rewriteResponseHeaders` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + pluginName: my-plugin-name +``` + +--- + +## `rewrites` + +Define the rewrites + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.rewrites` | +| Type | `list` of `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + rewrites: + - header: some-header + regex: some-regex + replacement: some-replacement +``` + +--- + +### `rewrites[].header` + +Define the header + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.rewrites.header` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + rewrites: + - header: some-header +``` + +--- + +### `rewrites[].regex` + +Define the regex + +| | | +| ---------- | --------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.regex` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + rewrites: + - regex: some-regex +``` + +--- + +### `rewrites[].replacement` + +Define the replacement + +| | | +| ---------- | --------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.replacement` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + rewrites: + - replacement: some-replacement +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: plugin-rewrite-response-headers + data: + pluginName: my-plugin-name + rewrites: + - header: some-header + regex: some-regex + replacement: some-replacement + - header: some-other-header + regex: some-other-regex + replacement: some-other-replacement +``` diff --git a/charts/library/common/docs/middlewares/traefik/plugin-theme-park.md b/charts/library/common/docs/middlewares/traefik/plugin-theme-park.md new file mode 100644 index 00000000000..c2beaf260e8 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/plugin-theme-park.md @@ -0,0 +1,164 @@ +--- +title: Plugin Theme Park Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/plugin-theme-park#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://github.com/packruler/traefik-themepark) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: plugin-theme-park`. + +::: + +--- + +## `pluginName` + +Define the pluginName + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.pluginName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `traefik-themepark` | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + pluginName: my-plugin-name +``` + +--- + +## `app` + +Define the app + +| | | +| ---------- | ------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.app` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + app: sonarr +``` + +--- + +## `theme` + +Define the theme + +| | | +| ---------- | --------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.theme` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + theme: dark +``` + +--- + +## `baseUrl` + +Define the baseUrl + +| | | +| ---------- | ----------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.baseUrl` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + baseUrl: https://example.com +``` + +--- + +## `addons` + +Define the addons + +| | | +| ---------- | ---------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.addons` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + addons: + - some-addon + - some-other-addon +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: plugin-theme-park + data: + pluginName: my-plugin-name + app: sonarr + theme: dark + baseUrl: https://example.com + addons: + - some-addon + - some-other-addon +``` diff --git a/charts/library/common/docs/middlewares/traefik/rate-limit.md b/charts/library/common/docs/middlewares/traefik/rate-limit.md new file mode 100644 index 00000000000..b7945a880c0 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/rate-limit.md @@ -0,0 +1,85 @@ +--- +title: Rate Limit Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/rate-limit#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/ratelimit) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: rate-limit`. + +::: + +--- + +## `average` + +Define the average rate limit + +| | | +| ---------- | ----------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.average` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + average: 1000 +``` + +--- + +## `burst` + +Define the burst rate limit + +| | | +| ---------- | --------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.burst` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + burst: 1000 +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: rate-limit + data: + average: 1000 + burst: 1000 +``` diff --git a/charts/library/common/docs/middlewares/traefik/redirect-regex.md b/charts/library/common/docs/middlewares/traefik/redirect-regex.md new file mode 100644 index 00000000000..417a0302934 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/redirect-regex.md @@ -0,0 +1,110 @@ +--- +title: Redirect Regex Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/redirect-regex#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/redirectregex) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: redirect-regex`. + +::: + +--- + +## `regex` + +Define the regex + +| | | +| ---------- | --------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.regex` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + regex: some-regex +``` + +--- + +## `replacement` + +Define the replacement + +| | | +| ---------- | --------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.replacement` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + replacement: some-replacement +``` + +--- + +## `permanent` + +Define the permanent + +| | | +| ---------- | ------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.permanent` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + permanent: true +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: redirect-regex + data: + regex: some-regex + replacement: some-replacement + permanent: true +``` diff --git a/charts/library/common/docs/middlewares/traefik/redirect-scheme.md b/charts/library/common/docs/middlewares/traefik/redirect-scheme.md new file mode 100644 index 00000000000..ce780678598 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/redirect-scheme.md @@ -0,0 +1,85 @@ +--- +title: Redirect Scheme Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/redirect-scheme#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/redirectscheme) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: redirect-scheme`. + +::: + +--- + +## `scheme` + +Define the scheme + +| | | +| ---------- | ---------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.scheme` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + scheme: https +``` + +--- + +## `permanent` + +Define the permanent + +| | | +| ---------- | ------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.permanent` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + permanent: true +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: redirect-scheme + data: + scheme: https + permanent: true +``` diff --git a/charts/library/common/docs/middlewares/traefik/replace-path-regex.md b/charts/library/common/docs/middlewares/traefik/replace-path-regex.md new file mode 100644 index 00000000000..de1d0fa9e35 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/replace-path-regex.md @@ -0,0 +1,85 @@ +--- +title: Replace Path Regex Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/replace-path-regex#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/replacepathregex) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: replace-path-regex`. + +::: + +--- + +## `regex` + +Define the regex + +| | | +| ---------- | --------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.regex` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + regex: /some-path +``` + +--- + +## `replacement` + +Define the replacement + +| | | +| ---------- | --------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.replacement` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + replacement: /some-replacement +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: replace-path-regex + data: + regex: /some-path + replacement: /some-replacement +``` diff --git a/charts/library/common/docs/middlewares/traefik/replace-path.md b/charts/library/common/docs/middlewares/traefik/replace-path.md new file mode 100644 index 00000000000..47299884d48 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/replace-path.md @@ -0,0 +1,60 @@ +--- +title: Replace Path Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/replace-path#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/replacepath) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: replace-path`. + +::: + +--- + +## `path` + +Define the path + +| | | +| ---------- | -------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.path` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + path: /some-path +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: replace-path + data: + path: /some-path +``` diff --git a/charts/library/common/docs/middlewares/traefik/retry.md b/charts/library/common/docs/middlewares/traefik/retry.md new file mode 100644 index 00000000000..ad19dbc0eaf --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/retry.md @@ -0,0 +1,85 @@ +--- +title: Retry Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/retry#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/retry) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: retry`. + +::: + +--- + +## `attempts` + +Define the path + +| | | +| ---------- | ------------------------------------------------ | +| Key | `ingressMiddlewares.traefik.$name.data.attempts` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + attempts: 3 +``` + +--- + +## `initialInterval` + +Define the initialInterval + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.initialInterval` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + initialInterval: 1000 +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: retry + data: + attempts: 3 + initialInterval: 1000 +``` diff --git a/charts/library/common/docs/middlewares/traefik/strip-prefix-regex.md b/charts/library/common/docs/middlewares/traefik/strip-prefix-regex.md new file mode 100644 index 00000000000..e01edc98973 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/strip-prefix-regex.md @@ -0,0 +1,64 @@ +--- +title: Strip Prefix Regex Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/strip-prefix-regex#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/stripprefixregex) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: strip-prefix-regex`. + +::: + +--- + +## `regex` + +Define the regexes + +| | | +| ---------- | --------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.regex` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + regex: + - some-regex + - some-other-regex +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: strip-prefix-regex + data: + regex: + - some-regex + - some-other-regex +``` diff --git a/charts/library/common/docs/middlewares/traefik/strip-prefix.md b/charts/library/common/docs/middlewares/traefik/strip-prefix.md new file mode 100644 index 00000000000..0f35b9dade2 --- /dev/null +++ b/charts/library/common/docs/middlewares/traefik/strip-prefix.md @@ -0,0 +1,89 @@ +--- +title: Strip Prefix Middleware +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/middlewares/traefik/strip-prefix#full-examples) section for complete examples. +- Upstream documentation for this middleware can be found [here](https://doc.traefik.io/traefik/middlewares/http/stripprefix) + +::: + +## Appears in + +- `.Values.ingressMiddlewares.traefik.$name.data` + +:::tip + +- See available middleware keys [here](/truecharts-common/middlewares). +- This options apply only when `type: strip-prefix`. + +::: + +--- + +## `prefix` + +Define the prefixes + +| | | +| ---------- | ---------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.prefix` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + prefix: + - /some-prefix + - /some-other-prefix +``` + +--- + +## `forceSlash` + +Define the forceSlash + +| | | +| ---------- | -------------------------------------------------- | +| Key | `ingressMiddlewares.traefik.$name.data.forceSlash` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | - | + +Example + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + data: + forceSlash: true +``` + +--- + +## Full Examples + +```yaml +ingressMiddlewares: + traefik: + middleware-name: + enabled: true + type: strip-prefix + data: + prefix: + - /some-prefix + - /some-other-prefix + forceSlash: true +``` diff --git a/charts/library/common/docs/notes.md b/charts/library/common/docs/notes.md new file mode 100644 index 00000000000..bb03aee80ed --- /dev/null +++ b/charts/library/common/docs/notes.md @@ -0,0 +1,123 @@ +--- +title: Notes +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/notes#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.notes` + +--- + +## `notes` + +Define values for `NOTES.txt` + +| | | +| ---------- | ------- | +| Key | `notes` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +notes: {} +``` + +--- + +### `header` + +Define header + +| | | +| ---------- | -------------- | +| Key | `notes.header` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | + +Default + +```yaml +header: | + # Welcome to TrueCharts! + Thank you for installing <{{ .Chart.Name }}>. +``` + +Example + +```yaml +notes: + header: "" +``` + +--- + +### `custom` + +Define custom message, this go between header and footer + +| | | +| ---------- | -------------- | +| Key | `notes.custom` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +notes: + custom: "" +``` + +--- + +### `footer` + +Define footer + +| | | +| ---------- | -------------- | +| Key | `notes.footer` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | + +Default + +```yaml +footer: | + # Documentation + Documentation for this chart can be found at ... + # Bug reports + If you find a bug in this chart, please file an issue at ... +``` + +Example + +```yaml +notes: + footer: "" +``` + +--- + +## Full Examples + +```yaml +notes: + custom: | + This is a custom message +``` diff --git a/charts/library/common/docs/persistence/configmap.md b/charts/library/common/docs/persistence/configmap.md new file mode 100644 index 00000000000..b866051332a --- /dev/null +++ b/charts/library/common/docs/persistence/configmap.md @@ -0,0 +1,203 @@ +--- +title: Configmap +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/configmap#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: configmap`. + +::: + +--- + +## `objectName` + +Define the configmap name. + +| | | +| ---------- | ------------------------------ | +| Key | `persistence.$name.objectName` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + configmap-vol: + objectName: configmap-name +``` + +--- + +## `expandObjectName` + +Whether to expand (adding the fullname as prefix) the configmap name. + +| | | +| ---------- | ------------------------------------ | +| Key | `persistence.$name.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `true` | + +Example + +```yaml +persistence: + configmap-vol: + expandObjectName: false +``` + +--- + +## `optional` + +Whether the configmap should be required or not. + +| | | +| ---------- | ---------------------------- | +| Key | `persistence.$name.optional` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +persistence: + configmap-vol: + optional: false +``` + +--- + +## `defaultMode` + +Define the defaultMode (must be a string in format of "0777"). + +| | | +| ---------- | ------------------------------- | +| Key | `persistence.$name.defaultMode` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + configmap-vol: + defaultMode: "0777" +``` + +--- + +## `items` + +Define a list of items for configmap. + +| | | +| ---------- | ------------------------- | +| Key | `persistence.$name.items` | +| Type | `list` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +persistence: + configmap-vol: + items: + - key: key1 + path: path1 + - key: key2 + path: path2 +``` + +--- + +### `items[].key` + +Define the key of the configmap. + +| | | +| ---------- | ------------------------------- | +| Key | `persistence.$name.items[].key` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + configmap-vol: + items: + - key: key1 + path: path1 +``` + +--- + +### `items[].path` + +Define the path. + +| | | +| ---------- | -------------------------------- | +| Key | `persistence.$name.items[].path` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + configmap-vol: + items: + - key: key1 + path: path1 +``` + +--- + +## Full Examples + +```yaml +persistence: + configmap-vol: + enabled: true + type: configmap + objectName: configmap-name + expandObjectName: false + optional: false + defaultMode: "0777" + items: + - key: key1 + path: path1 + - key: key2 + path: path2 +``` diff --git a/charts/library/common/docs/persistence/device.md b/charts/library/common/docs/persistence/device.md new file mode 100644 index 00000000000..12c6fffb5b1 --- /dev/null +++ b/charts/library/common/docs/persistence/device.md @@ -0,0 +1,86 @@ +--- +title: Device +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/device#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: device`. + +::: + +--- + +## Notes + +Type `device` is almost identical to `hostPath`. The only difference is that when a `device` type is defined, +we take additional actions, like adding `supplementalGroups` or setting `hostPathType` automatically +to the container assigned, so it can utilize the device. + +--- + +## `hostPath` + +Define the hostPath + +| | | +| ---------- | ---------------------------- | +| Key | `persistence.$name.hostPath` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + device-vol: + hostPath: /path/to/host +``` + +--- + +## `hostPathType` + +Define the hostPathType + +| | | +| ---------- | -------------------------------- | +| Key | `persistence.$name.hostPathType` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + device-vol: + hostPathType: BlockDevice +``` + +--- + +## Full Examples + +```yaml +persistence: + dev-vol: + enabled: true + type: device + hostPath: /path/to/host + hostPathType: BlockDevice +``` diff --git a/charts/library/common/docs/persistence/emptyDir.md b/charts/library/common/docs/persistence/emptyDir.md new file mode 100644 index 00000000000..a13c0039228 --- /dev/null +++ b/charts/library/common/docs/persistence/emptyDir.md @@ -0,0 +1,83 @@ +--- +title: EmptyDir +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/emptydir#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: emptyDir`. + +::: + +--- + +## `size` + +Define the sizeLimit of the emptyDir + +| | | +| ---------- | ------------------------ | +| Key | `persistence.$name.size` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + emptyDir-vol: + size: 2Gi +``` + +--- + +## `medium` + +Define the medium of emptyDir (Memory, "") + +| | | +| ---------- | -------------------------- | +| Key | `persistence.$name.medium` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values + +- `Memory` +- `""` + +Example + +```yaml +persistence: + emptyDir-vol: + medium: Memory +``` + +--- + +## Full Examples + +```yaml +persistence: + emptyDir-vol: + enabled: true + type: emptyDir + medium: Memory + size: 2Gi +``` diff --git a/charts/library/common/docs/persistence/hostPath.md b/charts/library/common/docs/persistence/hostPath.md new file mode 100644 index 00000000000..25540ae5a18 --- /dev/null +++ b/charts/library/common/docs/persistence/hostPath.md @@ -0,0 +1,90 @@ +--- +title: Host Path +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/hostpath#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: hostPath`. + +::: + +--- + +## `hostPath` + +Define the hostPath + +| | | +| ---------- | ---------------------------- | +| Key | `persistence.$name.hostPath` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + hostpath-vol: + hostPath: /path/to/host +``` + +--- + +## `hostPathType` + +Define the hostPathType + +| | | +| ---------- | -------------------------------- | +| Key | `persistence.$name.hostPathType` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values + +- `""` +- `DirectoryOrCreate` +- `Directory` +- `FileOrCreate` +- `File` +- `Socket` +- `CharDevice` +- `BlockDevice` + +Example + +```yaml +persistence: + hostpath-vol: + hostPathType: DirectoryOrCreate +``` + +--- + +## Full Examples + +```yaml +persistence: + hostpath-vol: + enabled: true + type: hostPath + mountPath: /path + hostPath: /path/to/host + hostPathType: DirectoryOrCreate +``` diff --git a/charts/library/common/docs/persistence/index.md b/charts/library/common/docs/persistence/index.md new file mode 100644 index 00000000000..8134812874d --- /dev/null +++ b/charts/library/common/docs/persistence/index.md @@ -0,0 +1,475 @@ +--- +title: Persistence +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence` + +## Naming scheme + +- `$FullName-$PersistenceName` (release-name-chart-name-PersistenceName) + +:::tip + +- Replace references to `$name`, `$podName`, `$containerName` with the actual name you want to use. + +::: + +--- + +## Target Selector + +- `targetSelectAll` (bool): Whether to define the volume to all pods and mount it on all containers. `targetSelector` is ignored in this case. Useful for shared volumes. +- `targetSelector` (map): Define the pod(s) and container(s) to define the volume and mount it. +- `targetSelector` (empty): Define the volume to the primary pod and mount it on the primary container + +## `persistence` + +Define persistence objects + +| | | +| ---------- | ------------- | +| Key | `persistence` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: {} +``` + +--- + +### `$name` + +Define persistence + +| | | +| ---------- | ------------------- | +| Key | `persistence.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: + some-vol: {} +``` + +--- + +#### `enabled` + +Enables or Disables the persistence + +| | | +| ---------- | --------------------------- | +| Key | `persistence.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +persistence: + some-vol: + enabled: true +``` + +--- + +#### `type` + +Define the persistence type + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `persistence.$name.type` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/fallbackdefaults#persistencetype) | + +Valid Values: + +- [`hostPath`](/truecharts-common/persistence/hostpath) +- [`configmap`](/truecharts-common/configmap) +- [`secret`](/truecharts-common/secret) +- [`device`](/truecharts-common/persistence/device) +- [`pvc`](/truecharts-common/persistence/pvc-vct) +- [`vct`](/truecharts-common/persistence/pvc-vct) +- [`nfs`](/truecharts-common/persistence/nfs) +- [`emptyDir`](/truecharts-common/persistence/emptydir) +- [`iscsi`](/truecharts-common/persistence/iscsi) + +Example + +```yaml +persistence: + some-vol: + type: pvc +``` + +--- + +#### `mountPath` + +Define the mountPath for the persistence, applies to all containers that are selected + +| | | +| ---------- | ----------------------------- | +| Key | `persistence.$name.mountPath` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + some-vol: + mountPath: /path +``` + +--- + +#### `mountPropagation` + +Define the mountPropagation for the persistence, applies to all containers that are selected + +| | | +| ---------- | ------------------------------------ | +| Key | `persistence.$name.mountPropagation` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `None` +- `HostToContainer` +- `Bidirectional` + +Example + +```yaml +persistence: + some-vol: + mountPropagation: HostToContainer +``` + +--- + +#### `subPath` + +Define the subPath for the persistence, applies to all containers that are selected + +| | | +| ---------- | --------------------------- | +| Key | `persistence.$name.subPath` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + some-vol: + subPath: some-path +``` + +--- + +#### `readOnly` + +Define the readOnly for the persistence, applies to all containers that are selected + +| | | +| ---------- | ---------------------------- | +| Key | `persistence.$name.readOnly` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +persistence: + some-vol: + readOnly: true +``` + +--- + +#### `targetSelectAll` + +Define wether to define this volume to all workloads and mount it on all containers + +| | | +| ---------- | ----------------------------------- | +| Key | `persistence.$name.targetSelectAll` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +persistence: + some-vol: + targetSelectAll: true +``` + +--- + +#### `targetSelector` + +Define a map with pod and containers to mount + +| | | +| ---------- | ---------------------------------- | +| Key | `persistence.$name.targetSelector` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: + some-vol: + targetSelector: {} +``` + +--- + +#### `targetSelector.$podName` + +Define a map named after the pod to define the volume + +| | | +| ---------- | ------------------------------------------- | +| Key | `persistence.$name.targetSelector.$podName` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: + some-vol: + targetSelector: + my-pod: {} +``` + +--- + +#### `targetSelector.$podName.$containerName` + +Define a map named after the container to mount the volume + +| | | +| ---------- | ---------------------------------------------------------- | +| Key | `persistence.$name.targetSelector.$podName.$containerName` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: + some-vol: + targetSelector: + my-pod: + my-container: {} +``` + +--- + +##### `targetSelector.$podName.$containerName.mountPath` + +Define the mountPath for the container + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `persistence.$name.targetSelector.$podName.$containerName.mountPath` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `$name.mountPath` | + +Example + +```yaml +persistence: + some-vol: + targetSelector: + my-pod: + my-container: + mountPath: /path +``` + +--- + +##### `targetSelector.$podName.$containerName.mountPropagation` + +Define the mountPropagation for the container + +| | | +| ---------- | --------------------------------------------------------------------------- | +| Key | `persistence.$name.targetSelector.$podName.$containerName.mountPropagation` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `$name.mountPropagation` | + +Example + +```yaml +persistence: + some-vol: + targetSelector: + my-pod: + my-container: + mountPropagation: HostToContainer +``` + +--- + +##### `targetSelector.$podName.$containerName.subPath` + +Define the subPath for the container + +| | | +| ---------- | ------------------------------------------------------------------ | +| Key | `persistence.$name.targetSelector.$podName.$containerName.subPath` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `$name.subPath` | + +Example + +```yaml +persistence: + some-vol: + targetSelector: + my-pod: + my-container: + subPath: some-path +``` + +--- + +##### `targetSelector.$podName.$containerName.readOnly` + +Define the readOnly for the container + +| | | +| ---------- | ------------------------------------------------------------------- | +| Key | `persistence.$name.targetSelector.$podName.$containerName.readOnly` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `$name.readOnly` | + +Example + +```yaml +persistence: + some-vol: + targetSelector: + my-pod: + my-container: + readOnly: true +``` + +--- + +## Basic Examples + +```yaml +# Example of a shared emptyDir volume +persistence: + shared: + enabled: true + type: emptyDir + mountPath: /shared + readOnly: false + targetSelectAll: true +``` + +```yaml +# Example of a volume mounted to a specific container with a specific mountPath +persistence: + config: + enabled: true + type: emptyDir + targetSelector: + my-pod: + my-container: {} + mountPath: /path + readOnly: false + my-other-container: {} + mountPath: /other/path + readOnly: false +``` + +```yaml +# Example of a volume mounted to a specific container using the default mountPath +persistence: + config: + enabled: true + type: emptyDir + mountPath: /path + readOnly: true + targetSelector: + my-pod: + my-container: {} + my-other-container: + mountPath: /other/path + readOnly: false +``` + +--- + +## Full Examples + +Full examples can be found under each persistence type + +- [hostPath](/truecharts-common/persistence/hostpath) +- [configmap](/truecharts-common/persistence/configmap) +- [secret](/truecharts-common/persistence/secret) +- [device](/truecharts-common/persistence/device) +- [pvc](/truecharts-common/persistence/pvc-vct) +- [vct](/truecharts-common/persistence/pvc-vct) +- [nfs](/truecharts-common/persistence/nfs) +- [emptyDir](/truecharts-common/persistence/emptydir) +- [iscsi](/truecharts-common/persistence/iscsi) diff --git a/charts/library/common/docs/persistence/iscsi.md b/charts/library/common/docs/persistence/iscsi.md new file mode 100644 index 00000000000..c7ba98aece4 --- /dev/null +++ b/charts/library/common/docs/persistence/iscsi.md @@ -0,0 +1,446 @@ +--- +title: iSCSI +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/iscsi#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: iscsi`. + +::: + +--- + +## `iscsi` + +Define the iSCSI + +| | | +| ---------- | ------------------------- | +| Key | `persistence.$name.iscsi` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: {} +``` + +--- + +### `fsType` + +Define the fsType + +| | | +| ---------- | -------------------------- | +| Key | `persistence.$name.fsType` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values + +- `ext4` +- `xfs` +- `ntfs` + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + fsType: ext4 +``` + +--- + +### `targetPortal` + +Define the targetPortal + +| | | +| ---------- | -------------------------------- | +| Key | `persistence.$name.targetPortal` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + targetPortal: some.target.portal +``` + +--- + +### `iqn` + +Define the iqn + +| | | +| ---------- | ----------------------- | +| Key | `persistence.$name.iqn` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + iqn: some.iqn +``` + +--- + +### `lun` + +Define the lun + +| | | +| ---------- | ----------------------- | +| Key | `persistence.$name.lun` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + lun: 0 +``` + +--- + +### `initiatorName` + +Define the initiatorName + +| | | +| ---------- | --------------------------------- | +| Key | `persistence.$name.initiatorName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + initiatorName: some.initiator.name +``` + +--- + +### `iscsiInterface` + +Define the iscsiInterface + +| | | +| ---------- | ---------------------------------- | +| Key | `persistence.$name.iscsiInterface` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + iscsiInterface: some.interface +``` + +--- + +### `portals` + +Define the portals + +| | | +| ---------- | --------------------------- | +| Key | `persistence.$name.portals` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + portals: + - some.portal.1 + - some.portal.2 +``` + +--- + +### `authDiscovery` + +Define the authDiscovery + +| | | +| ---------- | --------------------------------------- | +| Key | `persistence.$name.iscsi.authDiscovery` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + authDiscovery: {} +``` + +--- + +#### `authDiscovery.username` + +Define the username + +| | | +| ---------- | ------------------------------------------------ | +| Key | `persistence.$name.iscsi.authDiscovery.username` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + authDiscovery: + username: some.username +``` + +--- + +#### `authDiscovery.password` + +Define the password + +| | | +| ---------- | ------------------------------------------------ | +| Key | `persistence.$name.iscsi.authDiscovery.password` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + authDiscovery: + password: some.password +``` + +--- + +#### `authDiscovery.usernameInitiator` + +Define the usernameInitiator + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `persistence.$name.iscsi.authDiscovery.usernameInitiator` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + authDiscovery: + usernameInitiator: some.usernameInitiator +``` + +--- + +#### `authDiscovery.passwordInitiator` + +Define the passwordInitiator + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `persistence.$name.iscsi.authDiscovery.passwordInitiator` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + authDiscovery: + passwordInitiator: some.passwordInitiator +``` + +--- + +### `authSession` + +Define the authSession + +| | | +| ---------- | ------------------------------------- | +| Key | `persistence.$name.iscsi.authSession` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + authSession: {} +``` + +--- + +#### `authSession.username` + +Define the username + +| | | +| ---------- | ---------------------------------------------- | +| Key | `persistence.$name.iscsi.authSession.username` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + authSession: + username: some.username +``` + +--- + +#### `authSession.password` + +Define the password + +| | | +| ---------- | ---------------------------------------------- | +| Key | `persistence.$name.iscsi.authSession.password` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + iscsi-vol: + iscsi: + authSession: + password: some.password +``` + +--- + +## Full Examples + +```yaml +persistence: + iscsi-vol: + enabled: true + type: iscsi + iscsi: + fsType: "{{ .Values.some_fsType }}" + targetPortal: "{{ .Values.some_targetPortal }}" + iqn: "{{ .Values.some_iqn }}" + lun: "{{ .Values.some_lun }}" + initiatorName: "{{ .Values.some_initiatorName }}" + iscsiInterface: "{{ .Values.some_interface }}" + portals: + - "{{ index .Values.some_portals 0 }}" + - "{{ index .Values.some_portals 1 }}" + authSession: + username: "{{ .Values.username }}" + password: "{{ .Values.password }}" + usernameInitiator: '{{ printf "%s%s" .Values.username "Initiator" }}' + passwordInitiator: '{{ printf "%s%s" .Values.password "Initiator" }}' + iscsi-vol2: + enabled: true + type: iscsi + iscsi: + fsType: ext4 + targetPortal: some.target.portal + iqn: some.iqn + lun: 0 + initiatorName: some.initiator.name + iscsiInterface: some.interface + portals: + - some.portal.1 + - some.portal.2 + authDiscovery: + username: some.username + password: some.password + usernameInitiator: some.usernameInitiator + passwordInitiator: some.passwordInitiator +``` diff --git a/charts/library/common/docs/persistence/nfs.md b/charts/library/common/docs/persistence/nfs.md new file mode 100644 index 00000000000..15fb584b97c --- /dev/null +++ b/charts/library/common/docs/persistence/nfs.md @@ -0,0 +1,78 @@ +--- +title: NFS +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/nfs#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: nfs`. + +::: + +--- + +## `path` + +Define the nfs export share path + +| | | +| ---------- | ------------------------ | +| Key | `persistence.$name.path` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + nfs-vol: + path: /path/of/nfs/share +``` + +--- + +## `server` + +Define the nfs server + +| | | +| ---------- | -------------------------- | +| Key | `persistence.$name.server` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + nfs-vol: + server: nfs-server +``` + +--- + +## Full Examples + +```yaml +persistence: + nfs-vol: + enabled: true + type: nfs + path: /path/of/nfs/share + server: nfs-server +``` diff --git a/charts/library/common/docs/persistence/pvc-vct/index.md b/charts/library/common/docs/persistence/pvc-vct/index.md new file mode 100644 index 00000000000..24f424970ba --- /dev/null +++ b/charts/library/common/docs/persistence/pvc-vct/index.md @@ -0,0 +1,604 @@ +--- +title: PVC / VCT +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/pvc-vct#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: pvc` or `type: vct`. + +::: + +--- + +## `labels` + +Additional labels for persistence + +| | | +| ---------- | -------------------------- | +| Key | `persistence.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +persistence: + pvc-vol: + labels: + label1: value1 +``` + +--- + +## `annotations` + +Additional annotations for persistence + +| | | +| ---------- | ------------------------------- | +| Key | `persistence.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +persistence: + pvc-vol: + annotations: + annotation1: value1 +``` + +--- + +## `namespace` + +Define the namespace for this object + +| | | +| ---------- | ----------------------------- | +| Key | `persistence.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + pvc-vol: + namespace: some-namespace +``` + +--- + +## `retain` + +Define wether the to add helm annotation to retain resource on uninstall. +This does not **guarantee** that the resource will be retained. + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `persistence.$name.retain` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/fallbackdefaults#pvcretain) | + +Example + +```yaml +persistence: + pvc-vol: + retain: true +``` + +--- + +## `accessModes` + +Define the accessModes of the PVC, if it's single can be defined as a string, multiple as a list + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `persistence.$name.accessModes` | +| Type | `string` or `list` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [here](/truecharts-common/fallbackdefaults#accessmodes) | + +Example + +```yaml +persistence: + pvc-vol: + accessModes: ReadWriteOnce + +persistence: + pvc-vol: + accessModes: + - ReadWriteOnce + - ReadWriteMany +``` + +--- + +## `volumeName` + +Define the volumeName of a PV, backing the claim + +| | | +| ---------- | ------------------------------ | +| Key | `persistence.$name.volumeName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + pvc-vol: + volumeName: volume-name-backing-the-pvc +``` + +--- + +## `existingClaim` + +Define an existing claim to use + +| | | +| ---------- | --------------------------------- | +| Key | `persistence.$name.existingClaim` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + pvc-vol: + existingClaim: existing-claim-name +``` + +--- + +## `size` + +Define the size of the PVC + +| | | +| ---------- | ------------------------------------------------------------------------------------------------------- | +| Key | `persistence.$name.size` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [pvcSize](/truecharts-common/fallbackdefaults#pvcsize) and [vctSize](/truecharts-common/fallbackdefaults#vctsize) | + +Example + +```yaml +persistence: + pvc-vol: + size: 2Gi +``` + +--- + +## `storageClass` + +Define the storageClass to use + +:::note How storageClass is resolved + +- If storageClass is defined on the `persistence` + - `-` **->** `""`, (which means requesting a PV without class) + - Else **->** as is +- Else if [fallback storageClass](/truecharts-common/fallbackdefaults#storageclass), **->** this +- Else **->** _nothing_ (which means requesting a PV without class) + +::: + +| | | +| ---------- | -------------------------------- | +| Key | `persistence.$name.storageClass` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + pvc-vol: + storageClass: storage-class-name +``` + +--- + +## `dataSource` + +Define dataSource for the pvc + +| | | +| ---------- | ------------------------------ | +| Key | `persistence.$name.dataSource` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: + pvc-vol: + dataSource: {} +``` + +--- + +### `dataSource.kind` + +Define the kind of the dataSource + +| | | +| ---------- | ----------------------------------- | +| Key | `persistence.$name.dataSource.kind` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Valid Values + +- `PersistentVolumeClaim` +- `VolumeSnapshot` + +Example + +```yaml +persistence: + pvc-vol: + dataSource: + kind: "PersistentVolumeClaim" +``` + +--- + +### `dataSource.name` + +Define the name of the dataSource + +| | | +| ---------- | ----------------------------------- | +| Key | `persistence.$name.dataSource.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +persistence: + pvc-vol: + dataSource: + name: "existingPVC" +``` + +--- + +## `static` + +Define static provisioning for the pvc + +| | | +| ---------- | -------------------------- | +| Key | `persistence.$name.static` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +persistence: + pvc-vol: + static: {} +``` + +--- + +### `static.mode` + +Define the mode of the static provisioning + +| | | +| ---------- | ------------------------------- | +| Key | `persistence.$name.static.mode` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Valid Values + +- [`nfs`](/truecharts-common/persistence/pvc-vct/static-nfs) +- [`smb`](/truecharts-common/persistence/pvc-vct/static-smb) +- [`custom`](/truecharts-common/persistence/pvc-vct/static-custom) + +Example + +```yaml +persistence: + pvc-vol: + static: + mode: nfs +``` + +--- + +## `mountOptions` + +Define mountOptions for the pvc. +Available only for `static.mode: nfs|smb` + +| | | +| ---------- | -------------------------------- | +| Key | `persistence.$name.mountOptions` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +persistence: + pvc-vol: + mountOptions: [] +``` + +### `mountOptions[].key` + +Define the key of the mountOption + +| | | +| ---------- | -------------------------------------- | +| Key | `persistence.$name.mountOptions[].key` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + pvc-vol: + mountOptions: + - key: some-key +``` + +--- + +### `mountOptions[].value` + +Define the value of the mountOption + +| | | +| ---------- | ---------------------------------------- | +| Key | `persistence.$name.mountOptions[].value` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + pvc-vol: + mountOptions: + - value: some-value +``` + +--- + +## `volumeSnapshots` + +Define volumeSnapshots for the pvc + +| | | +| ---------- | ----------------------------------- | +| Key | `persistence.$name.volumeSnapshots` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +persistence: + pvc-vol: + volumeSnapshots: [] +``` + +### `volumeSnapshots[].name` + +Define the name of the volumeSnapshot + +| | | +| ---------- | ------------------------------------------ | +| Key | `persistence.$name.volumeSnapshots[].name` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +persistence: + pvc-vol: + volumeSnapshots: + - name: example1 +``` + +### `volumeSnapshots[].enabled` + +Define if the volumeSnapshot is enabled + +| | | +| ---------- | --------------------------------------------- | +| Key | `persistence.$name.volumeSnapshots[].enabled` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +persistence: + pvc-vol: + volumeSnapshots: + - enabled: true +``` + +### `volumeSnapshots[].labels` + +Define the labels of the volumeSnapshot + +| | | +| ---------- | -------------------------------------------- | +| Key | `persistence.$name.volumeSnapshots[].labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +persistence: + pvc-vol: + volumeSnapshots: + - labels: + label1: value1 +``` + +### `volumeSnapshots[].annotations` + +Define the annotations of the volumeSnapshot + +| | | +| ---------- | ------------------------------------------------- | +| Key | `persistence.$name.volumeSnapshots[].annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +persistence: + pvc-vol: + volumeSnapshots: + - annotations: + annotation1: value1 +``` + +### `volumeSnapshots[].volumeSnapshotClassName` + +Define the volumeSnapshotClassName of the volumeSnapshot + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `persistence.$name.volumeSnapshots[].volumeSnapshotClassName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +persistence: + pvc-vol: + volumeSnapshots: + - volumeSnapshotClassName: some-name +``` + +--- + +## Full Examples + +```yaml +persistence: + pvc-vol: + enabled: true + type: pvc + namespace: some-namespace + labels: + label1: value1 + annotations: + annotation1: value1 + dataSource: + kind: "PersistentVolumeClaim" + name: "existingPVC" + accessModes: ReadWriteOnce + volumeName: volume-name-backing-the-pvc + existingClaim: existing-claim-name + retain: true + size: 2Gi + mountOptions: + - key: some-key + value: some-value + # static: + # mode: custom + # provisioner: provisioner + # driver: driver + # csi: + # key: value + volumeSnapshots: + - name: example1 + enabled: true + labels: + label1: value1 + annotations: + annotation1: value1 + volumeSnapshotClassName: some-name + # targetSelectAll: true + targetSelector: + pod-name: + container-name: + mountPath: /path/to/mount +``` diff --git a/charts/library/common/docs/persistence/pvc-vct/static-custom.md b/charts/library/common/docs/persistence/pvc-vct/static-custom.md new file mode 100644 index 00000000000..6c01a9f578a --- /dev/null +++ b/charts/library/common/docs/persistence/pvc-vct/static-custom.md @@ -0,0 +1,83 @@ +--- +title: Static Custom +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/pvc-vct/static-custom#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name.static` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: pvc` or `type: vct` and `mode: custom`. + +::: + +--- + +## `driver` + +Define the custom driver + +| | | +| ---------- | --------------------------------- | +| Key | `persistence.$name.static.driver` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +persistence: + smb-vol: + type: pvc + static: + driver: some-driver +``` + +--- + +## `provisioner` + +Define the custom provisioner + +| | | +| ---------- | -------------------------------------- | +| Key | `persistence.$name.static.provisioner` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +persistence: + smb-vol: + type: pvc + static: + provisioner: some-provisioner +``` + +--- + +## Full Examples + +```yaml +persistence: + smb-vol: + type: pvc + static: + mode: custom + driver: some-driver + provisioner: some-provisioner +``` diff --git a/charts/library/common/docs/persistence/pvc-vct/static-nfs.md b/charts/library/common/docs/persistence/pvc-vct/static-nfs.md new file mode 100644 index 00000000000..415c9464cb8 --- /dev/null +++ b/charts/library/common/docs/persistence/pvc-vct/static-nfs.md @@ -0,0 +1,83 @@ +--- +title: Static NFS +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/pvc-vct/static-nfs#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name.static` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: pvc` or `type: vct` and `mode: nfs`. + +::: + +--- + +## `server` + +Define the nfs server + +| | | +| ---------- | --------------------------------- | +| Key | `persistence.$name.static.server` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + nfs-vol: + type: pvc + static: + server: /server +``` + +--- + +## `share` + +Define the nfs export share path + +| | | +| ---------- | -------------------------------- | +| Key | `persistence.$name.static.share` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + nfs-vol: + type: pvc + static: + share: share +``` + +--- + +## Full Examples + +```yaml +persistence: + nfs-vol: + type: pvc + static: + mode: nfs + server: /server + share: share +``` diff --git a/charts/library/common/docs/persistence/pvc-vct/static-smb.md b/charts/library/common/docs/persistence/pvc-vct/static-smb.md new file mode 100644 index 00000000000..f4e37b74e40 --- /dev/null +++ b/charts/library/common/docs/persistence/pvc-vct/static-smb.md @@ -0,0 +1,158 @@ +--- +title: Static SMB +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/pvc-vct/static-smb#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name.static` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: pvc` or `type: vct` and `mode: smb`. + +::: + +--- + +## `server` + +Define the nfs server + +| | | +| ---------- | --------------------------------- | +| Key | `persistence.$name.static.server` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + smb-vol: + type: pvc + static: + server: /server +``` + +--- + +## `share` + +Define the nfs export share path + +| | | +| ---------- | -------------------------------- | +| Key | `persistence.$name.static.share` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + smb-vol: + type: pvc + static: + share: share +``` + +--- + +## `user` + +Define the smb user + +| | | +| ---------- | ------------------------------- | +| Key | `persistence.$name.static.user` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +persistence: + smb-vol: + type: pvc + static: + user: user +``` + +--- + +## `password` + +Define the smb password + +| | | +| ---------- | ----------------------------------- | +| Key | `persistence.$name.static.password` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +persistence: + smb-vol: + type: pvc + static: + password: password +``` + +--- + +## `domain` + +Define the smb domain + +| | | +| ---------- | --------------------------------- | +| Key | `persistence.$name.static.domain` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +persistence: + smb-vol: + type: pvc + static: + domain: domain +``` + +--- + +## Full Examples + +```yaml +persistence: + smb-vol: + type: pvc + static: + mode: smb + user: user + password: password + domain: domain + share: share + server: /server +``` diff --git a/charts/library/common/docs/persistence/secret.md b/charts/library/common/docs/persistence/secret.md new file mode 100644 index 00000000000..145321272ef --- /dev/null +++ b/charts/library/common/docs/persistence/secret.md @@ -0,0 +1,203 @@ +--- +title: Secret +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/persistence/secret#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.persistence.$name` + +:::tip + +- See available persistence keys [here](/truecharts-common/persistence). +- This options apply only when `type: secret`. + +::: + +--- + +## `objectName` + +Define the secret name. + +| | | +| ---------- | ------------------------------ | +| Key | `persistence.$name.objectName` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + secret-vol: + objectName: secret-name +``` + +--- + +## `expandObjectName` + +Whether to expand (adding the fullname as prefix) the secret name. + +| | | +| ---------- | ------------------------------------ | +| Key | `persistence.$name.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `true` | + +Example + +```yaml +persistence: + secret-vol: + expandObjectName: false +``` + +--- + +## `optional` + +Whether the secret should be required or not. + +| | | +| ---------- | ---------------------------- | +| Key | `persistence.$name.optional` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +persistence: + secret-vol: + optional: false +``` + +--- + +## `defaultMode` + +Define the defaultMode (must be a string in format of "0777"). + +| | | +| ---------- | ------------------------------- | +| Key | `persistence.$name.defaultMode` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + secret-vol: + defaultMode: "0777" +``` + +--- + +## `items` + +Define a list of items for secret. + +| | | +| ---------- | ------------------------- | +| Key | `persistence.$name.items` | +| Type | `list` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +persistence: + secret-vol: + items: + - key: key1 + path: path1 + - key: key2 + path: path2 +``` + +--- + +### `items.key` + +Define the key of the secret. + +| | | +| ---------- | ------------------------------- | +| Key | `persistence.$name.items[].key` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + secret-vol: + items: + - key: key1 + path: path1 +``` + +--- + +### `items.path` + +Define the path. + +| | | +| ---------- | -------------------------------- | +| Key | `persistence.$name.items[].path` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +persistence: + secret-vol: + items: + - key: key1 + path: path1 +``` + +--- + +## Full Examples + +```yaml +persistence: + secret-vol: + enabled: true + type: secret + objectName: secret-name + expandObjectName: false + optional: false + defaultMode: "0777" + items: + - key: key1 + path: path1 + - key: key2 + path: path2 +``` diff --git a/charts/library/common/docs/podDisruptionBudget.md b/charts/library/common/docs/podDisruptionBudget.md new file mode 100644 index 00000000000..c39e2165820 --- /dev/null +++ b/charts/library/common/docs/podDisruptionBudget.md @@ -0,0 +1,258 @@ +--- +title: Pod Disruption Budget +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/poddisruptionbudget#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.podDisruptionBudget` + +## Naming scheme + +- `$FullName-$podDisruptionBudgetName` (release-name-chart-name-podDisruptionBudgetName) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `podDisruptionBudget` + +Create Pod Disruption Budget objects + +| | | +| ---------- | --------------------- | +| Key | `podDisruptionBudget` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +podDisruptionBudget: {} +``` + +--- + +### `$name` + +Define Pod Disruption Budget + +:::note + +At least one of the following keys must be defined + +[`minAvailable`](/truecharts-common/poddisruptionbudget#minavailable), [`maxUnavailable`](/truecharts-common/poddisruptionbudget#maxunavailable) + +::: + +| | | +| ---------- | --------------------------- | +| Key | `podDisruptionBudget.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +podDisruptionBudget: + pdb-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the Pod Disruption Budget + +| | | +| ---------- | ----------------------------------- | +| Key | `podDisruptionBudget.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +podDisruptionBudget: + pdb-name: + enabled: true +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | ------------------------------------- | +| Key | `podDisruptionBudget.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +podDisruptionBudget: + pdb-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Additional labels for Pod Disruption Budget + +| | | +| ---------- | ---------------------------------- | +| Key | `podDisruptionBudget.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +podDisruptionBudget: + pdb-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Additional annotations for Pod Disruption Budget + +| | | +| ---------- | --------------------------------------- | +| Key | `podDisruptionBudget.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +podDisruptionBudget: + pdb-name: + annotations: + key: value +``` + +--- + +#### `minAvailable` + +Define the minAvailable. + +| | | +| ---------- | ---------------------------------------- | +| Key | `podDisruptionBudget.$name.minAvailable` | +| Type | `int` or `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +podDisruptionBudget: + pdb-name: + minAvailable: 1 +``` + +--- + +#### `maxUnavailable` + +Define the maxUnavailable. + +| | | +| ---------- | ------------------------------------------ | +| Key | `podDisruptionBudget.$name.maxUnavailable` | +| Type | `int` or `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +podDisruptionBudget: + pdb-name: + maxUnavailable: 1 +``` + +--- + +#### `unhealthyPodEvictionPolicy` + +Define the unhealthyPodEvictionPolicy + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `podDisruptionBudget.$name.unhealthyPodEvictionPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `IfHealthyBudget` +- `AlwaysAllow` + +Example + +```yaml +podDisruptionBudget: + pdb-name: + unhealthyPodEvictionPolicy: IfHealthyBudget +``` + +--- + +## Full Examples + +```yaml +podDisruptionBudget: + pdb-name: + enabled: true + labels: + key: value + keytpl: "{{ .Values.some.value }}" + annotations: + key: value + keytpl: "{{ .Values.some.value }}" + minAvailable: 1 + maxUnavailable: 1 + unhealthyPodEvictionPolicy: IfHealthyBudget + + other-pdb-name: + enabled: true + namespace: some-namespace + minAvailable: 1 +``` diff --git a/charts/library/common/docs/podOptions.md b/charts/library/common/docs/podOptions.md new file mode 100644 index 00000000000..dbc039569eb --- /dev/null +++ b/charts/library/common/docs/podOptions.md @@ -0,0 +1,325 @@ +--- +title: Pod Options +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/podoptions#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.podOptions` + +## Defaults + +```yaml +podOptions: + enableServiceLinks: false + hostNetwork: false + hostPID: false + hostIPC: false + hostUsers: false + shareProcessNamespace: false + restartPolicy: Always + dnsPolicy: ClusterFirst + dnsConfig: + options: + - name: ndots + value: "1" + hostAliases: [] + nodeSelector: + kubernetes.io/arch: "amd64" + defaultSpread: true + topologySpreadConstraints: [] + tolerations: [] + schedulerName: "" + priorityClassName: "" + runtimeClassName: "" + automountServiceAccountToken: false + terminationGracePeriodSeconds: 60 +``` + +--- + +## `enableServiceLinks` + +See [Enable Service Links](/truecharts-common/workload#enableservicelinks) + +Default + +```yaml +podOptions: + enableServiceLinks: false +``` + +--- + +## `hostNetwork` + +See [Host Network](/truecharts-common/workload#hostnetwork) + +Default + +```yaml +podOptions: + hostNetwork: false +``` + +--- + +## `hostPID` + +See [Host PID](/truecharts-common/workload#hostpid) + +Default + +```yaml +podOptions: + hostPID: false +``` + +--- + +## `hostIPC` + +See [Host IPC](/truecharts-common/workload#hostipc) + +Default + +```yaml +podOptions: + hostIPC: false +``` + +--- + +## `hostUsers` + +See [Host Users](/truecharts-common/workload#hostusers) + +Default + +```yaml +podOptions: + hostUsers: false +``` + +--- + +## `shareProcessNamespace` + +See [Share Process Namespace](/truecharts-common/workload#shareprocessnamespace) + +Default + +```yaml +podOptions: + shareProcessNamespace: false +``` + +--- + +## `restartPolicy` + +See [Restart Policy](/truecharts-common/workload#restartpolicy) + +Default + +```yaml +podOptions: + restartPolicy: Always +``` + +--- + +## `dnsPolicy` + +See [DNS Policy](/truecharts-common/workload#dnspolicy) + +Default + +```yaml +podOptions: + dnsPolicy: ClusterFirst +``` + +--- + +## `dnsConfig` + +See [DNS Config](/truecharts-common/workload#dnsconfig) + +Default + +```yaml +podOptions: + dnsConfig: + options: + - name: ndots + value: "1" +``` + +--- + +## `hostAliases` + +See [Host Aliases](/truecharts-common/workload#hostaliases) + +Default + +```yaml +podOptions: + hostAliases: [] +``` + +--- + +## `nodeSelector` + +See [Node Selector](/truecharts-common/workload#nodeselector) + +Default + +```yaml +podOptions: + nodeSelector: + kubernetes.io/arch: "amd64" +``` + +--- + +## `defaultSpread` + +Sets some default topology spread constraints for good spread of pods across nodes. + +Default + +```yaml +podOptions: + defaultSpread: true +``` + +--- + +## `topologySpreadConstraints` + +See [Topology Spread Constraints](/truecharts-common/workload#topologyspreadconstraints) + +Default + +```yaml +podOptions: + topologySpreadConstraints: [] +``` + +--- + +## `tolerations` + +See [Tolerations](/truecharts-common/workload#tolerations) + +Default + +```yaml +podOptions: + tolerations: [] +``` + +--- + +## `schedulerName` + +See [Scheduler Name](/truecharts-common/workload#schedulername) + +Default + +```yaml +podOptions: + schedulerName: "" +``` + +--- + +## `priorityClassName` + +See [Priority Class Name](/truecharts-common/workload#priorityclassname) + +Default + +```yaml +podOptions: + priorityClassName: "" +``` + +--- + +## `runtimeClassName` + +See [Runtime Class Name](/truecharts-common/workload#runtimeclassname) + +Default + +```yaml +podOptions: + runtimeClassName: "" +``` + +--- + +## `automountServiceAccountToken` + +See [Automount Service Account Token](/truecharts-common/workload#automountserviceaccounttoken) + +Default + +```yaml +podOptions: + automountServiceAccountToken: false +``` + +--- + +## `terminationGracePeriodSeconds` + +See [Termination Grace Period Seconds](/truecharts-common/workload#terminationgraceperiodseconds) + +Default + +```yaml +podOptions: + terminationGracePeriodSeconds: 60 +``` + +--- + +## Full Examples + +```yaml +podOptions: + enableServiceLinks: false + hostNetwork: false + hostPID: false + hostIPC: false + hostUsers: false + shareProcessNamespace: false + restartPolicy: Always + dnsPolicy: ClusterFirst + dnsConfig: + options: + - name: ndots + value: "1" + hostAliases: [] + nodeSelector: + kubernetes.io/arch: "amd64" + defaultSpread: true + topologySpreadConstraints: [] + tolerations: [] + schedulerName: "" + priorityClassName: "" + runtimeClassName: "" + automountServiceAccountToken: false + terminationGracePeriodSeconds: 60 +``` diff --git a/charts/library/common/docs/priorityClass.md b/charts/library/common/docs/priorityClass.md new file mode 100644 index 00000000000..8dcea8a353f --- /dev/null +++ b/charts/library/common/docs/priorityClass.md @@ -0,0 +1,262 @@ +--- +title: Priority Class +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/priorityclass#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.priorityClass` + +## Naming scheme + +- `$FullName-$PriorityClassName` (release-name-chart-name-priorityClassName) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `priorityClass` + +Define priority classes + +| | | +| ---------- | --------------- | +| Key | `priorityClass` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +priorityClass: {} +``` + +--- + +### `$name` + +Define priority class + +| | | +| ---------- | --------------------- | +| Key | `priorityClass.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +priorityClass: + priority-class-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the priority class + +| | | +| ---------- | ----------------------------- | +| Key | `priorityClass.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +priorityClass: + priority-class-name: + enabled: true +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | ------------------------------- | +| Key | `priorityClass.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `""` | + +Example + +```yaml +priorityClass: + priority-class-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Additional labels for priority class + +| | | +| ---------- | ---------------------------- | +| Key | `priorityClass.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +priorityClass: + priority-class-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Additional annotations for priority class + +| | | +| ---------- | --------------------------------- | +| Key | `priorityClass.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +priorityClass: + priority-class-name: + annotations: + key: value +``` + +--- + +#### `value` + +Define the value for this priority class + +| | | +| ---------- | --------------------------- | +| Key | `priorityClass.$name.value` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `1000000` | + +Example + +```yaml +priorityClass: + priority-class-name: + value: 1000000 +``` + +--- + +#### `globalDefault` + +Define if this priority class is the global default + +| | | +| ---------- | ----------------------------------- | +| Key | `priorityClass.$name.globalDefault` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +priorityClass: + priority-class-name: + globalDefault: true +``` + +--- + +#### `description` + +Define the description for this priority class + +| | | +| ---------- | --------------------------------- | +| Key | `priorityClass.$name.description` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `No description given` | + +Example + +```yaml +priorityClass: + priority-class-name: + description: "some description" +``` + +--- + +#### `preemptionPolicy` + +Define the preemption policy for this priority class + +| | | +| ---------- | -------------------------------------- | +| Key | `priorityClass.$name.preemptionPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `Immediate` | + +Valid values are: + +- `PreemptLowerPriority` +- `Never` + +Example + +```yaml +priorityClass: + priority-class-name: + preemptionPolicy: PreemptLowerPriority +``` + +--- + +## Full Examples + +```yaml +priorityClass: + example: + enabled: true + value: 1000000 + preemptionPolicy: PreemptLowerPriority + globalDefault: false + description: "some description" +``` diff --git a/charts/library/common/docs/rbac.md b/charts/library/common/docs/rbac.md new file mode 100644 index 00000000000..9699960c475 --- /dev/null +++ b/charts/library/common/docs/rbac.md @@ -0,0 +1,519 @@ +--- +title: RBAC +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/rbac#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.rbac` + +## Naming scheme + +- Primary: `$FullName` (release-name-chart-name) +- Non-Primary: `$FullName-$RBACName` (release-name-chart-name-RBACName) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## Target Selector + +- `allServiceAccounts` (bool): Whether to assign all service accounts or not to the (Cluster)RoleBinding +- `serviceAccounts` (list): Define the service account(s) to assign the (Cluster)RoleBinding +- `serviceAccounts` (empty): Assign the primary service account to the primary rbac + +--- + +## `rbac` + +Create rbac objects + +| | | +| ---------- | ------ | +| Key | `rbac` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +rbac: {} +``` + +--- + +### `$name` + +Define rbac + +| | | +| ---------- | ------------ | +| Key | `rbac.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +rbac: + rbac-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the rbac + +| | | +| ---------- | -------------------- | +| Key | `rbac.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +rbac: + rbac-name: + enabled: true +``` + +--- + +#### `primary` + +Sets the rbac as primary + +| | | +| ---------- | -------------------- | +| Key | `rbac.$name.primary` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +rbac: + rbac-name: + primary: true +``` + +--- + +#### `namespace` + +Define the namespace for this object (Only when clusterWide is false) + +| | | +| ---------- | ---------------------- | +| Key | `rbac.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +rbac: + rbac-name: + namespace: some-namespace +``` + +--- + +#### `clusterWide` + +Sets the rbac as cluster wide (ClusterRole, ClusterRoleBinding) + +| | | +| ---------- | ------------------------ | +| Key | `rbac.$name.clusterWide` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +rbac: + rbac-name: + clusterWide: true +``` + +--- + +#### `labels` + +Additional labels for rbac + +| | | +| ---------- | ------------------- | +| Key | `rbac.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +rbac: + rbac-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Additional annotations for rbac + +| | | +| ---------- | ------------------------ | +| Key | `rbac.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +rbac: + rbac-name: + annotations: + key: value +``` + +--- + +#### `allServiceAccounts` + +Whether to assign all service accounts or not to the (Cluster)RoleBinding + +| | | +| ---------- | ------------------------------- | +| Key | `rbac.$name.allServiceAccounts` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +rbac: + rbac-name: + allServiceAccounts: true +``` + +--- + +#### `serviceAccounts` + +Define the service account(s) to assign the (Cluster)RoleBinding + +| | | +| ---------- | ---------------------------- | +| Key | `rbac.$name.serviceAccounts` | +| Type | `list` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +rbac: + rbac-name: + serviceAccounts: + - service-account-name +``` + +--- + +#### `rules` + +Define the `rules` for the (Cluster)Role + +| | | +| ---------- | ------------------ | +| Key | `rbac.$name.rules` | +| Type | `list` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +rbac: + rbac-name: + rules: [] +``` + +--- + +##### `rules[].apiGroups` + +Define the `apiGroups` list for the `rules` for the (Cluster)Role + +| | | +| ---------- | ------------------------------ | +| Key | `rbac.$name.rules[].apiGroups` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +rbac: + rbac-name: + rules: + apiGroups: + - "" + - extensions +``` + +--- + +##### `rules[].resources` + +Define the `resources` list for the `rules` for the (Cluster)Role + +| | | +| ---------- | ------------------------------ | +| Key | `rbac.$name.rules[].resources` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +rbac: + rbac-name: + rules: + resources: + - pods +``` + +--- + +##### `rules[].resourceNames` + +Define the `resourceNames` list for the `rules` for the (Cluster)Role + +| | | +| ---------- | ---------------------------------- | +| Key | `rbac.$name.rules[].resourceNames` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +rbac: + rbac-name: + rules: + resourceNames: + - my-pod +``` + +--- + +##### `rules[].verbs` + +Define the `verbs` list for the `rules` for the (Cluster)Role + +| | | +| ---------- | -------------------------- | +| Key | `rbac.$name.rules[].verbs` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +rbac: + rbac-name: + rules: + verbs: + - get + - list + - watch +``` + +--- + +#### `subjects` + +Define `subjects` for (Cluster)RoleBinding + +| | | +| ---------- | --------------------- | +| Key | `rbac.$name.subjects` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +rbac: + rbac-name: + rules: + subjects: [] +``` + +--- + +##### `subjects[].kind` + +Define the `kind` of `subjects` entry + +| | | +| ---------- | ---------------------------- | +| Key | `rbac.$name.subjects[].kind` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +rbac: + rbac-name: + subjects: + - kind: my-kind +``` + +--- + +##### `subjects[].name` + +Define the `name` of `subjects` entry + +| | | +| ---------- | ---------------------------- | +| Key | `rbac.$name.subjects[].name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +rbac: + rbac-name: + subjects: + - name: my-name +``` + +--- + +##### `subjects[].apiGroup` + +Define the `apiGroup` of `subjects` entry + +| | | +| ---------- | -------------------------------- | +| Key | `rbac.$name.subjects[].apiGroup` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +rbac: + rbac-name: + subjects: + - apiGroup: my-api-group +``` + +--- + +## Full Examples + +```yaml +rbac: + rbac-name: + enabled: true + primary: true + clusterWide: true + labels: + key: value + keytpl: "{{ .Values.some.value }}" + annotations: + key: value + keytpl: "{{ .Values.some.value }}" + allServiceAccounts: true + rules: + - apiGroups: + - "" + resources: + - "{{ .Values.some.value }}" + resourceNames: + - "{{ .Values.some.value }}" + verbs: + - get + - "{{ .Values.some.value }}" + - watch + subjects: + - kind: my-kind + name: "{{ .Values.some.value }}" + apiGroup: my-api-group + + other-rbac-name: + enabled: true + namespace: some-namespace + serviceAccounts: + - service-account-name + rules: + - apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch + subjects: + - kind: my-kind + name: my-name + apiGroup: my-api-group +``` diff --git a/charts/library/common/docs/resources.md b/charts/library/common/docs/resources.md new file mode 100644 index 00000000000..b9eac2e469f --- /dev/null +++ b/charts/library/common/docs/resources.md @@ -0,0 +1,150 @@ +--- +title: Resources +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/resources#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.resources` + +## Defaults + +```yaml +resources: + limits: + cpu: 4000m + memory: 8Gi + requests: + cpu: 10m + memory: 50Mi +``` + +--- + +## `resources.limits` + +See [Resources Limits](/truecharts-common/container/resources#resourceslimits) + +Default + +```yaml +resources: + limits: + cpu: 4000m + memory: 8Gi +``` + +--- + +### `resources.limits.cpu` + +See [Resources Limits CPU](/truecharts-common/container/resources#resourceslimitscpu) + +Default + +```yaml +resources: + limits: + cpu: 4000m +``` + +--- + +### `resources.limits.memory` + +See [Resources Limits Memory](/truecharts-common/container/resources#resourceslimitsmemory) + +Default + +```yaml +resources: + limits: + memory: 8Gi +``` + +--- + +### `resources.requests."gpu.intel.com/i915"` + +See [Resources Requests GPU](/truecharts-common/container/resources#resourceslimitsgpuintelcomi915) + +Default: `not set` + +--- + +#### `resources.limits."nvidia.com/gpu"` + +See [Resources Limits GPU](/truecharts-common/container/resources#resourceslimitsnvidiacomgpu) + +Default: `not set` + +--- + +#### `resources.limits."amd.com/gpu"` + +See [Resources Limits GPU](/truecharts-common/container/resources#resourceslimitsamdcomgpu) + +Default: `not set` + +--- + +## `resources.requests` + +See [Resources Requests](/truecharts-common/container/resources#resourcesrequests) + +Default + +```yaml +resources: + requests: + cpu: 10m + memory: 50Mi +``` + +--- + +### `resources.requests.cpu` + +See [Resources Requests CPU](/truecharts-common/container/resources#resourcesrequestscpu) + +Default + +```yaml +resources: + requests: + cpu: 10m +``` + +--- + +### `resources.requests.memory` + +See [Resources Requests Memory](/truecharts-common/container/resources#resourcesrequestsmemory) + +Default + +```yaml +resources: + requests: + memory: 50Mi +``` + +--- + +## Full Examples + +```yaml +resources: + limits: + cpu: 4000m + memory: 8Gi + requests: + cpu: 10m + memory: 50Mi +``` diff --git a/charts/library/common/docs/secret.md b/charts/library/common/docs/secret.md new file mode 100644 index 00000000000..db90c94fb38 --- /dev/null +++ b/charts/library/common/docs/secret.md @@ -0,0 +1,225 @@ +--- +title: Secret +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/secret#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.secret` + +## Naming scheme + +- `$FullName-$SecretName` (release-name-chart-name-secret-name) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `secret` + +Create Secret objects + +| | | +| ---------- | -------- | +| Key | `secret` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +secret: {} +``` + +--- + +### `$name` + +Define Secret + +| | | +| ---------- | -------------- | +| Key | `secret.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +secret: + secret-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the Secret + +| | | +| ---------- | ---------------------- | +| Key | `secret.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +secret: + secret-name: + enabled: true +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | ------------------------ | +| Key | `secret.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +secret: + secret-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Additional labels for secret + +| | | +| ---------- | --------------------- | +| Key | `secret.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +secret: + secret-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Additional annotations for secret + +| | | +| ---------- | -------------------------- | +| Key | `secret.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +secret: + secret-name: + annotations: + key: value +``` + +--- + +#### `type` + +Define the type of the secret + +| | | +| ---------- | ------------------- | +| Key | `secret.$name.type` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `Opaque` | + +Example + +```yaml +secret: + secret-name: + type: some-custom-type +``` + +--- + +#### `data` + +Define the data of the secret + +| | | +| ---------- | ------------------- | +| Key | `secret.$name.data` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Example | `{}` | + +```yaml +secret: + secret-name: + data: + key: value +``` + +--- + +## Full Examples + +```yaml +secret: + secret-name: + enabled: true + type: CustomSecretType + labels: + key: value + keytpl: "{{ .Values.some.value }}" + annotations: + key: value + keytpl: "{{ .Values.some.value }}" + data: + key: value + + other-secret-name: + enabled: true + namespace: some-namespace + data: + key: | + multi line + text value +``` diff --git a/charts/library/common/docs/securityContext.md b/charts/library/common/docs/securityContext.md new file mode 100644 index 00000000000..cdd4cfd456a --- /dev/null +++ b/charts/library/common/docs/securityContext.md @@ -0,0 +1,377 @@ +--- +title: Security Context +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/securitycontext#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.securityContext` + +## Defaults + +```yaml +securityContext: + container: + PUID: 568 + UMASK: "002" + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + privileged: false + seccompProfile: + type: RuntimeDefault + capabilities: + add: [] + drop: + - ALL + pod: + fsGroup: 568 + fsGroupChangePolicy: OnRootMismatch + supplementalGroups: [] + sysctls: [] +``` + +--- + +## `securityContext.container` + +Defines the security context for the container. Can be overridden at container level. + +See [Container Security Context](/truecharts-common/container/securitycontext#securitycontext) + +Default + +```yaml +securityContext: + container: + PUID: 568 + UMASK: "002" + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + privileged: false + seccompProfile: + type: RuntimeDefault + capabilities: + add: [] + drop: + - ALL +``` + +--- + +### `securityContext.container.PUID` + +See [Container Fixed Env PUID](/truecharts-common/container/fixedenv#fixedenvpuid) + +Default + +```yaml +securityContext: + container: + PUID: 568 +``` + +--- + +### `securityContext.container.UMASK` + +See [Container Fixed Env UMASK](/truecharts-common/container/fixedenv#fixedenvumask) + +Default + +```yaml +securityContext: + container: + UMASK: "002" +``` + +--- + +### `securityContext.container.runAsNonRoot` + +See [Container Run As Non Root](/truecharts-common/container/securitycontext#securitycontextrunasnonroot) + +Default + +```yaml +securityContext: + container: + runAsNonRoot: true +``` + +--- + +### `securityContext.container.runAsUser` + +See [Container Run As User](/truecharts-common/container/securitycontext#securitycontextrunasuser) + +Default + +```yaml +securityContext: + container: + runAsUser: 568 +``` + +--- + +### `securityContext.container.runAsGroup` + +See [Container Run As Group](/truecharts-common/container/securitycontext#securitycontextrunasgroup) + +Default + +```yaml +securityContext: + container: + runAsGroup: 568 +``` + +--- + +### `securityContext.container.readOnlyRootFilesystem` + +See [Container Read Only Root Filesystem](/truecharts-common/container/securitycontext#securitycontextreadonlyrootfilesystem) + +Default + +```yaml +securityContext: + container: + readOnlyRootFilesystem: true +``` + +--- + +### `securityContext.container.allowPrivilegeEscalation` + +See [Container Allow Privilege Escalation](/truecharts-common/container/securitycontext#securitycontextallowprivilegeescalation) + +Default + +```yaml +securityContext: + container: + allowPrivilegeEscalation: false +``` + +--- + +### `securityContext.container.privileged` + +See [Container Privileged](/truecharts-common/container/securitycontext#securitycontextprivileged) + +Default + +```yaml +securityContext: + container: + privileged: false +``` + +--- + +### `securityContext.container.seccompProfile` + +See [Container Seccomp Profile](/truecharts-common/container/securitycontext#securitycontextseccompprofile) + +Default + +```yaml +securityContext: + container: + seccompProfile: + type: RuntimeDefault +``` + +--- + +#### `securityContext.container.seccompProfile.type` + +See [Container Seccomp Profile Type](/truecharts-common/container/securitycontext#securitycontextseccompprofiletype) + +Default + +```yaml +securityContext: + container: + seccompProfile: + type: RuntimeDefault +``` + +--- + +#### `securityContext.container.seccompProfile.profile` + +See [Container Seccomp Profile Profile](/truecharts-common/container/securitycontext#securitycontextseccompprofileprofile) + +Default + +```yaml +securityContext: + container: + seccompProfile: + profile: "" +``` + +### `securityContext.container.capabilities` + +See [Container Capabilities](/truecharts-common/container/securitycontext#securitycontextcapabilities) + +Default + +```yaml +securityContext: + container: + capabilities: + add: [] + drop: + - ALL +``` + +#### `securityContext.container.capabilities.add` + +See [Container Capabilities Add](/truecharts-common/container/securitycontext#securitycontextcapabilitiesadd) + +Default + +```yaml +securityContext: + container: + capabilities: + add: [] +``` + +#### `securityContext.container.capabilities.drop` + +See [Container Capabilities Drop](/truecharts-common/container/securitycontext#securitycontextcapabilitiesdrop) + +Default + +```yaml +securityContext: + container: + capabilities: + drop: + - ALL +``` + +--- + +## `securityContext.pod` + +Defines the security context for the pod. Can be overridden at pod level. + +See [Pod Security Context](/truecharts-common/workload#securitycontext) + +Default + +```yaml +securityContext: + pod: + fsGroup: 568 + fsGroupChangePolicy: OnRootMismatch + supplementalGroups: [] + sysctls: [] +``` + +--- + +### `securityContext.pod.fsGroup` + +See [Pod FS Group](/truecharts-common/workload#securitycontextfsgroup) + +Default + +```yaml +securityContext: + pod: + fsGroup: 568 +``` + +--- + +### `securityContext.pod.fsGroupChangePolicy` + +See [Pod FS Group Change Policy](/truecharts-common/workload#securitycontextfsgroupchangepolicy) + +Default + +```yaml +securityContext: + pod: + fsGroupChangePolicy: OnRootMismatch +``` + +--- + +### `securityContext.pod.supplementalGroups` + +See [Pod Supplemental Groups](/truecharts-common/workload#securitycontextsupplementalgroups) + +Default + +```yaml +securityContext: + pod: + supplementalGroups: [] +``` + +--- + +### `securityContext.pod.sysctls` + +See [Pod Sysctls](/truecharts-common/workload#securitycontextsysctls) + +Default + +```yaml +securityContext: + pod: + sysctls: [] +``` + +--- + +## Full Examples + +```yaml +securityContext: + container: + PUID: 568 + UMASK: "002" + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + privileged: false + seccompProfile: + type: RuntimeDefault + capabilities: + add: + - SYS_ADMIN + - SYS_PTRACE + drop: + - ALL + pod: + fsGroup: 568 + fsGroupChangePolicy: OnRootMismatch + supplementalGroups: + - 568 + - 1000 + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: "0" +``` diff --git a/charts/library/common/docs/service/ClusterIP.md b/charts/library/common/docs/service/ClusterIP.md new file mode 100644 index 00000000000..3a69d2664b7 --- /dev/null +++ b/charts/library/common/docs/service/ClusterIP.md @@ -0,0 +1,54 @@ +--- +title: ClusterIP +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/service/clusterip#full-examples) section for complete examples. +- See the [Service](/truecharts-common/service) documentation for more information + +::: + +## Appears in + +- `.Values.service.$name` + +:::tip + +- See available service keys [here](/truecharts-common/service). +- This options apply only when `type: ClusterIP`. + +::: + +--- + +## Full Examples + +```yaml +service: + service-clusterip: + enabled: true + primary: true + publishNotReadyAddresses: true + clusterIP: 172.16.20.233 + publishNotReadyAddresses: true + ipFamilyPolicy: SingleStack + ipFamilies: + - IPv4 + externalIPs: + - 10.200.230.34 + sessionAffinity: ClientIP + sessionAffinityConfig: + clientIP: + timeoutSeconds: 86400 + targetSelector: pod-name + ports: + port-name: + enabled: true + primary: true + targetSelector: container-name + port: 80 + protocol: http + targetPort: 8080 +``` diff --git a/charts/library/common/docs/service/ExternalIP.md b/charts/library/common/docs/service/ExternalIP.md new file mode 100644 index 00000000000..d787a178959 --- /dev/null +++ b/charts/library/common/docs/service/ExternalIP.md @@ -0,0 +1,146 @@ +--- +title: ExternalIP +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/service/externalip#full-examples) section for complete examples. +- See the [Service](/truecharts-common/service) documentation for more information + +::: + +## Appears in + +- `.Values.service.$name` + +:::tip + +- See available service keys [here](/truecharts-common/service). +- This options apply only when `type: ExternalIP`. + +::: + +--- + +## `externalIP` + +Configure External IP type + +| | | +| ---------- | -------------------------- | +| Key | `service.$name.externalIP` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +service: + some-service: + externalIP: 1.2.3.4 +``` + +--- + +## `useSlice` + +Define whether to use `EndpointSlice` or `Endpoint` + +| | | +| ---------- | ------------------------ | +| Key | `service.$name.useSlice` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +service: + some-service: + useSlice: false +``` + +--- + +## `addressType` + +Define the addressType for External IP + +| | | +| ---------- | --------------------------- | +| Key | `service.$name.addressType` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `IPv4` | + +Valid Values: + +- `IPv4` +- `IPv6` +- `FQDN` + +Example + +```yaml +service: + some-service: + addressType: IPv6 +``` + +--- + +## `appProtocol` + +Define the appProtocol for External IP + +| | | +| ---------- | --------------------------- | +| Key | `service.$name.appProtocol` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +service: + some-service: + appProtocol: http +``` + +--- + +## Full Examples + +```yaml +service: + # Special type + service-externalip: + enabled: true + primary: true + type: ExternalIP + useSlice: true + externalIP: 1.1.1.1 + addressType: IPv4 + appProtocol: http + publishNotReadyAddresses: true + externalIPs: + - 10.200.230.34 + sessionAffinity: ClientIP + externalTrafficPolicy: Cluster + ports: + port-name: + enabled: true + primary: true + targetSelector: container-name + port: 80 + targetPort: 8080 + protocol: HTTP +``` diff --git a/charts/library/common/docs/service/ExternalName.md b/charts/library/common/docs/service/ExternalName.md new file mode 100644 index 00000000000..93a2937602f --- /dev/null +++ b/charts/library/common/docs/service/ExternalName.md @@ -0,0 +1,74 @@ +--- +title: ExternalName +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/service/externalname#full-examples) section for complete examples. +- See the [Service](/truecharts-common/service) documentation for more information + +::: + +## Appears in + +- `.Values.service.$name` + +:::tip + +- See available service keys [here](/truecharts-common/service). +- This options apply only when `type: ExternalName`. + +::: + +--- + +## `externalName` + +Configure ExternalName type + +| | | +| ---------- | ---------------------------- | +| Key | `service.$name.externalName` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +service: + some-service: + externalName: external-name +``` + +--- + +## Full Examples + +```yaml +service: + # Special type + service-external-name: + enabled: true + primary: true + type: ExternalName + externalName: external-name + clusterIP: 172.16.20.233 + publishNotReadyAddresses: true + externalIPs: + - 10.200.230.34 + sessionAffinity: ClientIP + sessionAffinityConfig: + clientIP: + timeoutSeconds: 86400 + externalTrafficPolicy: Cluster + ports: + port-name: + enabled: true + primary: true + targetSelector: container-name + port: 80 + protocol: HTTP +``` diff --git a/charts/library/common/docs/service/LoadBalancer.md b/charts/library/common/docs/service/LoadBalancer.md new file mode 100644 index 00000000000..b23528c222c --- /dev/null +++ b/charts/library/common/docs/service/LoadBalancer.md @@ -0,0 +1,147 @@ +--- +title: LoadBalancer +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/service/loadbalancer#full-examples) section for complete examples. +- See the [Service](/truecharts-common/service) documentation for more information + +::: + +## Appears in + +- `.Values.service.$name` + +:::tip + +- See available service keys [here](/truecharts-common/service). +- This options apply only when `type: LoadBalancer`. + +::: + +--- + +## `sharedKey` + +Sets the shared key in `metallb.io/allow-shared-ip` **MetalLB** Annotation + +| | | +| ---------- | ------------------------- | +| Key | `service.$name.sharedKey` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `$FullName` | + +Example + +```yaml +service: + some-service: + sharedKey: custom-shared-key +``` + +## `loadBalancerIP` + +Define the load balancer IP, sets the `metallb.io/loadBalancerIPs` **MetalLB** annotation. Mutually exclusive with `loadBalancerIPs` + +| | | +| ---------- | ------------------------------ | +| Key | `service.$name.loadBalancerIP` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +service: + some-service: + loadBalancerIP: 1.2.3.4 +``` + +## `loadBalancerIPs` + +Define the load balancer IPs, sets the `metallb.io/loadBalancerIPs` **MetalLB** annotation. Mutually exclusive with `loadBalancerIP` + +| | | +| ---------- | ------------------------------- | +| Key | `service.$name.loadBalancerIPs` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +service: + some-service: + loadBalancerIPs: + - 1.2.3.4 + - 5.6.7.8 +``` + +--- + +## `loadBalancerSourceRanges` + +Define the load balancer source ranges + +| | | +| ---------- | ---------------------------------------- | +| Key | `service.$name.loadBalancerSourceRanges` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +service: + some-service: + loadBalancerSourceRanges: + - 10.100.100.0/24 + - 10.100.200.0/24 +``` + +--- + +## Full Examples + +```yaml +service: + service-lb: + enabled: true + primary: true + type: LoadBalancer + loadBalancerIP: 10.100.100.2 + loadBalancerSourceRanges: + - 10.100.100.0/24 + clusterIP: 172.16.20.233 + sharedKey: custom-shared-key + publishNotReadyAddresses: true + ipFamilyPolicy: SingleStack + ipFamilies: + - IPv4 + externalIPs: + - 10.200.230.34 + sessionAffinity: ClientIP + sessionAffinityConfig: + clientIP: + timeoutSeconds: 86400 + externalTrafficPolicy: Cluster + targetSelector: pod-name + ports: + port-name: + enabled: true + primary: true + targetSelector: container-name + port: 80 + protocol: HTTP + targetPort: 8080 +``` diff --git a/charts/library/common/docs/service/NodePort.md b/charts/library/common/docs/service/NodePort.md new file mode 100644 index 00000000000..6b08617d28b --- /dev/null +++ b/charts/library/common/docs/service/NodePort.md @@ -0,0 +1,75 @@ +--- +title: NodePort +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/service/nodeport#full-examples) section for complete examples. +- See the [Service](/truecharts-common/service) documentation for more information + +::: + +## Appears in + +- `.Values.service.$name` + +:::tip + +- See available service keys [here](/truecharts-common/service). +- This options apply only when `type: NodePort`. + +::: + +--- + +## `ports.$port-name.nodePort` + +Define the node port that will be exposed on the node + +| | | +| ---------- | ----------------------------------------- | +| Key | `service.$name.ports.$port-name.nodePort` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | unset | + +Example + +```yaml +service: + some-service: + nodePort: 30080 +``` + +--- + +## Full Examples + +```yaml +service: + service-nodeport: + enabled: true + primary: true + type: NodePort + clusterIP: 172.16.20.233 + publishNotReadyAddresses: true + externalIPs: + - 10.200.230.34 + sessionAffinity: ClientIP + sessionAffinityConfig: + clientIP: + timeoutSeconds: 86400 + externalTrafficPolicy: Cluster + targetSelector: pod-name + ports: + port-name: + enabled: true + primary: true + targetSelector: container-name + port: 80 + protocol: http + targetPort: 8080 + nodePort: 30080 +``` diff --git a/charts/library/common/docs/service/index.md b/charts/library/common/docs/service/index.md new file mode 100644 index 00000000000..efaa2f70d59 --- /dev/null +++ b/charts/library/common/docs/service/index.md @@ -0,0 +1,539 @@ +--- +title: Service +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/service#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.service` + +## Naming scheme + +- Primary: `$FullName` (release-name-chart-name) +- Non-Primary: `$FullName-$ServiceName` (release-name-chart-name-ServiceName) + +:::tip + +Replace references to `$name` and `$port-name` with the actual name you want to use. + +::: + +--- + +## Target Selector + +- `targetSelector` (string): Define the pod to link the service +- `targetSelector` (empty): Assign the service to the primary pod + +--- + +## `service` + +Define service objects + +| | | +| ---------- | --------- | +| Key | `service` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +service: {} +``` + +--- + +### `$name` + +Define service + +| | | +| ---------- | --------------- | +| Key | `service.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +service: + service-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the service + +| | | +| ---------- | ----------------------- | +| Key | `service.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +service: + service-name: + enabled: true +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | ------------------------- | +| Key | `service.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only)` | +| Default | `""` | + +Example + +```yaml +service: + service-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Additional labels for service + +| | | +| ---------- | ---------------------- | +| Key | `service.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only)` | +| Default | `{}` | + +Example + +```yaml +service: + service-name: + labels: + some-label: some-value +``` + +--- + +#### `annotations` + +Additional annotations for service + +| | | +| ---------- | --------------------------- | +| Key | `service.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only)` | +| Default | `{}` | + +Example + +```yaml +service: + service-name: + annotations: + some-annotation: some-value +``` + +--- + +#### `type` + +Define the service type + +| | | +| ---------- | ---------------------------------------------------------------- | +| Key | `service.$name.type` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [here](/truecharts-common/fallbackdefaults#servicetype) | + +Valid Values: + +- [`ClusterIP`](/truecharts-common/service/clusterip) +- [`LoadBalancer`](/truecharts-common/service/loadbalancer) +- [`NodePort`](/truecharts-common/service/nodeport) +- [`ExternalName`](/truecharts-common/service/externalname) +- [`ExternalIP`](/truecharts-common/service/externalip) + +Example + +```yaml +service: + service-name: + type: ClusterIP +``` + +--- + +#### `expandObjectName` + +Whether to expand the object name (based on the [naming scheme](/truecharts-common/service#naming-scheme)) or not + +| | | +| ---------- | -------------------------------- | +| Key | `service.$name.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `true` | + +Example + +```yaml +service: + service-name: + expandObjectName: false +``` + +--- + +#### `clusterIP` + +Configure Cluster IP type + +| | | +| ---------- | ------------------------- | +| Key | `service.$name.clusterIP` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +service: + some-service: + clusterIP: 172.16.0.123 +``` + +--- + +#### `ipFamilyPolicy` + +Define the ipFamilyPolicy + +:::warning + +Does **not** apply to `type` of `ExternalName` or `ExternalIP` + +::: + +| | | +| ---------- | ------------------------------ | +| Key | `service.$name.ipFamilyPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `SingleStack` +- `PreferDualStack` +- `RequireDualStack` + +Example + +```yaml +service: + some-service: + ipFamilyPolicy: SingleStack +``` + +--- + +#### `ipFamilies` + +Define the ipFamilies + +:::warning + +Does **not** apply to `type` of `ExternalName` or `ExternalIP` + +::: + +| | | +| ---------- | -------------------------- | +| Key | `service.$name.ipFamilies` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +service: + some-service: + ipFamilies: + - IPv4 +``` + +--- + +#### `sessionAffinity` + +Define the session affinity (ClientIP, None) + +| | | +| ---------- | ------------------------------- | +| Key | `service.$name.sessionAffinity` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `ClientIP` +- `None` + +Example + +```yaml +service: + some-service: + sessionAffinity: ClientIP +``` + +--- + +#### `sessionAffinityConfig.clientIP.timeoutSeconds` + +Define the timeout for ClientIP session affinity (0-86400) + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `service.$name.sessionAffinityConfig.clientIP.timeoutSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `0` - `86400` + +Example + +```yaml +service: + some-service: + sessionAffinityConfig: + clientIP: + timeoutSeconds: 86400 +``` + +--- + +#### `externalIPs` + +Define externalIPs + +| | | +| ---------- | --------------------------- | +| Key | `service.$name.externalIPs` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +service: + some-service: + externalIPs: + - 1.2.3.4 + - 5.6.7.8 +``` + +--- + +#### `externalTrafficPolicy` + +Define the external traffic policy (Cluster, Local) + +:::warning + +Does **not** apply to `type` of `ClusterIP` + +::: + +| | | +| ---------- | ------------------------------------- | +| Key | `service.$name.externalTrafficPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `Cluster` +- `Local` + +Example + +```yaml +service: + some-service: + externalTrafficPolicy: Cluster +``` + +--- + +#### `publishNotReadyAddresses` + +Define whether to publishNotReadyAddresses or not + +| | | +| ---------- | ---------------------------------------- | +| Key | `service.$name.publishNotReadyAddresses` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +service: + service-name: + publishNotReadyAddresses: true +``` + +--- + +#### `targetSelector` + +Define the pod to link the service, by default will use the primary pod + +| | | +| ---------- | ------------------------------ | +| Key | `service.$name.targetSelector` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +service: + service-name: + targetSelector: some-pod +``` + +--- + +#### `ports` + +Define the ports of the service + +See [Ports](/truecharts-common/service/ports) + +| | | +| ---------- | --------------------- | +| Key | `service.$name.ports` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +service: + service-name: + ports: {} +``` + +--- + +#### `integrations` + +Define the integrations for this service + +| | | +| ---------- | ---------------------------- | +| Key | `service.$name.integrations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +service: + service-name: + integrations: {} +``` + +--- + +##### `integrations.traefik` + +Define the traefik integration for this service + +See more details in [Traefik Integration](/truecharts-common/service/integrations/traefik) + +| | | +| ---------- | ------------------------------------ | +| Key | `service.$name.integrations.traefik` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: {} +``` + +--- + +## Full Examples + +Full examples can be found under each service type + +- [ClusterIP](/truecharts-common/service/clusterip) +- [LoadBalancer](/truecharts-common/service/loadbalancer) +- [NodePort](/truecharts-common/service/nodeport) +- [ExternalName](/truecharts-common/service/externalname) +- [ExternalIP](/truecharts-common/service/externalip) diff --git a/charts/library/common/docs/service/integrations/traefik.md b/charts/library/common/docs/service/integrations/traefik.md new file mode 100644 index 00000000000..2206aa56ffd --- /dev/null +++ b/charts/library/common/docs/service/integrations/traefik.md @@ -0,0 +1,363 @@ +--- +title: Traefik Integration +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/service/integrations/traefik#full-examples) +section for complete examples. + +::: + +## Appears in + +- `.Values.service.$name.integration.traefik` + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `enabled` + +Enables or Disables the traefik integration + +| | | +| ---------- | -------------------------------------------- | +| Key | `service.$name.integrations.traefik.enabled` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + enabled: true +``` + +--- + +## `forceTLS` + +Force TLS when talking to the backend service + +:::note + +Adds the `traefik.ingress.kubernetes.io/service.serversscheme: "https"` annotation. + +It does that both with this set OR when there is a service with only https ports + +::: + +| | | +| ---------- | --------------------------------------------- | +| Key | `service.$name.integrations.traefik.forceTLS` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + forceTLS: true +``` + +--- + +## `insecureSkipVerify` + +Skip TLS verification when taling to an HTTPS backend service + +:::note + +Allows talking to HTTPS backend services which use self-signed certs. + +Alternatively you can set a [server name](/truecharts-common/service/integrations/traefik#servername) +and [root CAs](/truecharts-common/service/integrations/traefik#rootcas) to use when performing +TLS validation. + +::: + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `service.$name.integrations.traefik.insecureSkipVerify` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + insecureSkipVerify: false +``` + +--- + +## `serverName` + +Set the hostname to use when talking to a backend service + +| | | +| ---------- | ----------------------------------------------- | +| Key | `service.$name.integrations.traefik.serverName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | "" | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + serverName: "my.service.com" +``` + +--- + +## `rootCAs` + +List of kubernetes secrets (in the same namespace) containing certificate +authorities to use when performing TLS verification of the backend service. + +:::note + +The secrets must contain a key called `ca.crt`, `tls.crt` or `tls.ca` with the +value being the certificate authority. For more information refer to the +[official documentation](https://doc.traefik.io/traefik/reference/routing-configuration/kubernetes/crd/http/serverstransport/#serverstransport-rootcas) +and [this fixture](https://github.com/traefik/traefik/blob/6df82676aaf8186215086a1d9e934170fb5db13f/pkg/provider/kubernetes/crd/fixtures/with_servers_transport.yml). + +::: + +| | | +| ---------- | ----------------------------------------------- | +| Key | `service.$name.integrations.traefik.rootCAs` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + rootCAs: [] +``` + +--- + +### `rootCAs.secretRef` + +Define the secretRef + +| | | +| ---------- | ------------------------------------------------------------- | +| Key | `service.$name.integrations.traefik.rootCAs[].secretRef` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + rootCAs: + - secretRef: {} +``` + +--- + +#### `rootCAs.secretRef.name` + +Define the secret name + +:::note + +This will be automatically expanded to `fullname-secret-name`. +You can opt out of this by setting [`expandObjectName`](/truecharts-common/service/integrations/traefik#rootcassecretrefexpandobjectname) +to `false` + +::: + +| | | +| ---------- | ------------------------------------------------------------------ | +| Key | `service.$name.integrations.traefik.rootCAs[].secretRef.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + rootCAs: + - secretRef: + name: secret-name +``` + +--- + +#### `rootCAs.secretRef.expandObjectName` + +Whether to expand (adding the fullname as prefix) the secret name + +| | | +| ---------- | ------------------------------------------------------------------------------ | +| Key | `service.$name.integrations.traefik.rootCAs[].secretRef.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + rootCAs: + - secretRef: + name: secret-name + expandObjectName: false +``` + +--- + +### `rootCAs.configMapRef` + +Define the configMapRef + +| | | +| ---------- | ---------------------------------------------------------------- | +| Key | `service.$name.integrations.traefik.rootCAs[].configMapRef` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + rootCAs: + - configMapRef: {} +``` + +--- + +#### `rootCAs.configMapRef.name` + +Define the configmap name + +:::note + +This will be automatically expanded to `fullname-configmap-name`. +You can opt out of this by setting [`expandObjectName`](/truecharts-common/service/integrations/traefik#rootcasconfigmaprefexpandobjectname) +to `false` + +::: + +| | | +| ---------- | --------------------------------------------------------------------- | +| Key | `service.$name.integrations.traefik.rootCAs[].configMapRef.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + rootCAs: + - configMapRef: + name: configmap-name +``` + +--- + +#### `rootCAs.configMapRef.expandObjectName` + +Whether to expand (adding the fullname as prefix) the configmap name + +| | | +| ---------- | --------------------------------------------------------------------------------- | +| Key | `service.$name.integrations.traefik.rootCAs[].configMapRef.expandObjectName` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `true` | + +Example + +```yaml +service: + service-name: + integrations: + traefik: + rootCAs: + - configMapRef: + name: configmap-name + expandObjectName: false +``` + +--- + +## Full Examples + +```yaml +service: + service-name: + integrations: + traefik: + enabled: true + forceTLS: true + insecureSkipVerify: false + serverName: "my.service.com" + rootCAs: + - configMapRef: + name: configmap-name + expandObjectName: false + - secretRef: + name: secret-name + expandObjectName: true +``` diff --git a/charts/library/common/docs/service/ports.md b/charts/library/common/docs/service/ports.md new file mode 100644 index 00000000000..2476a57f946 --- /dev/null +++ b/charts/library/common/docs/service/ports.md @@ -0,0 +1,182 @@ +--- +title: Ports +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/service/ports#full-examples) section for complete examples. +- See the [Service](/truecharts-common/service) documentation for more information + +::: + +## Appears in + +- `.Values.service.$name.ports` + +--- + +## Target Selector + +- `targetSelector` (string): Define the container to link the port +- `targetSelector` (empty): Assign the service to the primary container + +--- + +## `$port-name` + +Define the port dict + +| | | +| ---------- | -------------------------------- | +| Key | `service.$name.ports.$port-name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +service: + service-name: + ports: + port-name: {} +``` + +--- + +### `port` + +Define the port that will be exposed by the service + +| | | +| ---------- | ------------------------------------- | +| Key | `service.$name.ports.$port-name.port` | +| Type | `int` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | unset | + +Example + +```yaml +service: + service-name: + ports: + port-name: + port: 80 +``` + +--- + +### `targetPort` + +Define the target port (No named ports) + +| | | +| ---------- | ------------------------------------------- | +| Key | `service.$name.ports.$port-name.targetPort` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | (Defaults to `port` if not set) | + +Example + +```yaml +service: + service-name: + ports: + port-name: + targetPort: 80 +``` + +--- + +### `protocol` + +Define the port protocol Used by the container ports and probes, http and https are converted to tcp where needed + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `service.$name.ports.$port-name.protocol` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [here](/truecharts-common/fallbackdefaults#serviceprotocol) | + +Valid Values: + +- `tcp` +- `udp` +- `http` +- `https` + +Example + +```yaml +service: + service-name: + ports: + port-name: + protocol: tcp +``` + +--- + +### `hostPort` + +Define the hostPort, should be **avoided**, unless **ABSOLUTELY** necessary + +| | | +| ---------- | ----------------------------------------- | +| Key | `service.$name.ports.$port-name.hostPort` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | unset | + +Example + +```yaml +service: + service-name: + ports: + port-name: + hostPort: 30000 +``` + +--- + +### `targetSelector` + +Define the container to link this port (Must be on under the pod linked above) + +| | | +| ---------- | ----------------------------------------------- | +| Key | `service.$name.ports.$port-name.targetSelector` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | unset | + +Example + +```yaml +service: + service-name: + ports: + port-name: + targetSelector: some-container +``` + +## Full Examples + +Full examples can be found under each service type + +- [ClusterIP](/truecharts-common/service/clusterip) +- [LoadBalancer](/truecharts-common/service/loadbalancer) +- [NodePort](/truecharts-common/service/nodeport) +- [ExternalName](/truecharts-common/service/externalname) +- [ExternalIP](/truecharts-common/service/externalip) diff --git a/charts/library/common/docs/serviceAccount.md b/charts/library/common/docs/serviceAccount.md new file mode 100644 index 00000000000..41a7c13cb38 --- /dev/null +++ b/charts/library/common/docs/serviceAccount.md @@ -0,0 +1,258 @@ +--- +title: Service Account +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/serviceaccount#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.serviceAccount` + +## Naming scheme + +- Primary: `$FullName` (release-name-chart-name) +- Non-Primary: `$FullName-$ServiceAccountName` (release-name-chart-name-ServiceAccountName) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## Target Selector + +- `targetSelectAll` (bool): Whether to assign the serviceAccount to all pods or not. `targetSelector` is ignored in this case +- `targetSelector` (list): Define the pod(s) to assign the serviceAccount +- `targetSelector` (empty): Assign the serviceAccount to the primary pod + +--- + +## `serviceAccount` + +Create serviceAccount objects + +| | | +| ---------- | ---------------- | +| Key | `serviceAccount` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +serviceAccount: {} +``` + +--- + +### `serviceAccount.$name` + +Define serviceAccount + +| | | +| ---------- | ---------------------- | +| Key | `serviceAccount.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +serviceAccount: + sa-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the serviceAccount + +| | | +| ---------- | ------------------------------ | +| Key | `serviceAccount.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +serviceAccount: + sa-name: + enabled: true +``` + +--- + +#### `primary` + +Sets the serviceAccount as primary + +| | | +| ---------- | ------------------------------ | +| Key | `serviceAccount.$name.primary` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +serviceAccount: + sa-name: + primary: true +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | -------------------------------- | +| Key | `serviceAccount.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +serviceAccount: + sa-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Additional labels for service account + +| | | +| ---------- | ----------------------------- | +| Key | `serviceAccount.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +serviceAccount: + sa-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Additional annotations for service account + +| | | +| ---------- | ---------------------------------- | +| Key | `serviceAccount.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +serviceAccount: + sa-name: + annotations: + key: value +``` + +--- + +#### `targetSelectAll` + +Whether to assign the serviceAccount to all pods or not + +| | | +| ---------- | -------------------------------------- | +| Key | `serviceAccount.$name.targetSelectAll` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +serviceAccount: + sa-name: + targetSelectAll: true +``` + +--- + +#### `targetSelector` + +Define the pod(s) to assign the serviceAccount + +| | | +| ---------- | ------------------------------------- | +| Key | `serviceAccount.$name.targetSelector` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +serviceAccount: + sa-name: + targetSelector: + - workload-name1 + - workload-name2 +``` + +--- + +## Full Examples + +```yaml +serviceAccount: + sa-name: + enabled: true + primary: true + namespace: some-namespace + labels: + key: value + keytpl: "{{ .Values.some.value }}" + annotations: + key: value + keytpl: "{{ .Values.some.value }}" + targetSelectAll: true + + other-sa-name: + enabled: true + namespace: some-namespace + targetSelector: + - pod-name + - other-pod-name +``` diff --git a/charts/library/common/docs/storageClass.md b/charts/library/common/docs/storageClass.md new file mode 100644 index 00000000000..7e32ad83a1d --- /dev/null +++ b/charts/library/common/docs/storageClass.md @@ -0,0 +1,296 @@ +--- +title: Storage Class +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/storageclass#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.storageClass` + +## Naming scheme + +- `$FullName-$StorageClassName` (release-name-chart-name-storageClassName) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `storageClass` + +Define storage classes + +| | | +| ---------- | -------------- | +| Key | `storageClass` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +storageClass: {} +``` + +--- + +### `$name` + +Define storage class + +| | | +| ---------- | -------------------- | +| Key | `storageClass.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +storageClass: + storage-class-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the storage class + +| | | +| ---------- | ---------------------------- | +| Key | `storageClass.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +storageClass: + storage-class-name: + enabled: true +``` + +--- + +#### `labels` + +Additional labels for storage class + +| | | +| ---------- | --------------------------- | +| Key | `storageClass.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +storageClass: + storage-class-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Additional annotations for storage class + +| | | +| ---------- | -------------------------------- | +| Key | `storageClass.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +storageClass: + storage-class-name: + annotations: + key: value +``` + +#### `provisioner` + +Define the provisioner for this storage class + +| | | +| ---------- | -------------------------------- | +| Key | `storageClass.$name.provisioner` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +storageClass: + storage-class-name: + provisioner: some.provisioner.io +``` + +--- + +#### `parameters` + +Define the parameters for this storage class + +| | | +| ---------- | ------------------------------- | +| Key | `storageClass.$name.parameters` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +storageClass: + storage-class-name: + parameters: + key: value +``` + +--- + +#### `reclaimPolicy` + +Define the reclaim policy for this storage class + +| | | +| ---------- | ---------------------------------- | +| Key | `storageClass.$name.reclaimPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `Retain` | + +Valid values are: + +- `Delete` +- `Retain` + +Example + +```yaml +storageClass: + storage-class-name: + reclaimPolicy: retain +``` + +--- + +#### `allowVolumeExpansion` + +Define if volume expansion is allowed for this storage class + +| | | +| ---------- | ----------------------------------------- | +| Key | `storageClass.$name.allowVolumeExpansion` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +storageClass: + storage-class-name: + allowVolumeExpansion: true +``` + +--- + +#### `volumeBindingMode` + +Define the volume binding mode for this storage class + +| | | +| ---------- | -------------------------------------- | +| Key | `storageClass.$name.volumeBindingMode` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `Immediate` | + +Valid values are: + +- `Immediate` +- `WaitForFirstConsumer` + +Example + +```yaml +storageClass: + storage-class-name: + volumeBindingMode: Immediate +``` + +--- + +#### `mountOptions` + +Define the mount options for this storage class + +| | | +| ---------- | --------------------------------- | +| Key | `storageClass.$name.mountOptions` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On each entry only) | +| Default | `[]` | + +Example + +```yaml +storageClass: + storage-class-name: + mountOptions: + - option1 + - option2=value +``` + +--- + +## Full Examples + +```yaml +storageClass: + example: + provisioner: some.provisioner.io + enabled: true + parameters: + param1: value1 + param2: value2 + reclaimPolicy: retain + allowVolumeExpansion: true + volumeBindingMode: Immediate + mountOptions: + - option1 + - option2=value +``` diff --git a/charts/library/common/docs/volumeSnapshot.md b/charts/library/common/docs/volumeSnapshot.md new file mode 100644 index 00000000000..df3d5d6f8f4 --- /dev/null +++ b/charts/library/common/docs/volumeSnapshot.md @@ -0,0 +1,216 @@ +--- +title: Volume Snapshot +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/volumesnapshot#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.volumeSnapshots` + +--- + +## `volumeSnapshots` + +Define a volume snapshot + +| | | +| ---------- | ----------------- | +| Key | `volumeSnapshots` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +volumeSnapshots: {} +``` + +--- + +### `$name` + +Define a volume snapshot + +| | | +| ---------- | ----------------------- | +| Key | `volumeSnapshots.$name` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +volumeSnapshots: + example1: {} +``` + +--- + +#### `labels` + +Define the labels of the volume snapshot + +| | | +| ---------- | ------------------------------ | +| Key | `volumeSnapshots.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +volumeSnapshots: + example1: + labels: + key: value +``` + +--- + +#### `annotations` + +Define the annotations of the volume snapshot class + +| | | +| ---------- | ----------------------------------- | +| Key | `volumeSnapshots.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +volumeSnapshots: + example1: + annotations: + key: value +``` + +--- + +#### `enabled` + +Enable volume snapshot + +| | | +| ---------- | ------------------------------- | +| Key | `volumeSnapshots.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +volumeSnapshots: + example1: + enabled: true +``` + +--- + +#### `source` + +Define the source of the volume snapshot + +:::note + +At least one of the following keys must be defined + +[`volumeSnapshotContentName`](/truecharts-common/volumesnapshot#volumesnapshotcontentname), [`persistentVolumeClaimName`](/truecharts-common/volumesnapshot#persistentvolumeclaimname) + +::: + +| | | +| ---------- | ------------------------------ | +| Key | `volumeSnapshots.$name.source` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +volumeSnapshots: + example1: + enabled: true + source: {} +``` + +##### `volumeSnapshotContentName` + +Define the volume snapshot content name + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `volumeSnapshots.$name.source.volumeSnapshotContentName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +volumeSnapshots: + example1: + enabled: true + source: + volumeSnapshotContentName: some-name +``` + +--- + +##### `persistentVolumeClaimName` + +Define the persistent volume claim name + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `volumeSnapshots.$name.source.persistentVolumeClaimName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Example + +```yaml +volumeSnapshots: + example1: + enabled: true + source: + persistentVolumeClaimName: some-pvc-name +``` + +--- + +## Full Examples + +```yaml +volumeSnapshots: + example1: + enabled: true + source: + volumeSnapshotContentName: some-name + example2: + enabled: true + source: + persistentVolumeClaimName: some-pvc-name +``` diff --git a/charts/library/common/docs/volumeSnapshotClass.md b/charts/library/common/docs/volumeSnapshotClass.md new file mode 100644 index 00000000000..bdfd8842b73 --- /dev/null +++ b/charts/library/common/docs/volumeSnapshotClass.md @@ -0,0 +1,243 @@ +--- +title: Volume Snapshot Class +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/volumesnapshotclass#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.volumeSnapshotClass` + +--- + +## `volumeSnapshotClass` + +Define a volume snapshot class + +| | | +| ---------- | --------------------- | +| Key | `volumeSnapshotClass` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +volumeSnapshotClass: {} +``` + +--- + +### `$name` + +Define a volume snapshot class + +| | | +| ---------- | --------------------------- | +| Key | `volumeSnapshotClass.$name` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +volumeSnapshotClass: + example1: {} +``` + +--- + +#### `labels` + +Define the labels of the volume snapshot class + +| | | +| ---------- | ---------------------------------- | +| Key | `volumeSnapshotClass.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +volumeSnapshotClass: + example1: + labels: + key: value +``` + +--- + +#### `annotations` + +Define the annotations of the volume snapshot class + +| | | +| ---------- | --------------------------------------- | +| Key | `volumeSnapshotClass.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +volumeSnapshotClass: + example1: + annotations: + key: value +``` + +--- + +#### `enabled` + +Enable volume snapshot class + +| | | +| ---------- | ----------------------------------- | +| Key | `volumeSnapshotClass.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +volumeSnapshotClass: + example1: + enabled: true +``` + +--- + +#### `isDefault` + +Sets the annotation `snapshot.storage.kubernetes.io/is-default-class` to `"true"` or `"false"` + +| | | +| ---------- | ------------------------------------- | +| Key | `volumeSnapshotClass.$name.isDefault` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +volumeSnapshotClass: + example1: + isDefault: true +``` + +--- + +#### `driver` + +Define the driver of the volume snapshot class + +| | | +| ---------- | ---------------------------------- | +| Key | `volumeSnapshotClass.$name.driver` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +volumeSnapshotClass: + example1: + driver: csi-hostpath-snapshots +``` + +--- + +#### `deletionPolicy` + +Define the deletion policy of the volume snapshot class + +| | | +| ---------- | ------------------------------------------ | +| Key | `volumeSnapshotClass.$name.deletionPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `Retain` | + +Example + +```yaml +volumeSnapshotClass: + example1: + deletionPolicy: Delete +``` + +--- + +#### `parameters` + +Define the parameters of the volume snapshot class + +| | | +| ---------- | -------------------------------------- | +| Key | `volumeSnapshotClass.$name.parameters` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On both key and value) | +| Default | `{}` | + +Example + +```yaml +volumeSnapshotClass: + example1: + parameters: + key: value +``` + +--- + +## Full Examples + +```yaml +volumeSnapshotClass: + class1: + enabled: true + driver: csi-hostpath-snapshots + deletionPolicy: Delete + labels: + label1: "{{ .Values.label1 }}" + label2: label2 + annotations: + annotation1: "{{ .Values.annotation1 }}" + annotation2: annotation2 + class2: + enabled: true + isDefault: true + driver: "{{ .Values.some_driver }}" + labels: + label1: "{{ .Values.label1 }}" + label2: label2 + annotations: + annotation1: "{{ .Values.annotation1 }}" + annotation2: annotation2 + parameters: + "{{ .Values.some_key }}": "{{ .Values.some_value }}" + parameter2: 5 +``` diff --git a/charts/library/common/docs/webhook.md b/charts/library/common/docs/webhook.md new file mode 100644 index 00000000000..f48761fbd04 --- /dev/null +++ b/charts/library/common/docs/webhook.md @@ -0,0 +1,807 @@ +--- +title: Webhook +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/webhook#full-examples) section for complete examples. + +::: + +--- + +## Appears in + +- `.Values.webhook` + +## Naming scheme + +- `$FullName-$WebhookName` (release-name-chart-name-webhook-name) + +:::tip + +- Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `webhook` + +Create webhook objects + +| | | +| ---------- | --------- | +| Key | `webhook` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +webhook: {} +``` + +--- + +### `$name` + +Define a webhook object with the given name + +| | | +| ---------- | --------------- | +| Key | `webhook.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +webhook: + webhook-name: {} +``` + +--- + +#### `enabled` + +Enables or Disables the webhook + +| | | +| ---------- | ----------------------- | +| Key | `webhook.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +webhook: + webhook-name: + enabled: true +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | ------------------------- | +| Key | `webhook.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `""` | + +Example + +```yaml +webhook: + webhook-name: + namespace: some-namespace +``` + +--- + +#### `labels` + +Additional labels for webhook + +| | | +| ---------- | ---------------------- | +| Key | `webhook.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +webhook: + webhook-name: + labels: + key: value + keytpl: "{{ .Values.some.value }}" +``` + +--- + +#### `annotations` + +Additional annotations for webhook + +| | | +| ---------- | --------------------------- | +| Key | `webhook.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +webhook: + webhook-name: + annotations: + key: value + keytpl: "{{ .Values.some.value }}" +``` + +--- + +#### `type` + +Define the type of the webhook. + +| | | +| ---------- | -------------------- | +| Key | `webhook.$name.type` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `mutating` +- `validating` + +Example + +```yaml +webhook: + webhook-name: + type: mutating +``` + +--- + +#### `webhooks` + +Define the webhooks. + +| | | +| ---------- | ------------------------ | +| Key | `webhook.$name.webhooks` | +| Type | `list` of `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: [] +``` + +--- + +##### `webhooks[].name` + +Define the webhook name + +| | | +| ---------- | ------------------------------- | +| Key | `webhook.$name.webhooks[].name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - name: webhook-name +``` + +--- + +##### `webhooks[].failurePolicy` + +Define the failurePolicy for the webhook + +| | | +| ---------- | ---------------------------------------- | +| Key | `webhook.$name.webhooks[].failurePolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `Ignore` +- `Fail` + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - ailurePolicy: Fail +``` + +--- + +##### `webhooks[].matchPolicy` + +Define the matchPolicy for the webhook + +| | | +| ---------- | -------------------------------------- | +| Key | `webhook.$name.webhooks[].matchPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `Exact` +- `Equivalent` + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - matchPolicy: Exact +``` + +--- + +##### `webhooks[].sideEffects` + +Define the sideEffects for the webhook + +| | | +| ---------- | -------------------------------------- | +| Key | `webhook.$name.webhooks[].sideEffects` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `None` +- `NoneOnDryRun` + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - sideEffects: None +``` + +--- + +##### `webhooks[].reinvocationPolicy` + +Define the reinvocationPolicy for the webhook + +| | | +| ---------- | --------------------------------------------- | +| Key | `webhook.$name.webhooks[].reinvocationPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `Never` +- `IfNeeded` + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - reinvocationPolicy: Never +``` + +--- + +##### `webhooks[].timeoutSeconds` + +Define the timeoutSeconds for the webhook + +| | | +| ---------- | ----------------------------------------- | +| Key | `webhook.$name.webhooks[].timeoutSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - timeoutSeconds: 30 +``` + +--- + +##### `webhooks[].admissionReviewVersions` + +Define the admissionReviewVersions for the webhook + +| | | +| ---------- | -------------------------------------------------- | +| Key | `webhook.$name.webhooks[].admissionReviewVersions` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `[]` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - admissionReviewVersions: + - v1 + - v1beta1 +``` + +--- + +##### `webhooks[].clientConfig` + +Define the clientConfig for the webhook + +| | | +| ---------- | --------------------------------------- | +| Key | `webhook.$name.webhooks[].clientConfig` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +--- + +###### `webhooks[].clientConfig.caBundle` + +Define the caBundle in clientConfig for the webhook + +| | | +| ---------- | ------------------------------------------------ | +| Key | `webhook.$name.webhooks[].clientConfig.caBundle` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - clientConfig: + caBundle: "" +``` + +###### `webhooks[].clientConfig.url` + +Define the url in clientConfig for the webhook, required if service is not defined in clientConfig + +| | | +| ---------- | ------------------------------------------- | +| Key | `webhook.$name.webhooks[].clientConfig.url` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - clientConfig: + url: "" +``` + +--- + +###### `webhooks[].clientConfig.service` + +Define the service in clientConfig for the webhook, required if url is not defined in clientConfig + +| | | +| ---------- | ----------------------------------------------- | +| Key | `webhook.$name.webhooks[].clientConfig.service` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - clientConfig: + service: {} +``` + +--- + +###### `webhooks[].clientConfig.service.name` + +Define the service name in clientConfig for the webhook + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `webhook.$name.webhooks[].clientConfig.service.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - clientConfig: + service: + name: "" +``` + +--- + +###### `webhooks[].clientConfig.service.namespace` + +Define the service namespace in clientConfig for the webhook + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `webhook.$name.webhooks[].clientConfig.service.namespace` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - clientConfig: + service: + namespace: "" +``` + +--- + +###### `webhooks[].clientConfig.service.path` + +Define the service path in clientConfig for the webhook + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `webhook.$name.webhooks[].clientConfig.service.path` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - clientConfig: + service: + path: "" +``` + +--- + +###### `webhooks[].clientConfig.service.port` + +Define the service port in clientConfig for the webhook + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `webhook.$name.webhooks[].clientConfig.service.port` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | unset | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - clientConfig: + service: + port: 443 +``` + +--- + +#### `webhooks[].rules` + +Define the rules for the webhook + +| | | +| ---------- | -------------------------------- | +| Key | `webhook.$name.webhooks[].rules` | +| Type | `list` of `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `[]` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - rules: [] +``` + +--- + +##### `webhooks[].rules[].scope` + +Define the scope of the rule for the webhook + +| | | +| ---------- | ---------------------------------------- | +| Key | `webhook.$name.webhooks[].rules[].scope` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid Values: + +- `Cluster` +- `Namespaced` +- `*` + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - rules: + - scope: Cluster +``` + +--- + +##### `webhooks[].rules[].apiGroups` + +Define the apiGroups of the rule for the webhook + +| | | +| ---------- | -------------------------------------------- | +| Key | `webhook.$name.webhooks[].rules[].apiGroups` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - rules: + - apiGroups: + - "" + - "apps" +``` + +--- + +##### `webhooks[].rules[].apiVersions` + +Define the apiVersions of the rule for the webhook + +| | | +| ---------- | ---------------------------------------------- | +| Key | `webhook.$name.webhooks[].rules[].apiVersions` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - rules: + - apiGroups: + - v1 + - v1beta1 +``` + +--- + +##### `webhooks[].rules[].operations` + +Define the operations of the rule for the webhook + +| | | +| ---------- | --------------------------------------------- | +| Key | `webhook.$name.webhooks[].rules[].operations` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - rules: + - operations: + - CREATE + - UPDATE +``` + +--- + +##### `webhooks[].rules[].resources` + +Define the resources of the rule for the webhook + +| | | +| ---------- | -------------------------------------------- | +| Key | `webhook.$name.webhooks[].rules[].resources` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On entries only) | +| Default | `[]` | + +Example + +```yaml +webhook: + webhook-name: + webhooks: + - rules: + - resources: + - pods + - pods/status +``` + +--- + +## Full Examples + +```yaml +webhook: + webhook-name: + enabled: true + labels: + key: value + keytpl: "{{ .Values.some.value }}" + annotations: + key: value + keytpl: "{{ .Values.some.value }}" + type: mutating + webhooks: + - name: webhook-name + failurePolicy: Fail + matchPolicy: Exact + sideEffects: None + reinvocationPolicy: Never + timeoutSeconds: 30 + admissionReviewVersions: + - v1 + - v1beta1 + clientConfig: + caBundle: "" + url: "" + rules: + - scope: Cluster + apiGroups: + - "" + apiVersions: + - v1 + operations: + - CREATE + - UPDATE + resources: + - pods + - pods/status + + other-webhook-name: + enabled: true + namespace: some-namespace + type: validating + webhooks: + - name: other-webhook-name + failurePolicy: Fail + matchPolicy: Exact + sideEffects: None + timeoutSeconds: 30 + admissionReviewVersions: + - v1 + - v1beta1 + clientConfig: + caBundle: "" + service: + name: "" + namespace: "" + path: "" + port: 443 + rules: + - scope: Namespaced + apiGroups: + - "" + apiVersions: + - v1 + operations: + - CREATE + - UPDATE + resources: + - pods + - pods/status +``` diff --git a/charts/library/common/docs/workload/cronjob.md b/charts/library/common/docs/workload/cronjob.md new file mode 100644 index 00000000000..deedab12dbb --- /dev/null +++ b/charts/library/common/docs/workload/cronjob.md @@ -0,0 +1,331 @@ +--- +title: CronJob +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/workload/cronjob#full-examples) section for complete examples. +- See the [Workload](/truecharts-common/workload) documentation for more information + +::: + +:::tip + +Replace references to `$name` with the actual name you want to use. + +::: + +## Appears in + +- `.Values.workload.$name` + +## Notes + +Value of `workload.$name.podSpec.restartPolicy` can **not** be `Always` for this type of workload + +## `schedule` + +Define the schedule + +| | | +| ---------- | ------------------------- | +| Key | `workload.$name.schedule` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + schedule: "{{ .Values.cron }}" +``` + +--- + +## `timezone` + +Define the timezone + +| | | +| ---------- | ------------------------------ | +| Key | `workload.$name.timezone` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See [here](/truecharts-common#tz) | + +Example + +```yaml +workload: + workload-name: + timezone: "{{ .Values.someTimezone }}" +``` + +--- + +## `concurrencyPolicy` + +Define the concurrencyPolicy + +| | | +| ---------- | ---------------------------------- | +| Key | `workload.$name.concurrencyPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `Forbid` | + +Valid Values: + +- `Allow` +- `Replace` +- `Forbid` + +Example + +```yaml +workload: + workload-name: + concurrencyPolicy: Allow +``` + +--- + +## `failedJobsHistoryLimit` + +Define the failedJobsHistoryLimit + +| | | +| ---------- | --------------------------------------- | +| Key | `workload.$name.failedJobsHistoryLimit` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `1` | + +Example + +```yaml +workload: + workload-name: + failedJobsHistoryLimit: 2 +``` + +--- + +## `successfulJobsHistoryLimit` + +Define the successfulJobsHistoryLimit + +| | | +| ---------- | ------------------------------------------- | +| Key | `workload.$name.successfulJobsHistoryLimit` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `3` | + +Example + +```yaml +workload: + workload-name: + successfulJobsHistoryLimit: 4 +``` + +--- + +## `startingDeadlineSeconds` + +Define the startingDeadlineSeconds + +| | | +| ---------- | ---------------------------------------- | +| Key | `workload.$name.startingDeadlineSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + startingDeadlineSeconds: 100 +``` + +--- + +## `completionMode` + +Define the completionMode + +| | | +| ---------- | ------------------------------- | +| Key | `workload.$name.completionMode` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `NonIndexed` | + +Valid Values: + +- `Indexed` +- `NonIndexed` + +Example + +```yaml +workload: + workload-name: + completionMode: Indexed +``` + +--- + +## `backoffLimit` + +Define the backoffLimit + +| | | +| ---------- | ----------------------------- | +| Key | `workload.$name.backoffLimit` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `5` | + +Example + +```yaml +workload: + workload-name: + backoffLimit: 5 +``` + +--- + +## `completions` + +Define the completions + +| | | +| ---------- | ---------------------------- | +| Key | `workload.$name.completions` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + completions: 5 +``` + +--- + +## `parallelism` + +Define the parallelism + +| | | +| ---------- | ---------------------------- | +| Key | `workload.$name.parallelism` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `1` | + +Example + +```yaml +workload: + workload-name: + parallelism: 5 +``` + +--- + +## `ttlSecondsAfterFinished` + +Define the ttlSecondsAfterFinished + +| | | +| ---------- | ---------------------------------------- | +| Key | `workload.$name.ttlSecondsAfterFinished` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `120` | + +Example + +```yaml +workload: + workload-name: + ttlSecondsAfterFinished: 100 +``` + +--- + +## `activeDeadlineSeconds` + +Define the activeDeadlineSeconds + +| | | +| ---------- | -------------------------------------- | +| Key | `workload.$name.activeDeadlineSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + activeDeadlineSeconds: 100 +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + type: CronJob + schedule: "{{ .Values.cron }}" + timezone: "{{ .Values.someTimezone }}" + concurrencyPolicy: Allow + failedJobsHistoryLimit: 2 + successfulJobsHistoryLimit: 4 + startingDeadlineSeconds: 100 + backoffLimit: 5 + completionMode: Indexed + completions: 5 + parallelism: 5 + ttlSecondsAfterFinished: 100 + activeDeadlineSeconds: 100 + podSpec: + restartPolicy: OnFailure + + other-workload-name: + enabled: true + primary: false + type: CronJob + schedule: "* * * * *" + podSpec: {} +``` diff --git a/charts/library/common/docs/workload/daemonset.md b/charts/library/common/docs/workload/daemonset.md new file mode 100644 index 00000000000..6c5ec2ace1b --- /dev/null +++ b/charts/library/common/docs/workload/daemonset.md @@ -0,0 +1,192 @@ +--- +title: DaemonSet +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/workload/daemonset#full-examples) section for complete examples. +- See the [Workload](/truecharts-common/workload) documentation for more information + +::: + +:::tip + +Replace references to `$name` with the actual name you want to use. + +::: + +## Appears in + +- `.Values.workload.$name` + +## Notes + +Value of `workload.$name.podSpec.restartPolicy` can only be `Always` for this type of workload + +--- + +## `revisionHistoryLimit` + +Define the number of history revisions + +| | | +| ---------- | ------------------------------------- | +| Key | `workload.$name.revisionHistoryLimit` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `3` | + +Example + +```yaml +workload: + workload-name: + revisionHistoryLimit: 3 +``` + +## `strategy` + +Define the strategy of the workload + +| | | +| ---------- | ------------------------- | +| Key | `workload.$name.strategy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `RollingUpdate` | + +Valid Values: + +- `RollingUpdate` +- `OnDelete` + +Example + +```yaml +workload: + workload-name: + strategy: RollingUpdate +``` + +--- + +## `rollingUpdate` + +Define the rollingUpdate options + +:::note + +Can only be used when `workload.$name.strategy` is `RollingUpdate` + +::: + +| | | +| ---------- | ------------------------------ | +| Key | `workload.$name.rollingUpdate` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 +``` + +--- + +## `rollingUpdate.maxUnavailable` + +Define the maxUnavailable + +:::note + +Can only be used when `workload.$name.strategy` is `RollingUpdate` + +::: + +| | | +| ---------- | --------------------------------------------- | +| Key | `workload.$name.rollingUpdate.maxUnavailable` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + rollingUpdate: + maxUnavailable: 1 +``` + +--- + +## `rollingUpdate.maxSurge` + +Define the maxSurge + +:::note + +Can only be used when `workload.$name.strategy` is `RollingUpdate` + +::: + +| | | +| ---------- | --------------------------------------- | +| Key | `workload.$name.rollingUpdate.maxSurge` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + rollingUpdate: + maxSurge: 1 +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + type: DaemonSet + revisionHistoryLimit: 3 + strategy: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 + podSpec: {} + + other-workload-name: + enabled: true + primary: false + type: DaemonSet + labels: {} + annotations: {} + replicas: 1 + revisionHistoryLimit: 3 + strategy: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 + podSpec: {} +``` diff --git a/charts/library/common/docs/workload/deployment.md b/charts/library/common/docs/workload/deployment.md new file mode 100644 index 00000000000..90fdceb7e15 --- /dev/null +++ b/charts/library/common/docs/workload/deployment.md @@ -0,0 +1,217 @@ +--- +title: Deployment +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/workload/deployment#full-examples) section for complete examples. +- See the [Workload](/truecharts-common/workload) documentation for more information + +::: + +:::tip + +Replace references to `$name` with the actual name you want to use. + +::: + +## Appears in + +- `.Values.workload.$name` + +## Notes + +Value of `workload.$name.podSpec.restartPolicy` can only be `Always` for this type of workload + +--- + +## `replicas` + +Define the number of replicas + +| | | +| ---------- | ------------------------- | +| Key | `workload.$name.replicas` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `1` | + +Example + +```yaml +workload: + workload-name: + replicas: 1 +``` + +--- + +## `revisionHistoryLimit` + +Define the number of history revisions + +| | | +| ---------- | ------------------------------------- | +| Key | `workload.$name.revisionHistoryLimit` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `3` | + +Example + +```yaml +workload: + workload-name: + revisionHistoryLimit: 3 +``` + +--- + +## `strategy` + +Define the strategy of the workload + +| | | +| ---------- | ------------------------- | +| Key | `workload.$name.strategy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `Recreate` | + +Valid Values: + +- `Recreate` +- `RollingUpdate` + +Example + +```yaml +workload: + workload-name: + strategy: Recreate +``` + +--- + +## `rollingUpdate` + +Define the rollingUpdate options + +:::note + +Can only be used when `workload.$name.strategy` is `RollingUpdate` + +::: + +| | | +| ---------- | ------------------------------ | +| Key | `workload.$name.rollingUpdate` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 +``` + +--- + +## `rollingUpdate.maxUnavailable` + +Define the maxUnavailable + +:::note + +Can only be used when `workload.$name.strategy` is `RollingUpdate` + +::: + +| | | +| ---------- | --------------------------------------------- | +| Key | `workload.$name.rollingUpdate.maxUnavailable` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + rollingUpdate: + maxUnavailable: 1 +``` + +--- + +## `rollingUpdate.maxSurge` + +Define the maxSurge + +:::note + +Can only be used when `workload.$name.strategy` is `RollingUpdate` + +::: + +| | | +| ---------- | --------------------------------------- | +| Key | `workload.$name.rollingUpdate.maxSurge` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + rollingUpdate: + maxSurge: 1 +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + type: Deployment + replicas: 1 + revisionHistoryLimit: 3 + strategy: Recreate + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 + podSpec: {} + + other-workload-name: + enabled: true + primary: false + type: Deployment + labels: {} + annotations: {} + replicas: 1 + revisionHistoryLimit: 3 + strategy: Recreate + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 + podSpec: {} +``` diff --git a/charts/library/common/docs/workload/index.md b/charts/library/common/docs/workload/index.md new file mode 100644 index 00000000000..2d1d615ce30 --- /dev/null +++ b/charts/library/common/docs/workload/index.md @@ -0,0 +1,1412 @@ +--- +title: Workload +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/workload#full-examples) section for complete examples. + +::: + +## Appears in + +- `.Values.workload` + +## Naming scheme + +- Primary: `$FullName` (release-name-chart-name) +- Non-Primary: `$FullName-$WorkloadName` (release-name-chart-name-workload-name) + +:::tip + +Replace references to `$name` with the actual name you want to use. + +::: + +--- + +## `workload` + +Define workload objects + +| | | +| ---------- | ---------- | +| Key | `workload` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: {} +``` + +--- + +### `$name` + +Define workload + +| | | +| ---------- | ---------------- | +| Key | `workload.$name` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: {} +``` + +--- + +#### `enabled` + +Enable or disable workload + +| | | +| ---------- | ------------------------ | +| Key | `workload.$name.enabled` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `false` | + +Example + +```yaml +workload: + workload-name: + enabled: true +``` + +--- + +#### `primary` + +Set workload as primary + +| | | +| ---------- | ------------------------ | +| Key | `workload.$name.primary` | +| Type | `bool` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `false` | + +Example + +```yaml +workload: + workload-name: + primary: true +``` + +--- + +#### `labels` + +Define labels for workload + +| | | +| ---------- | ----------------------- | +| Key | `workload.$name.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + labels: + key: value +``` + +--- + +#### `annotations` + +Define annotations for workload + +| | | +| ---------- | ---------------------------- | +| Key | `workload.$name.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + annotations: + key: value +``` + +--- + +#### `namespace` + +Define the namespace for this object + +| | | +| ---------- | -------------------------- | +| Key | `workload.$name.namespace` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + namespace: some-namespace +``` + +--- + +#### `type` + +Define the kind of the workload + +| | | +| ---------- | --------------------- | +| Key | `workload.$name.type` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `""` | + +Valid values + +- [`Deployment`](/truecharts-common/workload/deployment) +- [`DaemonSet`](/truecharts-common/workload/daemonset) +- [`StatefulSet`](/truecharts-common/workload/statefulset) +- [`CronJob`](/truecharts-common/workload/cronjob) +- [`Job`](/truecharts-common/workload/job) + +Example + +```yaml +workload: + workload-name: + type: Deployment +``` + +--- + +#### `podSpec` + +Define the podSpec for the workload + +| | | +| ---------- | ------------------------ | +| Key | `workload.$name.podSpec` | +| Type | `map` | +| Required | ✅ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: {} +``` + +--- + +##### `labels` + +Define labels for podSpec + +| | | +| ---------- | ------------------------------- | +| Key | `workload.$name.podSpec.labels` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + labels: + key: value +``` + +--- + +##### `annotations` + +Define annotations for podSpec + +| | | +| ---------- | ------------------------------------ | +| Key | `workload.$name.podSpec.annotations` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + podSpec: + annotations: + key: value +``` + +--- + +##### `automountServiceAccountToken` + +Pod's automountServiceAccountToken + +| | | +| ---------- | ------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.automountServiceAccountToken` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#automountserviceaccounttoken) | + +Example + +```yaml +workload: + workload-name: + podSpec: + automountServiceAccountToken: true +``` + +--- + +##### `serviceAccountName` + +:::note + +Suggested is to use the top-level [serviceAccount](/truecharts-common/serviceaccount/) key +to define the service account with `targetSelector`. + +Using this key here, is out of our support scope. + +::: + +Define the service account name for the workload + +| | | +| ---------- | ----------------------------------- | +| Key | `workload.$name.serviceAccountName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + serviceAccountName: some-service-account +``` + +Example + +```yaml +workload: + workload-name: + podSpec: + serviceAccountName: some-service-account +``` + +--- + +##### `hostNetwork` + +Bind pod to host's network + +| | | +| ---------- | -------------------------------------------------- | +| Key | `workload.$name.podSpec.hostNetwork` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#hostnetwork) | + +Example + +```yaml +workload: + workload-name: + podSpec: + hostNetwork: true +``` + +##### `hostPID` + +Allow pod to access host's PID namespace + +| | | +| ---------- | ---------------------------------------------- | +| Key | `workload.$name.podSpec.hostPID` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#hostpid) | + +Example + +```yaml +workload: + workload-name: + podSpec: + hostPID: true +``` + +--- + +##### `hostIPC` + +Allow pod to access host's IPC namespace + +| | | +| ---------- | ---------------------------------------------- | +| Key | `workload.$name.podSpec.hostIPC` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#hostipc) | + +Example + +```yaml +workload: + workload-name: + podSpec: + hostIPC: true +``` + +--- + +##### `hostUsers` + +Allow pod to access host's users namespace + +| | | +| ---------- | ------------------------------------------------ | +| Key | `workload.$name.podSpec.hostUsers` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#hostusers) | + +Example + +```yaml +workload: + workload-name: + podSpec: + hostUsers: true +``` + +--- + +##### `shareProcessNamespace` + +Share Process Namespace with other containers in the pod + +| | | +| ---------- | ------------------------------------------------------------ | +| Key | `workload.$name.podSpec.shareProcessNamespace` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#shareprocessnamespace) | + +Example + +```yaml +workload: + workload-name: + podSpec: + shareProcessNamespace: true +``` + +--- + +##### `enableServiceLinks` + +Pod's enableServiceLinks + +| | | +| ---------- | --------------------------------------------------------- | +| Key | `workload.$name.podSpec.enableServiceLinks` | +| Type | `bool` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#enableservicelinks) | + +Example + +```yaml +workload: + workload-name: + podSpec: + enableServiceLinks: true +``` + +--- + +##### `restartPolicy` + +Pod's restartPolicy + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `workload.$name.podSpec.restartPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [here](/truecharts-common/podoptions#restartpolicy) | + +Valid values + +- `Always` +- `Never` +- `OnFailure` + +Example + +```yaml +workload: + workload-name: + podSpec: + restartPolicy: OnFailure +``` + +--- + +##### `schedulerName` + +Pod's schedulerName + +| | | +| ---------- | ---------------------------------------------------- | +| Key | `workload.$name.podSpec.schedulerName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [here](/truecharts-common/podoptions#schedulername) | + +Example + +```yaml +workload: + workload-name: + podSpec: + schedulerName: some-scheduler +``` + +--- + +##### `priorityClassName` + +Pod's priorityClassName + +| | | +| ---------- | -------------------------------------------------------- | +| Key | `workload.$name.podSpec.priorityClassName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [here](/truecharts-common/podoptions#priorityclassname) | + +Example + +```yaml +workload: + workload-name: + podSpec: + priorityClassName: some-priority-class-name +``` + +--- + +##### `hostname` + +Pod's hostname + +| | | +| ---------- | --------------------------------- | +| Key | `workload.$name.podSpec.hostname` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + hostname: some-hostname +``` + +--- + +##### `terminationGracePeriodSeconds` + +Pod's terminationGracePeriodSeconds + +| | | +| ---------- | -------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.terminationGracePeriodSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [here](/truecharts-common/podoptions#terminationgraceperiodseconds) | + +Example + +```yaml +workload: + workload-name: + podSpec: + terminationGracePeriodSeconds: 100 +``` + +--- + +##### `nodeSelector` + +Pod's nodeSelector + +| | | +| ---------- | --------------------------------------------------- | +| Key | `workload.$name.podSpec.nodeSelector` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ✅ (On value only) | +| Default | See default [here](/truecharts-common/podoptions#nodeselector) | + +Example + +```yaml +workload: + workload-name: + podSpec: + nodeSelector: + disk_type: ssd +``` + +--- + +##### `topologySpreadConstraints` + +Pod's topologySpreadConstraints + +| | | +| ---------- | ---------------------------------------------------------------- | +| Key | `workload.$name.podSpec.topologySpreadConstraints` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#topologyspreadconstraints) | + +--- + +##### `hostAliases` + +Pod's hostAliases + +| | | +| ---------- | -------------------------------------------------- | +| Key | `workload.$name.podSpec.hostAliases` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#hostaliases) | + +Example + +```yaml +workload: + workload-name: + podSpec: + hostAliases: [] +``` + +--- + +###### `ip` + +Pod's hostAliases ip + +| | | +| ---------- | --------------------------------------- | +| Key | `workload.$name.podSpec.hostAliases.ip` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + hostAliases: + - ip: 1.2.3.4 +``` + +--- + +###### `hostnames` + +Pod's hostAliases hostnames + +| | | +| ---------- | ---------------------------------------------- | +| Key | `workload.$name.podSpec.hostAliases.hostnames` | +| Type | `list` of `string` | +| Required | ✅ | +| Helm `tpl` | ✅ (On each entry) | +| Default | `[]` | + +Example + +```yaml +workload: + workload-name: + podSpec: + hostAliases: + - ip: 1.2.3.4 + hostnames: + - myserver.local + - storage.local +``` + +--- + +###### `dnsPolicy` + +Pod's dnsPolicy + +:::note + +`dnsPolicy` is set automatically to `ClusterFirstWithHostNet` when `hostNetwork` is `true` + +::: + +| | | +| ---------- | ------------------------------------------------ | +| Key | `workload.$name.podSpec.dnsPolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [here](/truecharts-common/podoptions#dnspolicy) | + +Valid values + +- `None` +- `Default` +- `ClusterFirst` +- `ClusterFirstWithHostNet` + +Example + +```yaml +workload: + workload-name: + podSpec: + dnsPolicy: ClusterFirst +``` + +--- + +###### `dnsConfig` + +Pod's dnsConfig + +| | | +| ---------- | ------------------------------------------------ | +| Key | `workload.$name.podSpec.dnsConfig` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#dnsconfig) | + +Example + +```yaml +workload: + workload-name: + podSpec: + dnsConfig: {} +``` + +--- + +###### `dnsConfig.nameservers` + +Pod's dnsConfig nameservers + +| | | +| ---------- | ---------------------------------------------- | +| Key | `workload.$name.podSpec.dnsConfig.nameservers` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On each entry) | +| Default | `[]` | + +Example + +```yaml +workload: + workload-name: + podSpec: + dnsConfig: + nameservers: + - 1.1.1.1 +``` + +--- + +###### `dnsConfig.searches` + +Pod's dnsConfig searches + +| | | +| ---------- | ------------------------------------------- | +| Key | `workload.$name.podSpec.dnsConfig.searches` | +| Type | `list` of `string` | +| Required | ❌ | +| Helm `tpl` | ✅ (On each entry) | +| Default | `[]` | + +Example + +```yaml +workload: + workload-name: + podSpec: + dnsConfig: + searches: + - ns1.svc.cluster-domain.example +``` + +--- + +###### `dnsConfig.options` + +Pod's dnsConfig options + +| | | +| ---------- | ------------------------------------------ | +| Key | `workload.$name.podSpec.dnsConfig.options` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `[{"ndots": "1"}]` | + +Example + +```yaml +workload: + workload-name: + podSpec: + dnsConfig: + options: [] +``` + +--- + +###### `dnsConfig.options.name` + +Pod's dnsConfig options name + +| | | +| ---------- | ----------------------------------------------- | +| Key | `workload.$name.podSpec.dnsConfig.options.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + dnsConfig: + options: + - name: ndots + value: "1" +``` + +--- + +###### `dnsConfig.options.value` + +Pod's dnsConfig options value + +| | | +| ---------- | ------------------------------------------------ | +| Key | `workload.$name.podSpec.dnsConfig.options.value` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + dnsConfig: + options: + - name: ndots + value: "1" +``` + +--- + +##### `tolerations` + +Pod's tolerations + +| | | +| ---------- | -------------------------------------------------- | +| Key | `workload.$name.podSpec.tolerations` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/podoptions#tolerations) | + +Example + +```yaml +workload: + workload-name: + podSpec: + tolerations: [] +``` + +--- + +###### `tolerations.operator` + +Pod's tolerations operator + +| | | +| ---------- | --------------------------------------------- | +| Key | `workload.$name.podSpec.tolerations.operator` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid values + +- `Equal` +- `Exists` + +Example + +```yaml +workload: + workload-name: + podSpec: + tolerations: + - operator: Exists +``` + +--- + +###### `tolerations.key` + +Pod's tolerations key + +:::note + +Required only when `operator` = `Equal` + +::: + +| | | +| ---------- | ---------------------------------------- | +| Key | `workload.$name.podSpec.tolerations.key` | +| Type | `string` | +| Required | ❌/✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + tolerations: + - operator: Equal + key: key +``` + +--- + +###### `tolerations.value` + +Pod's tolerations value + +:::note + +Required only when `operator` = `Equal` + +::: + +| | | +| ---------- | ------------------------------------------ | +| Key | `workload.$name.podSpec.tolerations.value` | +| Type | `string` | +| Required | ❌/✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + tolerations: + - operator: Equal + key: key + value: value +``` + +--- + +###### `tolerations.effect` + +Pod's tolerations effect + +| | | +| ---------- | ------------------------------------------- | +| Key | `workload.$name.podSpec.tolerations.effect` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Valid values + +- `NoExecute` +- `NoSchedule` +- `PreferNoSchedule` + +Example + +```yaml +workload: + workload-name: + podSpec: + tolerations: + - operator: Exists + effect: NoExecute +``` + +--- + +###### `tolerations.tolerationSeconds` + +Pod's tolerations tolerationSeconds + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `workload.$name.podSpec.tolerations.tolerationSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + podSpec: + tolerations: + - operator: Exists + effect: NoExecute + tolerationSeconds: 3600 +``` + +--- + +##### `runtimeClassName` + +Pod's runtimeClassName + +:::note + +> Note that it will only set the `runtimeClassName` on the pod that this container belongs to. + +::: + +| | | +| ---------- | ------------------------------------------------------- | +| Key | `workload.$name.podSpec.runtimeClassName` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ✅ | +| Default | See default [here](/truecharts-common/podoptions#runtimeclassname) | + +Example + +```yaml +workload: + workload-name: + podSpec: + runtimeClassName: some-runtime-class +``` + +--- + +##### `securityContext` + +Pod's securityContext + +| | | +| ---------- | -------------------------------------------------------------- | +| Key | `workload.$name.podSpec.securityContext` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/securitycontext#securitycontextpod) | + +Default + +```yaml +securityContext: + pod: + fsGroup: 568 + fsGroupChangePolicy: OnRootMismatch + supplementalGroups: + - 568 +``` + +Example + +```yaml +workload: + workload-name: + podSpec: + securityContext: {} +``` + +--- + +###### `securityContext.fsGroup` + +Pod's securityContext fsGroup + +| | | +| ---------- | ---------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.securityContext.fsGroup` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/securitycontext/#securitycontextpodfsgroup) | + +Example + +```yaml +workload: + workload-name: + podSpec: + securityContext: + fsGroup: 568 +``` + +--- + +###### `securityContext.fsGroupChangePolicy` + +Pod's securityContext fsGroupChangePolicy + +| | | +| ---------- | --------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.securityContext.fsGroupChangePolicy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/securitycontext#securitycontextpodfsgroupchangepolicy) | + +Valid values + +- `Always` +- `OnRootMismatch` + +Example + +```yaml +workload: + workload-name: + podSpec: + securityContext: + fsGroupChangePolicy: OnRootMismatch +``` + +--- + +###### `securityContext.supplementalGroups` + +Pod's securityContext supplementalGroups + +| | | +| ---------- | -------------------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.securityContext.supplementalGroups` | +| Type | `list` of `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/securitycontext#securitycontextpodsupplementalgroups) | + +Example + +```yaml +workload: + workload-name: + podSpec: + securityContext: + supplementalGroups: + - 568 +``` + +--- + +###### `securityContext.sysctls` + +:::note + +The **sysctl** `net.ipv4.ip_unprivileged_port_start` option will be automatically +set to the lowest `targetPort` (or `port` if targetPort is not defined) number assigned +to the pod. When hostNetwork is enabled the above **sysctl** option will not be added. + +::: + +| | | +| ---------- | --------------------------------------------------------------------- | +| Key | `workload.$name.podSpec.securityContext.sysctls` | +| Type | `list` of `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | See default [here](/truecharts-common/securitycontext#securitycontextpodsysctls) | + +Example + +```yaml +workload: + workload-name: + podSpec: + securityContext: + sysctls: [] +``` + +--- + +###### `securityContext.sysctls.name` + +Pod's securityContext sysctls name + +| | | +| ---------- | ----------------------------------------------------- | +| Key | `workload.$name.podSpec.securityContext.sysctls.name` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + securityContext: + sysctls: + - name: net.ipv4.ip_local_port_range + value: 1024 65535 +``` + +--- + +###### `securityContext.sysctls.value` + +Pod's securityContext sysctls value + +| | | +| ---------- | ------------------------------------------------------ | +| Key | `workload.$name.podSpec.securityContext.sysctls.value` | +| Type | `string` | +| Required | ✅ | +| Helm `tpl` | ✅ | +| Default | `""` | + +Example + +```yaml +workload: + workload-name: + podSpec: + securityContext: + sysctls: + - name: net.ipv4.ip_local_port_range + value: 1024 65535 +``` + +--- + +##### `containers` + +Define container(s) for the workload + +See [Container](/truecharts-common/container/) for more information + +| | | +| ---------- | --------------------------- | +| Key | `workload.$name.containers` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + containers: {} +``` + +--- + +##### `initContainers` + +Define initContainer(s) for the workload + +See [Container](/truecharts-common/container/) for more information + +| | | +| ---------- | ------------------------------- | +| Key | `workload.$name.initContainers` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + initContainers: {} +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + namespace: some-namespace + labels: + key: value + annotations: + key: value + podSpec: + labels: + key: value + annotations: + key: value + automountServiceAccountToken: true + hostNetwork: false + hostPID: false + shareProcessNamespace: false + enableServiceLinks: false + schedulerName: some-scheduler + priorityClassName: some-priority-class-name + hostname: some-hostname + terminationGracePeriodSeconds: 100 + nodeSelector: + disk_type: ssd + hostAliases: + - ip: 10.10.10.100 + hostnames: + - myserver.local + - storage.local + - ip: 10.10.10.101 + hostnames: + - myotherserver.local + - backups.local + dnsPolicy: ClusterFirst + dnsConfig: + nameservers: + - 1.1.1.1 + - 1.0.0.1 + searches: + - ns1.svc.cluster-domain.example + - my.dns.search.suffix + options: + - name: ndots + value: "1" + - name: edns0 + tolerations: + - operator: Exists + effect: NoExecute + tolerationSeconds: 3600 + runtimeClassName: some-runtime-class + securityContext: + fsGroup: 568 + fsGroupChangePolicy: OnRootMismatch + supplementalGroups: + - 568 + sysctls: + - name: net.ipv4.ip_local_port_range + value: 1024 65535 +``` + +Full examples for each workload type can be found here + +- [`Deployment`](/truecharts-common/workload/deployment) +- [`DaemonSet`](/truecharts-common/workload/daemonset) +- [`StatefulSet`](/truecharts-common/workload/statefulset) +- [`CronJob`](/truecharts-common/workload/cronjob) +- [`Job`](/truecharts-common/workload/job) diff --git a/charts/library/common/docs/workload/job.md b/charts/library/common/docs/workload/job.md new file mode 100644 index 00000000000..bfc65a50893 --- /dev/null +++ b/charts/library/common/docs/workload/job.md @@ -0,0 +1,188 @@ +--- +title: Job +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/workload/job#full-examples) section for complete examples. +- See the [Workload](/truecharts-common/workload) documentation for more information + +::: + +:::tip + +Replace references to `$name` with the actual name you want to use. + +::: + +## Appears in + +- `.Values.workload.$name` + +## Notes + +Value of `workload.$name.podSpec.restartPolicy` can **not** be `Always` for this type of workload + +--- + +## `completionMode` + +Define the completionMode + +| | | +| ---------- | ------------------------------- | +| Key | `workload.$name.completionMode` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `NonIndexed` | + +Valid Values: + +- `Indexed` +- `NonIndexed` + +Example + +```yaml +workload: + workload-name: + completionMode: Indexed +``` + +--- + +## `backoffLimit` + +Define the backoffLimit + +| | | +| ---------- | ----------------------------- | +| Key | `workload.$name.backoffLimit` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `5` | + +Example + +```yaml +workload: + workload-name: + backoffLimit: 5 +``` + +--- + +## `completions` + +Define the completions + +| | | +| ---------- | ---------------------------- | +| Key | `workload.$name.completions` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + completions: 5 +``` + +--- + +## `parallelism` + +Define the parallelism + +| | | +| ---------- | ---------------------------- | +| Key | `workload.$name.parallelism` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `1` | + +Example + +```yaml +workload: + workload-name: + parallelism: 5 +``` + +--- + +## `ttlSecondsAfterFinished` + +Define the ttlSecondsAfterFinished + +| | | +| ---------- | ---------------------------------------- | +| Key | `workload.$name.ttlSecondsAfterFinished` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `120` | + +Example + +```yaml +workload: + workload-name: + ttlSecondsAfterFinished: 100 +``` + +--- + +## `activeDeadlineSeconds` + +Define the activeDeadlineSeconds + +| | | +| ---------- | -------------------------------------- | +| Key | `workload.$name.activeDeadlineSeconds` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + activeDeadlineSeconds: 100 +``` + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + type: Job + backoffLimit: 5 + completionMode: Indexed + completions: 5 + parallelism: 5 + ttlSecondsAfterFinished: 100 + activeDeadlineSeconds: 100 + podSpec: + restartPolicy: Never + + other-workload-name: + enabled: true + primary: false + type: Job + podSpec: {} +``` diff --git a/charts/library/common/docs/workload/statefulset.md b/charts/library/common/docs/workload/statefulset.md new file mode 100644 index 00000000000..8c9e62a667d --- /dev/null +++ b/charts/library/common/docs/workload/statefulset.md @@ -0,0 +1,223 @@ +--- +title: StatefulSet +--- + +:::note + +- Examples under each key are only to be used as a placement guide +- See the [Full Examples](/truecharts-common/workload/statefulset#full-examples) section for complete examples. +- See the [Workload](/truecharts-common/workload) documentation for more information + +::: + +:::tip + +Replace references to `$name` with the actual name you want to use. + +::: + +## Appears in + +- `.Values.workload.$name` + +## Notes + +Value of `workload.$name.podSpec.restartPolicy` can only be `Always` for this type of workload + +--- + +## `replicas` + +Define the number of replicas + +| | | +| ---------- | ------------------------- | +| Key | `workload.$name.replicas` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `1` | + +Example + +```yaml +workload: + workload-name: + replicas: 1 +``` + +--- + +## `revisionHistoryLimit` + +Define the number of history revisions + +| | | +| ---------- | ------------------------------------- | +| Key | `workload.$name.revisionHistoryLimit` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `3` | + +Example + +```yaml +workload: + workload-name: + revisionHistoryLimit: 3 +``` + +--- + +## `strategy` + +Define the strategy of the workload + +| | | +| ---------- | ------------------------- | +| Key | `workload.$name.strategy` | +| Type | `string` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `RollingUpdate` | + +Valid Values: + +- `OnDelete` +- `RollingUpdate` + +Example + +```yaml +workload: + workload-name: + strategy: RollingUpdate +``` + +--- + +## `rollingUpdate` + +Define the rollingUpdate options + +:::note + +Can only be used when `workload.$name.strategy` is `RollingUpdate` + +::: + +| | | +| ---------- | ------------------------------ | +| Key | `workload.$name.rollingUpdate` | +| Type | `map` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | `{}` | + +Example + +```yaml +workload: + workload-name: + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 +``` + +--- + +## `rollingUpdate.maxUnavailable` + +Define the maxUnavailable + +:::note + +Can only be used when `workload.$name.strategy` is `RollingUpdate` + +::: + +| | | +| ---------- | --------------------------------------------- | +| Key | `workload.$name.rollingUpdate.maxUnavailable` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + rollingUpdate: + maxUnavailable: 1 +``` + +--- + +## `rollingUpdate.partition` + +Define the partition + +:::note + +Can only be used when `workload.$name.strategy` is `RollingUpdate` + +::: + +| | | +| ---------- | ---------------------------------------- | +| Key | `workload.$name.rollingUpdate.partition` | +| Type | `int` | +| Required | ❌ | +| Helm `tpl` | ❌ | +| Default | unset | + +Example + +```yaml +workload: + workload-name: + rollingUpdate: + partition: 1 +``` + +--- + +Notes: + +View common `keys` of `workload` in [workload Documentation](/truecharts-common/workload). + +> Value of `workload.[workload-name].podSpec.restartPolicy` can only be `Always` for this type of workload + +--- + +## Full Examples + +```yaml +workload: + workload-name: + enabled: true + primary: true + type: StatefulSet + replicas: 1 + revisionHistoryLimit: 3 + strategy: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + partition: 1 + podSpec: {} + + other-workload-name: + enabled: true + primary: false + type: StatefulSet + replicas: 1 + revisionHistoryLimit: 3 + strategy: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + partition: 1 + podSpec: {} +```