remove official IXchart

This commit is contained in:
kjeld Schouten-Lebbing 2020-12-22 13:45:04 +01:00
parent d86885bc24
commit bc75dcaef9
No known key found for this signature in database
GPG Key ID: 4CDAD4A532BC1EDB
18 changed files with 0 additions and 1107 deletions

View File

@ -1,23 +0,0 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

View File

@ -1,23 +0,0 @@
apiVersion: v2
name: ix-chart
description: A Helm chart for deploying simple workloads Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 2012.0.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
appVersion: v1

View File

@ -1,118 +0,0 @@
# 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": []}` |
| `hostNetwork` | Use host network for workload ( similar to docker host networking ) | `false` |
| `hostPortsList` | Specify ports of host and workload to forward traffic from host port to workload port. | `null` |
| `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
}
]
```
## 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.

View File

@ -1,4 +0,0 @@
# 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.

View File

@ -1,463 +0,0 @@
groups:
- name: "Container Images"
description: "Image to be used for container"
- name: "Container Entrypoint"
description: "Configuration of the executable that will be run when the container is started"
- name: "Container Environment Variables"
description: "Set the environment that will be visible to the container"
- name: "Networking"
description: "Configure networking for container"
- name: "Storage"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Health Check"
description: "Define mechanism to periodically probe the container to ensure it's functioning as desired"
- name: "Workload Details"
description: "Configure how workload should be deployed"
- name: "Scaling/Upgrade Policy"
description: "Configure how pods are replaced when configuration is upgraded"
- name: "Restart Policy"
description: "Configure when pod should be restarted in case of failure"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
questions:
# Workload type
- variable: workloadType
description: "Please specify type of workload to deploy"
label: "Workload Type"
group: "Workload Details"
schema:
type: string
default: "Deployment"
required: true
enum:
- value: "Deployment"
description: "Deploy a Deployment workload"
- value: "Job"
description: "Deploy job workload"
- value: "CronJob"
description: "Deploy cronjob workload"
# Cronjob schedule
- variable: cronSchedule
label: "Cron Schedule"
group: "Workload Details"
schema:
type: cron
show_if: [["workloadType", "=", "CronJob"]]
default:
minute: "5"
# Image related
- variable: image
description: "Docker Image Details"
label: "Docker Image"
group: "Container Images"
schema:
type: dict
required: true
attrs:
- variable: repository
description: "Docker image repository"
label: "Image repository"
schema:
type: string
required: true
- variable: tag
description: "Tag to use for specified image"
label: "Image Tag"
schema:
type: string
default: "latest"
- variable: pullPolicy
description: "Docker Image Pull Policy"
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Update strategy
- variable: updateStrategy
description: "Upgrade Policy"
label: "Update Strategy"
group: "Scaling/Upgrade Policy"
schema:
type: string
show_if: [["workloadType", "=", "Deployment"]]
default: "RollingUpdate"
enum:
- value: "RollingUpdate"
description: "Create new pods and then kill old ones"
- value: "Recreate"
description: "Kill existing pods before creating new ones"
# Restart Policy
- variable: restartPolicy
description: "Restart Policy for workload"
label: "Restart Policy"
group: "Restart Policy"
schema:
type: string
show_if: [["workloadType", "=", "Deployment"]]
default: "Always"
enum:
- value: "Always"
description: "Always restart containers in a pod if they exit"
- value: "OnFailure"
description: "Only restart containers if they exit with a failure"
- value: "Never"
description: "Never restart containers if they exit"
- variable: jobRestartPolicy
description: "Restart Policy for workload"
label: "Restart Policy"
group: "Restart Policy"
schema:
type: string
default: "OnFailure"
show_if: [["workloadType", "!=", "Deployment"]]
enum:
- value: "OnFailure"
description: "Only restart job if it fails"
- value: "Never"
description: "Never restart job even if it fails"
# Configurable CMD / Entrypoint / Environment Variables
- variable: containerCommand
description: "Commands to execute inside container overriding image CMD default"
label: "Container CMD"
group: "Container Entrypoint"
schema:
type: list
items:
- variable: command
description: "Container Command"
label: "Command"
schema:
type: string
- variable: containerArgs
description: "Specify arguments for container command"
label: "Container Args"
group: "Container Entrypoint"
schema:
type: list
items:
- variable: arg
description: "Container Arg"
label: "Arg"
schema:
type: string
- variable: containerEnvironmentVariables
description: "Container Environment Variables"
label: "Container Environment Variables"
group: "Container Environment Variables"
schema:
type: list
items:
- variable: environmentVariable
description: "Container Environment Variable"
label: "Container Environment Variable"
schema:
type: dict
attrs:
- variable: name
description: "Environment Variable Name"
label: "Environment Variable Name"
schema:
type: string
required: true
- variable: value
description: "Environment Variable Value"
label: "Environment Variable Value"
schema:
type: string
required: true
# Networking options
- variable: externalInterfaces
description: "Add External Interfaces"
label: "Add external Interfaces"
group: "Networking"
schema:
type: list
items:
- variable: interfaceConfiguration
description: "Interface Configuration"
label: "Interface Configuration"
schema:
type: dict
$ref:
- "normalize/interfaceConfiguration"
attrs:
- variable: hostInterface
description: "Please specify host interface"
label: "Host Interface"
schema:
type: string
required: true
$ref:
- "definitions/interface"
- variable: ipam
description: "Define how IP Address will be managed"
label: "IP Address Management"
schema:
type: dict
required: true
attrs:
- variable: type
description: "Specify type for IPAM"
label: "IPAM Type"
schema:
type: string
required: true
enum:
- value: "dhcp"
description: "Use DHCP"
- value: "static"
description: "Use static IP"
show_subquestions_if: "static"
subquestions:
- variable: staticIPConfigurations
label: "Static IP Addresses"
schema:
type: list
items:
- variable: staticIP
label: "Static IP"
schema:
type: ipaddr
cidr: true
- variable: staticRoutes
label: "Static Routes"
schema:
type: list
items:
- variable: staticRouteConfiguration
label: "Static Route Configuration"
schema:
type: dict
attrs:
- variable: destination
label: "Destination"
schema:
type: ipaddr
cidr: true
required: true
- variable: gateway
label: "Gateway"
schema:
type: ipaddr
cidr: false
required: true
- variable: dnsPolicy
label: "DNS Policy"
description: "Default behaviour is where Pod inherits the name resolution configuration from the node that the pods run on, if None is specified, It allows a Pod to ignore DNS settings from the Kubernetes environment."
group: "Networking"
schema:
type: string
default: "Default"
enum:
- value: "Default"
description: "Use Default DNS Policy"
- value: "None"
description: "Ignore DNS settings from the Kuberentes cluster"
- variable: dnsConfig
label: "DNS Configuration"
group: "Networking"
description: "Specify custom DNS configuration which will be applied to the pod"
schema:
type: dict
attrs:
- variable: nameservers
label: "Nameservers"
schema:
default: []
type: list
items:
- variable: nameserver
label: "Nameserver"
schema:
type: string
- variable: searches
label: "Searches"
schema:
default: []
type: list
items:
- variable: search
label: "Search Entry"
schema:
type: string
- variable: hostNetwork
label: "Provide access to node network namespace for the workload"
group: "Networking"
schema:
type: boolean
default: false
- variable: hostPortsList
label: "Specify host ports for the workload"
description: "Only use host ports if scaling of a workload is not required"
group: "Networking"
schema:
show_if: [["updateStrategy", "=", "Recreate"]]
type: list
items:
- variable: hostPortConfiguration
label: "Host Port Configuration"
schema:
type: dict
attrs:
- variable: containerPort
label: "Container Port"
schema:
type: string
required: true
- variable: hostPort
label: "Host Port"
schema:
type: string
required: true
- variable: portForwardingList
label: "Specify Node ports to forward to workload"
group: "Networking"
description: "Specify ports of node and workload to forward traffic from node port to workload port"
schema:
type: list
items:
- variable: portForwarding
label: "Port Forwarding Configuration"
schema:
type: dict
attrs:
- variable: containerPort
label: "Container Port"
schema:
type: int
required: true
- variable: nodePort
label: "Node Port"
schema:
type: int
required: true
min: 9000
max: 65535
- variable: protocol
label: "Protocol"
schema:
type: string
default: "TCP"
enum:
- value: "TCP"
description: "TCP Protocol"
- value: "UDP"
description: "UDP Protocol"
# Storage Options
# Host path based volumes
- variable: hostPathVolumes
label: "Host Path Volumes"
group: "Storage"
schema:
type: list
items:
- variable: hostPathConfiguration
label: "Host Path Configuration"
schema:
type: dict
attrs:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: mountPath
label: "Mount Path"
description: "Path where host path will be mounted inside the pod"
schema:
type: path
required: true
- variable: readOnly
label: "Read Only"
schema:
type: boolean
default: false
# Volumes
- variable: volumes
label: "Volumes"
group: "Storage"
schema:
type: list
items:
- variable: volume
label: "Volume"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: mountPath
label: "Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: datasetName
label: "Dataset Name"
schema:
type: string
required: true
# Pod Probes
# Liveness Probe
- variable: livenessProbe
label: "Liveness Probe"
description: "Configure Liveness Probe"
group: "Health Check"
schema:
type: dict
default: null
"null": true
attrs:
- variable: command
label: "Liveness command"
description: "Specify a command to determine liveness of pod"
schema:
type: list
required: true
items:
- variable: commandArg
label: "Command Arg"
schema:
type: string
- variable: initialDelaySeconds
label: "Seconds Delay"
description: "Seconds to delay the first liveness probe"
schema:
type: int
default: 5
- variable: periodSeconds
label: "Period Seconds"
description: "Specify number of seconds to run liveness probe"
schema:
type: int
default: 10
# Specify GPU configuration
- variable: gpuConfiguration
label: "GPU Configuration"
group: "Resource Reservation"
schema:
type: dict
$ref:
- "definitions/gpuConfiguration"

