TrueChartsClone/test/ix-chart/2010.0.1
Waqar Ahmed 0f51e88a9f Add external interfaces configuration example. 2020-10-22 18:46:12 +05:00
..
templates
.helmignore
Chart.yaml
README.md Add external interfaces configuration example. 2020-10-22 18:46:12 +05:00
app-readme.md
questions.yaml
values.yaml

README.md

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 ).

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
  }
]

External Interfaces Configuration Examples

"externalInterfaces": [
  {
    "hostInterface": "ens3",
    "ipam": {"type": "dhcp"}
  },
  {
     "hostInterface": "br0",
     "ipam": {
       "type": "static",
       "staticIPConfigurations": ["192.168.0.120/24"],
       "staticRoutes": [
         {"destination": "0.0.0.0/0", "gateway": "192.168.0.1"}
       ]
     }
  }
]

The first entry in the above configuration example will add an external interface in the pod using macvlan with ipam being set to dhcp. Second entry will add an external interface in the pod using bridge and using static IP configuration for the external interface.