mirror of
https://github.com/truenas/charts.git
synced 2026-02-10 05:46:45 +08:00
* Set nvidia caps to void when no gpu is passed * add tests to init containers too * Additionally add `render` group when gpu is added * Correctly handle "0" gpu * handle fsGroup 0 properly * fix gh highlight * Correct nvidia variable and add additional check for runtime * cast both sides of the comparison * fix externalinterfaces nesting * Add dnsConfig missing docs
146 lines
15 KiB
Markdown
146 lines
15 KiB
Markdown
# workload
|
|
|
|
| Key | Type | Required | Helm Template | Default | Description |
|
|
| :------------------------------------------------------------------- | :-------: | :------: | :----------------: | :-------------------------------------------------------------: | :----------------------------------------------------------------------- |
|
|
| workload | `dict` | ❌ | ❌ | `{}` | Define the workload as dicts |
|
|
| workload.[workload-name] | `dict` | ✅ | ❌ | `{}` | Holds workload definition |
|
|
| workload.[workload-name].enabled | `boolean` | ✅ | ❌ | `false` | Enables or Disables the workload |
|
|
| workload.[workload-name].primary | `boolean` | ✅ | ❌ | `false` | Sets the workload as primary |
|
|
| workload.[workload-name].labels | `dict` | ❌ | ✅ (On value only) | `{}` | Additional labels for workload |
|
|
| workload.[workload-name].annotations | `dict` | ❌ | ✅ (On value only) | `{}` | Additional annotations for workload |
|
|
| workload.[workload-name].type | `string` | ✅ | ❌ | `""` | Define the kind of the workload (Deployment, CronJob, Job) |
|
|
| workload.[workload-name].podSpec | `dict` | ✅ | ❌ | `{}` | Holds the pod definition |
|
|
| workload.[workload-name].podSpec.labels | `dict` | ❌ | ✅ (On value only) | `{}` | Additional Pod Labels |
|
|
| workload.[workload-name].podSpec.annotations | `dict` | ❌ | ✅ (On value only) | `{}` | Pod Annotations |
|
|
| workload.[workload-name].podSpec.automountServiceAccountToken | `boolean` | ❌ | ❌ | `{{ .Values.podOptions.automountServiceAccoutnToken }}` (false) | Pod's automountServiceAccountToken |
|
|
| workload.[workload-name].podSpec.hostNetwork | `boolean` | ❌ | ❌ | `{{ .Values.podOptions.hostNetwork }}` (false) | Pod's hostNetwork |
|
|
| workload.[workload-name].podSpec.enableServiceLinks | `boolean` | ❌ | ❌ | `{{ .Values.podOptions.enableServiceLinks }}` (false) | Pod's enableServiceLinks |
|
|
| workload.[workload-name].podSpec.restartPolicy | `string` | ❌ | ✅ | `{{ .Values.podOptions.restartPolicy }}` (Always) | Pod's restartPolicy. (Always, Never, OnFailure) |
|
|
| workload.[workload-name].podSpec.hostname | `string` | ❌ | ✅ | `""` | Pod's hostname |
|
|
| workload.[workload-name].podSpec.terminationGracePeriodSeconds | `int` | ❌ | ✅ | `{{ .Values.podOptions.terminationGracePeriodSeconds }}` (120) | Pod's terminationGracePeriodSeconds |
|
|
| workload.[workload-name].podSpec.hostAliases | `list` | ❌ | ❌ | | Pod's host aliases |
|
|
| workload.[workload-name].podSpec.hostAliases.ip | `string` | ❌ | ✅ | | Value for `ip` in hosts aliases |
|
|
| workload.[workload-name].podSpec.hostAliases.hostnames | `list` | ❌ | ❌ | | Hostnames for the `ip` in hosts aliases |
|
|
| workload.[workload-name].podSpec.hostAliases.hostnames.[host-name] | `string` | ❌ | ✅ | | [Value] for `hostnames` for the `ip` in hosts aliases |
|
|
| workload.[workload-name].podSpec.dnsPolicy | `string` | ❌ | ✅ | `{{ .Values.podOptions.dnsPolicy }}` (ClusterFirst) | Pod's DNS Policy (ClusterFirst, ClusterFirstWithHostNet, Default, None). |
|
|
| workload.[workload-name].podSpec.dnsConfig | `dict` | ❌ | ❌ | `{{ .Values.podOptions.dnsConfig }}` | Pod's DNS Config |
|
|
| workload.[workload-name].podSpec.dnsConfig.nameservers | `list` | ❌ | ✅ | `[]` | Pod's DNS Config - Nameservers (Max 3) |
|
|
| workload.[workload-name].podSpec.dnsConfig.nameservers.nameserver | `string` | ✅ | ✅ | `""` | Pod's DNS Config - Nameserver |
|
|
| workload.[workload-name].podSpec.dnsConfig.searches | `list` | ❌ | ✅ | `[]` | Pod's DNS Config - Searches (Max 6) |
|
|
| workload.[workload-name].podSpec.dnsConfig.searches.[search] | `string` | ✅ | ✅ | `""` | Pod's DNS Config - Search |
|
|
| workload.[workload-name].podSpec.dnsConfig.options | `dict` | ❌ | ❌ | `{}` | Pod's DNS Config - Options |
|
|
| workload.[workload-name].podSpec.dnsConfig.options.name | `string` | ✅ | ✅ | `""` | Pod's DNS Config - Option name |
|
|
| workload.[workload-name].podSpec.dnsConfig.options.value | `string` | ❌ | ✅ | `""` | Pod's DNS Config - Option value |
|
|
| workload.[workload-name].podSpec.tolerations | `list` | ❌ | ❌ | `{{ .Values.podOptions.tolerations }}` ([]) | Pod's Tolerations |
|
|
| workload.[workload-name].podSpec.tolerations.operator | `string` | ✅ | ✅ | | Toleration's `operator` (Equal, Exists) |
|
|
| workload.[workload-name].podSpec.tolerations.key | `string` | ❌/✅ | ✅ | | Toleration's `key`. Required only when `operator` = `Equal` |
|
|
| workload.[workload-name].podSpec.tolerations.value | `string` | ❌/✅ | ✅ | | Toleration's `value`. Required only when `operator` = `Equal` |
|
|
| workload.[workload-name].podSpec.tolerations.effect | `string` | ❌ | ✅ | | Toleration's `effect`.(NoExecute, NoSchedule, PreferNoSchedule) |
|
|
| workload.[workload-name].podSpec.tolerations.tolerationSeconds | `int` | ❌ | ❌ | | Toleration's `tolerationSeconds`. |
|
|
| workload.[workload-name].podSpec.runtimeClassName | `string` | ❌ | ✅ | `{{ .Values.podOptions.runtimeClassName }}` ("") | Pod's runtimeClassName |
|
|
| workload.[workload-name].podSpec.securityContext | `dict` | ❌ | ❌ | `{{ .Values.securityContext.pod }}` | Pod's securityContext |
|
|
| workload.[workload-name].podSpec.securityContext.fsGroup | `int` | ❌ | ❌ | `568` | Pod's fsGroup |
|
|
| workload.[workload-name].podSpec.securityContext.fsGroupChangePolicy | `string` | ❌ | ❌ | `OnRootMismatch` | Pod's fsGroupChangePolicy (Always, OnRootMismatch) |
|
|
| workload.[workload-name].podSpec.securityContext.supplementalGroups | `list` | ❌ | ❌ | `[]` | Pod's supplementalGroups (list of `int`) |
|
|
| workload.[workload-name].podSpec.securityContext.sysctls | `list` | ❌ | ❌ | `[]` | Pod's sysctls |
|
|
| workload.[workload-name].podSpec.securityContext.sysctls.name | `string` | ✅ | ✅ | `""` | `name` of the sysctl |
|
|
| workload.[workload-name].podSpec.securityContext.sysctls.value | `string` | ✅ | ✅ | `""` | `value` of the sysctl |
|
|
| workload.[workload-name].podSpec.containers | `dict` | ❌ | ❌ | `{}` | Define container(s) |
|
|
| workload.[workload-name].podSpec.initContainers | `dict` | ❌ | ❌ | `{}` | Define initContainer(s) |
|
|
|
|
---
|
|
|
|
Notes
|
|
|
|
> `dnsPolicy` is set automatically to `ClusterFirstWithHostNet` when `hostNetwork` is `true` > `runtimeClassName` will ignore any value set and use the `.Values.global.ixChartContext.nvidiaRuntimeClassName`,
|
|
> if a GPU is assigned to a container and Scale Middleware sets `.Values.global.ixChartContext.addNvidiaRuntimeClass` to `true`.
|
|
> Note that it will only set the `runtimeClassName` on the pod that this container belongs to.
|
|
> **sysctl** `net.ipv4.ip_unprivileged_port_start` will be automatically set to the lowest `targetPort` (or `port` if targetPort is not defined) number assigned to the pod.
|
|
> **sysctl** `net.ipv4.ping_group_range` will be automatically set to the lowest and highest `targetPort` (or `port` if targetPort is not defined) number assigned to the pod.
|
|
|
|
---
|
|
|
|
Appears in:
|
|
|
|
- `.Values.workload`
|
|
|
|
---
|
|
|
|
Naming scheme:
|
|
|
|
- Primary: `$FullName` (release-name-chart-name)
|
|
- Non-Primary: `$FullName-$WorkloadName` (release-name-chart-name-workload-name)
|
|
|
|
---
|
|
|
|
> Those are the common `keys` for all **workloads**.
|
|
> Additional keys, information and examples, see on the specific kind of workload
|
|
|
|
- [Deployment](deployment.md)
|
|
- [CronJob](cronjob.md)
|
|
- [Job](job.md)
|
|
|
|
> Additional keys, information and examples for `workload.[workload-name].podSpec.containers`.
|
|
|
|
- [Container](../container/README.md)
|
|
- [InitContainer](../container/README.md#initcontainer)
|
|
|
|
---
|
|
|
|
Examples:
|
|
|
|
```yaml
|
|
workload:
|
|
workload-name:
|
|
enabled: true
|
|
primary: true
|
|
labels:
|
|
key: value
|
|
annotations:
|
|
key: value
|
|
podSpec:
|
|
labels:
|
|
key: value
|
|
annotations:
|
|
key: value
|
|
automountServiceAccountToken: true
|
|
hostNetwork: false
|
|
enableServiceLinks: false
|
|
hostname: some-hostname
|
|
terminationGracePeriodSeconds: 100
|
|
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: "2"
|
|
- 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
|
|
```
|