View File

@ -1,2 +0,0 @@
1. Get the application URL by running these commands:

View File

@ -1,77 +0,0 @@
{{/*
Container Command
*/}}
{{- define "containerCommand" }}
{{- if .Values.containerCommand }}
command:
{{- range .Values.containerCommand }}
- {{ . | quote}}
{{- end }}
{{- end }}
{{- end }}
{{/*
Container Args
*/}}
{{- define "containerArgs" }}
{{- if .Values.containerArgs }}
args:
{{- range .Values.containerArgs }}
- {{ . | quote}}
{{- end }}
{{- end }}
{{- end }}
{{/*
Container Environment Variables
*/}}
{{- define "containerEnvVariables" }}
{{- if .Values.containerEnvironmentVariables }}
env:
{{- range .Values.containerEnvironmentVariables }}
- name: {{ .name | quote }}
value: {{ .value | quote }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Container Liveness Probe
*/}}
{{- define "containerLivenssProbe" }}
{{- if .Values.livenessProbe }}
livenessProbe:
exec:
command:
{{ toYaml .Values.livenessProbe.command | indent 16 }}
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.periodSeconds }}
{{- end }}
{{- end }}
{{/*
Container Ports
*/}}
{{- define "containerPorts" }}
{{- if or .Values.portForwardingList .Values.hostPortsList }}
ports:
{{- range $index, $config := .Values.portForwardingList }}
- containerPort: {{ $config.containerPort }}
{{- end }}
{{- range $index, $config := .Values.hostPortsList }}
- containerPort: {{ $config.containerPort }}
hostPort: {{ $config.hostPort }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Container Resource Configuration
*/}}
{{- define "containerResourceConfiguration" }}
{{- if .Values.gpuConfiguration }}
resources:
limits:
{{- toYaml .Values.gpuConfiguration | nindent 4 }}
{{- end }}
{{- end }}

