From 38ea19c459b120e723b81d1f594f67219d06288f Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Date: Wed, 21 Oct 2020 22:08:33 +0500 Subject: [PATCH] Add readme for ix-chart --- charts/ix-chart/2010.0.1/README.md | 93 +++++++++++++++++++++++++++++- 1 file changed, 92 insertions(+), 1 deletion(-) diff --git a/charts/ix-chart/2010.0.1/README.md b/charts/ix-chart/2010.0.1/README.md index 1c3372364b2..4d27f382d16 100644 --- a/charts/ix-chart/2010.0.1/README.md +++ b/charts/ix-chart/2010.0.1/README.md @@ -1 +1,92 @@ -blah blah \ No newline at end of file +# iX Chart + +iX-chart is a chart designed to let user deploy a docker image in a TrueNAS SCALE kubernetes cluster. +It provides a mechanism to specify workload type, add external host interfaces in the pods, configure volumes and allocate host resources to the workload. + +This chart will deploy a docker image as a kubernetes workload allowing user to configure the workload deployment / management. + +## Introduction + +iX-chart is designed for simple single docker image deployments. + +## Configuration + +The following table lists the configurable parameters of the iX chart and +their default values. + +| Parameter | Description | Default | +|:-------------------------------|:----------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------| +| `workloadType` | Specify type of workload to deploy | `Deployment` | +| `cronSchedule` | Specify schedule for cronjob if `workloadType` is `CronJob`. | `{"minute": "5", "hour": "*", "dom": "*", "month": "*", "dow": "*"}` | +| `image.repository` | The image repository to pull from | `debian` | +| `image.tag` | The image tag to pull from | `latest` | +| `image.pullPolicy` | Image pull policy | `IfNotPresent` | +| `updateStrategy` | Upgrade Policy | `RollingUpdate` | +| `restartPolicy` | Restart Policy for containers in workload | `Always` | +| `jobRestartPolicy` | Restart Policy for job type workload ( only applicable if `workloadType` is `Job`/`CronJob` | `OnFailure` | +| `containerCommand` | Commands to execute inside container overriding image CMD default | `null` | +| `containerArgs` | Specify arguments for container command | `null` | +| `containerEnvironmentVariables`| Container Environment Variables | `null` | +| `externalInterfaces` | Add external interfaces in the pod | `null` | +| `dnsPolicy` | Specify DNS Policy for pod | `Default` | +| `dnsConfig` | Specify custom DNS configuration which will be applied to the pod | `{"nameservers": [], "searches": []}` | +| `portForwardingList` | Specify ports of node and workload to forward traffic from node port to workload port | `null` | +| `hostPathVolumes` | Specify host paths to be used as hostpath volumes for the workload | `null` | +| `volumes` | Specify `ix_volumes` | `null` | +| `livenessProbe` | Configure Liveness Probe for workload | `null` | +| `gpuConfiguration` | Allocate GPU to workload ( if available ) | `{}` | + + +## Persistence + +Chart release iX chart offers 2 ways to have persistent storage: + +1) `hostPathVolumes` +2) `volumes` + +For (1), they are kubernetes host path volumes which the user can assign to the workload with RO/RW permissions. + +(2) is a host path volume as well but it operates differently then (1) in terms of where it lives and how it's lifecycle is tied to the chart release. +For (2), users specify where they would like persistent storage in the workload and a dataset name ( it should be unique per each chart release ), based on this input, +system will create a dataset and then use it as a host path volume for the workload. During upgrades, snapshot will be taken for these volumes and on rollback users can subsequently +restore the snapshots hence the data. +When a chart release will be deleted, all (2) volumes data will be deleted unlike (1) ( until of course they are not in the chart release's dataset path ). + +## Recommended Persistence Configuration Examples + +The following is a recommended configuration example for creating ix volumes + +``` +volumes: [ + { + "datasetName": "ix_volume1", + "mountPath": "/mount_test1" + }, + { + "datasetName": "ix_volume2", + "mountPath": "/mount_test2" + } +] + +``` + +`mountPath` refers to the path inside the pod. + +--- + +The following is a recommended configuration example for `hostPathVolumes` + +``` +hostPathVolumes: [ + { + "hostPath": "/mnt/pool/test_dir", + "mountPath": "/test_dir", + "readOnly": true + }, + { + "hostPath": "/mnt/pool/test_file", + "mountPath": "/test_file", + "readOnly": true + } +] +```