View File

@ -1,71 +0,0 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "ix-chart.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "ix-chart.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "ix-chart.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "ix-chart.labels" -}}
helm.sh/chart: {{ include "ix-chart.chart" . }}
{{ include "ix-chart.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "ix-chart.selectorLabels" -}}
app.kubernetes.io/name: {{ include "ix-chart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "ix-chart.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "ix-chart.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{/*
Convert cron schema object to cron format
*/}}
{{- define "cronExpression" }}
{{- printf "%s %s %s %s %s " .minute .hour .dom .month .dow }}
{{- end }}

View File

@ -1,10 +0,0 @@
{{/*
DNS Configuration
*/}}
{{- define "dnsConfiguration" }}
dnsPolicy: {{ .Values.dnsPolicy }}
{{- if .Values.dnsConfig }}
dnsConfig:
{{- toYaml .Values.dnsConfig | nindent 2 }}
{{- end }}
{{- end }}

View File

@ -1,36 +0,0 @@
{{/*
Volumes Configuration
*/}}
{{- define "volumeConfiguration" }}
{{- if or .Values.ixVolumes .Values.hostPathVolumes }}
volumes:
{{- range $index, $hostPathConfiguration := .Values.hostPathVolumes }}
- name: ix-host-path-{{ $.Release.Name }}-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{- end }}
{{- range $index, $hostPathConfiguration := .Values.ixVolumes }}
- name: ix-host-volume-{{ $.Release.Name }}-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Volume Mounts Configuration
*/}}
{{- define "volumeMountsConfiguration" }}
{{- if or .Values.hostPathVolumes .Values.ixVolumes }}
volumeMounts:
{{- range $index, $hostPathConfiguration := .Values.hostPathVolumes }}
- mountPath: {{ $hostPathConfiguration.mountPath }}
name: ix-host-path-{{ $.Release.Name }}-{{ $index }}
readOnly: {{ $hostPathConfiguration.readOnly }}
{{- end }}
{{- range $index, $hostPathConfiguration := .Values.ixVolumes }}
- mountPath: {{ $hostPathConfiguration.mountPath }}
name: ix-host-volume-{{ $.Release.Name }}-{{ $index }}
{{- end }}
{{- end }}
{{- end }}

View File

@ -1,141 +0,0 @@
{{/*
Check if workload type is a deployment
*/}}
{{- define "workloadIsDeployment" }}
{{- if eq .Values.workloadType "Deployment" }}
{{- true -}}
{{- else }}
{{- false -}}
{{- end }}
{{- end }}
{{/*
Check if workload type is a cronjob
*/}}
{{- define "workloadIsCronJob" }}
{{- if eq .Values.workloadType "CronJob" }}
{{- true -}}
{{- else }}
{{- false -}}
{{- end }}
{{- end }}
{{/*
Get API Version based on workload type
*/}}
{{- define "apiVersion" -}}
{{- if eq (include "workloadIsDeployment" .) "true" }}
{{- printf "apps/v1" }}
{{- else if eq (include "workloadIsCronJob" .) "true" }}
{{- printf "batch/v1beta1" }}
{{- else }}
{{- printf "batch/v1" }}
{{- end }}
{{- end }}
{{/*
Get Restart policy based on workload type
*/}}
{{- define "restartPolicy" -}}
{{- if eq (include "workloadIsDeployment" .) "true" }}
{{- printf "%s" .Values.restartPolicy }}
{{- else }}
{{- printf "%s" .Values.jobRestartPolicy }}
{{- end }}
{{- end }}
{{/*
Pod specification
*/}}
{{- define "podSepc" }}
restartPolicy: {{ template "restartPolicy" . }}
hostNetwork: {{ .Values.hostNetwork }}
containers:
- name: {{ .Chart.Name }}
{{- include "volumeMountsConfiguration" . | indent 2}}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default "latest" }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- include "containerCommand" . | indent 2 }}
{{- include "containerArgs" . | indent 2 }}
{{- include "containerEnvVariables" . | indent 2 }}
{{- include "containerLivenssProbe" . | indent 2 }}
{{- include "containerPorts" . | indent 2 }}
{{- include "containerResourceConfiguration" . | indent 2 }}
{{- include "volumeConfiguration" . }}
{{- include "dnsConfiguration" . }}
{{- end }}
{{/*
Annotations for workload
*/}}
{{- define "workloadAnnotations" }}
rollme: {{ randAlphaNum 5 | quote }}
{{- if .Values.ixExternalInterfacesConfigurationNames }}
k8s.v1.cni.cncf.io/networks: {{ join ", " .Values.ixExternalInterfacesConfigurationNames }}
{{- end }}
{{- end }}
{{/*
Metadata for workload
*/}}
{{- define "commonMetadataWorkload" }}
labels:
{{- include "ix-chart.selectorLabels" . | nindent 2 }}
annotations:
{{- include "workloadAnnotations" . | nindent 2 }}
{{- end }}
{{/*
Deployment Spec
*/}}
{{- define "deploymentSpec" }}
strategy:
{{- if and (eq .Values.updateStrategy "RollingUpdate") .Values.hostPortsList }}
{{- fail "RollingUpdate is not allowed when host ports are specified" }}
{{- end }}
type: {{ .Values.updateStrategy }}
selector:
matchLabels:
{{- include "ix-chart.selectorLabels" . | nindent 4 }}
template:
metadata:
{{ include "commonMetadataWorkload" . | nindent 4 }}
spec:
{{- include "podSepc" . | indent 4 }}
{{- end }}
{{/*
Job Spec Common
*/}}
{{- define "jobSpecCommon" }}
metadata:
{{ include "commonMetadataWorkload" . | nindent 4 }}
spec:
{{- include "podSepc" . | indent 2 }}
{{- end }}
{{/*
Job Spec
*/}}
{{- define "jobSpec" }}
template:
{{ include "jobSpecCommon" . | nindent 2 }}
{{- end }}
{{/*
CronJob Spec
*/}}
{{- define "cronJobSpec" }}
schedule: {{ include "cronExpression" .Values.cronSchedule | quote }}
jobTemplate:
spec:
{{ include "jobSpec" . | nindent 4 }}
{{- end }}

View File

@ -1,9 +0,0 @@
{{- range $index, $iface := .Values.ixExternalInterfacesConfiguration }}
---
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: ix-{{ $.Release.Name }}-{{ $index }}
spec:
config: '{{ $iface }}'
{{- end }}

View File

@ -1,20 +0,0 @@
{{- if .Values.portForwardingList }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "ix-chart.fullname" . }}
labels:
{{- include "ix-chart.labels" . | nindent 4 }}
spec:
type: NodePort
ports:
{{- range $index, $config := .Values.portForwardingList }}
- port: {{ $config.containerPort }}
targetPort: {{ $config.containerPort }}
protocol: {{ $config.protocol }}
nodePort: {{ $config.nodePort }}
name: ix-{{ $.Release.Name }}-{{ $config.nodePort }}-{{ $index }}
{{- end }}
selector:
{{- include "ix-chart.selectorLabels" . | nindent 4 }}
{{- end }}

View File

@ -1,17 +0,0 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ .Release.Name }}-deployment-test"
annotations:
"helm.sh/hook": test
spec:
containers:
- name: {{ .Release.Name }}-deployment-test
image: "busybox"
command:
- nc
args:
- "-vz"
- "{{ include "ix-chart.fullname" . }}"
- "80"
restartPolicy: Never

View File

@ -1,14 +0,0 @@
apiVersion: {{ template "apiVersion" . }}
kind: {{ .Values.workloadType }}
metadata:
name: {{ include "ix-chart.fullname" . }}
labels:
{{- include "ix-chart.labels" . | nindent 4 }}
spec:
{{- if eq (include "workloadIsDeployment" .) "true" }}
{{ include "deploymentSpec" . | nindent 2 }}
{{- else if eq (include "workloadIsCronJob" .) "true" }}
{{ include "cronJobSpec" . | nindent 2 }}
{{- else }}
{{ include "jobSpec" . | nindent 2 }}
{{- end }}

View File

@ -1,39 +0,0 @@
# Default values for ix-chart.
image:
repository: nginx
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: latest
# Restart / Update policy
restartPolicy: Always
updateStrategy: RollingUpdate
# Container CMD / entrypoint
containerCommand: []
containerArgs: []
containerEnvironmentVariables: []
# Network related configuration
externalInterfaces: []
portForwardingList: [{"containerPort": 80, "nodePort": 32000}]
hostPortsList: []
hostNetwork: false
dnsPolicy: Default
dnsConfig:
nameservers: []
searches: []
# Storage related configuration
hostPathVolumes: []
volumes: []
# Probes
# Liveness Probe
livenessProbe: null
# Workload type
workloadType: "Deployment"
gpuConfiguration: {}

View File

@ -1,38 +0,0 @@
# Default values for ix-chart.
image:
repository: debian
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "latest"
# Restart / Update policy
restartPolicy: Always
updateStrategy: RollingUpdate
# Container CMD / entrypoint
containerCommand: []
containerArgs: []
containerEnvironmentVariables: []
# Network related configuration
externalInterfaces: []
portForwardingList: []
hostNetwork: false
dnsPolicy: Default
dnsConfig:
nameservers: []
searches: []
# Storage related configuration
hostPathVolumes: []
volumes: []
# Probes
# Liveness Probe
livenessProbe: null
# Workload type
workloadType: "Deployment"
gpuConfiguration: {}

View File

@ -1,2 +0,0 @@
categories:
- generic