feat(cronjobs): cronjob add suspend parameter

This commit is contained in:
weian
2022-09-27 20:55:27 +08:00
parent 2e064e65da
commit 4383dfb7a5
3 changed files with 157 additions and 199 deletions

View File

@ -14,4 +14,4 @@ type: library
# This is the chart version. This version number should be incremented each time you make changes # 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. # to the chart and its templates, including the app version.
version: 1.0.0 version: 1.1.0

147
README.md
View File

@ -4,38 +4,34 @@ This chart was originally forked from [`incubator/common`](https://github.com/he
It provides utilities that reflect best practices of Kubernetes chart development, making it faster for you to write charts. It provides utilities that reflect best practices of Kubernetes chart development, making it faster for you to write charts.
## Contents ## Contents
- [Getting Started](#getting-started) - [Getting Started](#getting-started)
* [Adding Repository](#adding-repository) - [Adding Repository](#adding-repository)
* [Adding Dependency](#adding-dependency) - [Adding Dependency](#adding-dependency)
* [Using Starter](#using-starter) - [Using Starter](#using-starter)
- [Resource Kinds](#resource-kinds) - [Resource Kinds](#resource-kinds)
* [`common.configMap`](#commonconfigmap) - [`common.configMap`](#commonconfigmap)
* [`common.cronJob`](#commoncronjob) - [`common.cronJob`](#commoncronjob)
* [`common.deployment`](#commondeployment) - [`common.deployment`](#commondeployment)
* [`common.hpa`](#commonhpa) - [`common.hpa`](#commonhpa)
* [`common.ingress`](#commoningress) - [`common.ingress`](#commoningress)
* [`common.pdb`](#commonpdb) - [`common.pdb`](#commonpdb)
* [`common.secret`](#commonsecret) - [`common.secret`](#commonsecret)
* [`common.service`](#commonservice) - [`common.service`](#commonservice)
* [`common.serviceAccount`](#commonserviceaccount) - [`common.serviceAccount`](#commonserviceaccount)
* [`common.serviceMonitor`](#commonservicemonitor) - [`common.serviceMonitor`](#commonservicemonitor)
* [`common.serviceMonitor.secret`](#commonservicemonitorsecret) - [`common.serviceMonitor.secret`](#commonservicemonitorsecret)
- [Partial Objects](#partial-objects) - [Partial Objects](#partial-objects)
* [`common.chart`](#commonchart) - [`common.chart`](#commonchart)
* [`common.container`](#commoncontainer) - [`common.container`](#commoncontainer)
* [`common.fullname`](#commonfullname) - [`common.fullname`](#commonfullname)
* [`common.labels`](#commonlabels) - [`common.labels`](#commonlabels)
* [`common.metadata`](#commonmetadata) - [`common.metadata`](#commonmetadata)
* [`common.name`](#commonname) - [`common.name`](#commonname)
* [`common.pod.template`](#commonpodtemplate) - [`common.pod.template`](#commonpodtemplate)
* [`common.selectorLabels`](#commonselectorlabels) - [`common.selectorLabels`](#commonselectorlabels)
* [`common.serviceAccountName`](#commonserviceaccountname) - [`common.serviceAccountName`](#commonserviceaccountname)
## Getting Started ## Getting Started
@ -84,8 +80,6 @@ $ curl https://raw.githubusercontent.com/hahow/common-chart/master/create.sh | b
Now, there is a chart in `./mychart`. You can edit it and create your own templates. Now, there is a chart in `./mychart`. You can edit it and create your own templates.
## Resource Kinds ## Resource Kinds
Kubernetes defines a variety of resource kinds, from `Secret` to `StatefulSet`. We define some of the most common kinds in a way that lets you easily work with them. Kubernetes defines a variety of resource kinds, from `Secret` to `StatefulSet`. We define some of the most common kinds in a way that lets you easily work with them.
@ -122,8 +116,6 @@ The [`common.service`](#commonservice) template is responsible for rendering the
Each implemented base resource is described in greater detail below. Each implemented base resource is described in greater detail below.
### `common.configMap` ### `common.configMap`
The `common.configMap` template accepts a list of two values: The `common.configMap` template accepts a list of two values:
@ -167,8 +159,6 @@ metadata:
name: release-name-mychart name: release-name-mychart
``` ```
### `common.cronJob` ### `common.cronJob`
The `common.cronJob` template accepts a list of five values: The `common.cronJob` template accepts a list of five values:
@ -187,28 +177,29 @@ It defines a basic `CronJob` with the following defaults:
In addition, it uses the following configuration from the `$cronJob`: In addition, it uses the following configuration from the `$cronJob`:
| Value | Description | | Value | Description |
| ----- | ----------- | | ------------------------------------- | ------------------------------------------------------- |
| `$cronJob.schedule` | Schedule for the cronjob | | `$cronJob.schedule` | Schedule for the cronjob |
| `$cronJob.concurrencyPolicy` | [optional] `Allow\|Forbid\|Replace` concurrent jobs | | `$cronJob.concurrencyPolicy` | [optional] `Allow\|Forbid\|Replace` concurrent jobs |
| `$cronJob.failedJobsHistoryLimit` | [optional] Specify the number of failed jobs to keep | | `$cronJob.failedJobsHistoryLimit` | [optional] Specify the number of failed jobs to keep |
| `$cronJob.successfulJobsHistoryLimit` | [optional] Specify the number of completed jobs to keep | | `$cronJob.successfulJobsHistoryLimit` | [optional] Specify the number of completed jobs to keep |
| `$cronJob.suspend` | [optional] Specify cronjob is suspend, default false |
Underneath the hood, it invokes [`common.pod.template`](#commonpodtemplate) template with `$pod` to populate the `PodTemplate`. Underneath the hood, it invokes [`common.pod.template`](#commonpodtemplate) template with `$pod` to populate the `PodTemplate`.
Example use: Example use:
```yaml ```yaml
{{- include "common.cronJob" (list . .Values.cronJob .Values .Values.serviceAccount) }} {
{
- include "common.cronJob" (list . .Values.cronJob .Values .Values.serviceAccount),
},
}
## The following is the same as above: ## The following is the same as above:
# {{- include "common.cronJob" (list . .Values.cronJob .Values .Values.serviceAccount "mychart.cronJob") }} # {{- include "common.cronJob" (list . .Values.cronJob .Values .Values.serviceAccount "mychart.cronJob") }}
# {{- define "mychart.cronJob" -}} # {{- define "mychart.cronJob" -}}
# {{- end }} # {{- end }}
``` ```
### `common.deployment` ### `common.deployment`
The `common.deployment` template accepts a list of five values: The `common.deployment` template accepts a list of five values:
@ -222,7 +213,7 @@ The `common.deployment` template accepts a list of five values:
It defines a basic `Deployment` with the following settings: It defines a basic `Deployment` with the following settings:
| Value | Description | | Value | Description |
| ----- | ----------- | | -------------------------------- | -------------------------------------------------------------------------- |
| `$deployment.replicaCount` | Number of replica. If autoscaling enabled, this field will be ignored | | `$deployment.replicaCount` | Number of replica. If autoscaling enabled, this field will be ignored |
| `$deployment.imagePullSecrets` | [optional] Name of Secret resource containing private registry credentials | | `$deployment.imagePullSecrets` | [optional] Name of Secret resource containing private registry credentials |
| `$deployment.podSecurityContext` | [optional] Security options for pod | | `$deployment.podSecurityContext` | [optional] Security options for pod |
@ -236,16 +227,17 @@ Underneath the hood, it invokes [`common.pod.template`](#commonpodtemplate) temp
Example use: Example use:
```yaml ```yaml
{{- include "common.deployment" (list . .Values .Values.autoscaling .Values.serviceAccount) }} {
{
- include "common.deployment" (list . .Values .Values.autoscaling .Values.serviceAccount),
},
}
## The following is the same as above: ## The following is the same as above:
# {{- include "common.deployment" (list . .Values .Values.autoscaling .Values.serviceAccount "mychart.deployment") }} # {{- include "common.deployment" (list . .Values .Values.autoscaling .Values.serviceAccount "mychart.deployment") }}
# {{- define "mychart.deployment" -}} # {{- define "mychart.deployment" -}}
# {{- end }} # {{- end }}
``` ```
### `common.hpa` ### `common.hpa`
The `common.hpa` template accepts a list of three values: The `common.hpa` template accepts a list of three values:
@ -272,8 +264,7 @@ autoscaling:
Example use: Example use:
```yaml ```yaml
{{- include "common.hpa" (list . .Values.autoscaling) }} { { - include "common.hpa" (list . .Values.autoscaling) } }
## The following is the same as above: ## The following is the same as above:
# {{- include "common.hpa" (list . .Values.autoscaling "mychart.hpa") }} # {{- include "common.hpa" (list . .Values.autoscaling "mychart.hpa") }}
# {{- define "mychart.hpa" -}} # {{- define "mychart.hpa" -}}
@ -315,8 +306,6 @@ spec:
name: release-name-mychart name: release-name-mychart
``` ```
### `common.ingress` ### `common.ingress`
The `common.ingress` template accepts a list of four values: The `common.ingress` template accepts a list of four values:
@ -351,8 +340,7 @@ service:
Example use: Example use:
```yaml ```yaml
{{- include "common.ingress" (list . .Values.ingress .Values.service) }} { { - include "common.ingress" (list . .Values.ingress .Values.service) } }
## The following is the same as above: ## The following is the same as above:
# {{- include "common.ingress" (list . .Values.ingress .Values.service "mychart.ingress") }} # {{- include "common.ingress" (list . .Values.ingress .Values.service "mychart.ingress") }}
# {{- define "mychart.ingress" -}} # {{- define "mychart.ingress" -}}
@ -393,8 +381,6 @@ spec:
secretName: chart-example-tls secretName: chart-example-tls
``` ```
### `common.pdb` ### `common.pdb`
The `common.pdb` template accepts a list of five values: The `common.pdb` template accepts a list of five values:
@ -421,8 +407,11 @@ podDisruptionBudget:
Example use: Example use:
```yaml ```yaml
{{- include "common.pdb" (list . .Values.podDisruptionBudget .Values .Values.autoscaling) }} {
{
- include "common.pdb" (list . .Values.podDisruptionBudget .Values .Values.autoscaling),
},
}
## The following is the same as above: ## The following is the same as above:
# {{- include "common.pdb" (list . .Values.podDisruptionBudget .Values .Values.autoscaling "mychart.pdb") }} # {{- include "common.pdb" (list . .Values.podDisruptionBudget .Values .Values.autoscaling "mychart.pdb") }}
# {{- define "mychart.pdb" -}} # {{- define "mychart.pdb" -}}
@ -450,8 +439,6 @@ spec:
app.kubernetes.io/name: mychart app.kubernetes.io/name: mychart
``` ```
### `common.secret` ### `common.secret`
The `common.secret` template accepts a list of two values: The `common.secret` template accepts a list of two values:
@ -496,8 +483,6 @@ metadata:
type: Opaque type: Opaque
``` ```
### `common.service` ### `common.service`
The `common.service` template accepts a list of three values: The `common.service` template accepts a list of three values:
@ -603,8 +588,6 @@ spec:
type: ClusterIP type: ClusterIP
``` ```
### `common.serviceAccount` ### `common.serviceAccount`
The `common.serviceAccount` template accepts a list of three values: The `common.serviceAccount` template accepts a list of three values:
@ -630,8 +613,7 @@ serviceAccount:
Example use: Example use:
```yaml ```yaml
{{- include "common.serviceAccount" (list . .Values.serviceAccount) }} { { - include "common.serviceAccount" (list . .Values.serviceAccount) } }
## The following is the same as above: ## The following is the same as above:
# {{- include "common.serviceAccount" (list . .Values.serviceAccount "mychart.serviceAccount") }} # {{- include "common.serviceAccount" (list . .Values.serviceAccount "mychart.serviceAccount") }}
# {{- define "mychart.serviceAccount" -}} # {{- define "mychart.serviceAccount" -}}
@ -653,8 +635,6 @@ metadata:
name: release-name-mychart name: release-name-mychart
``` ```
### `common.serviceMonitor` ### `common.serviceMonitor`
The `common.serviceMonitor` template accepts a list of three values: The `common.serviceMonitor` template accepts a list of three values:
@ -687,8 +667,7 @@ serviceMonitor:
Example use: Example use:
```yaml ```yaml
{{- include "common.serviceMonitor" (list . .Values.serviceMonitor) }} { { - include "common.serviceMonitor" (list . .Values.serviceMonitor) } }
## The following is the same as above: ## The following is the same as above:
# {{- include "common.serviceMonitor" (list . .Values.serviceMonitor "mychart.serviceMonitor") }} # {{- include "common.serviceMonitor" (list . .Values.serviceMonitor "mychart.serviceMonitor") }}
# {{- define "mychart.serviceMonitor" -}} # {{- define "mychart.serviceMonitor" -}}
@ -731,8 +710,6 @@ spec:
app.kubernetes.io/name: mychart app.kubernetes.io/name: mychart
``` ```
### `common.serviceMonitor.secret` ### `common.serviceMonitor.secret`
The `common.serviceMonitor.secret` template accepts a list of three values: The `common.serviceMonitor.secret` template accepts a list of three values:
@ -756,8 +733,7 @@ serviceMonitor:
Example use: Example use:
```yaml ```yaml
{{- include "common.serviceMonitor.secret" (list . .Values.serviceMonitor) }} { { - include "common.serviceMonitor.secret" (list . .Values.serviceMonitor) } }
## The following is the same as above: ## The following is the same as above:
# {{- include "common.serviceMonitor.secret" (list . .Values.serviceMonitor "mychart.serviceMonitor.secret") }} # {{- include "common.serviceMonitor.secret" (list . .Values.serviceMonitor "mychart.serviceMonitor.secret") }}
# {{- define "mychart.serviceMonitor.secret" -}} # {{- define "mychart.serviceMonitor.secret" -}}
@ -784,14 +760,10 @@ metadata:
type: Opaque type: Opaque
``` ```
## Partial Objects ## Partial Objects
When writing Kubernetes resources, you may find the following helpers useful to construct parts of the spec. When writing Kubernetes resources, you may find the following helpers useful to construct parts of the spec.
### `common.chart` ### `common.chart`
The `common.chart` helper prints the chart name and version, escaped to be legal in a Kubernetes label field. The `common.chart` helper prints the chart name and version, escaped to be legal in a Kubernetes label field.
@ -799,7 +771,7 @@ The `common.chart` helper prints the chart name and version, escaped to be legal
Example template: Example template:
```yaml ```yaml
helm.sh/chart: {{ include "common.chart" . }} helm.sh/chart: { { include "common.chart" . } }
``` ```
For the chart `foo` with version `1.2.3-beta.55+1234`, this will render: For the chart `foo` with version `1.2.3-beta.55+1234`, this will render:
@ -810,8 +782,6 @@ helm.sh/chart: foo-1.2.3-beta.55_1234
(Note that `+` is an illegal character in label values) (Note that `+` is an illegal character in label values)
### `common.container` ### `common.container`
The `common.container` template accepts a list of three values: The `common.container` template accepts a list of three values:
@ -948,14 +918,12 @@ spec:
serviceAccountName: release-name-mychart serviceAccountName: release-name-mychart
``` ```
### `common.fullname` ### `common.fullname`
The `common.fullname` template generates a name suitable for the `name:` field in Kubernetes metadata. It is used like this: The `common.fullname` template generates a name suitable for the `name:` field in Kubernetes metadata. It is used like this:
```yaml ```yaml
name: {{ include "common.fullname" . }} name: { { include "common.fullname" . } }
``` ```
This prints the value of `{{ .Release.Name }}-{{ .Chart.Name }}` by default, but can be overridden with `.Values. fullnameOverride`: This prints the value of `{{ .Release.Name }}-{{ .Chart.Name }}` by default, but can be overridden with `.Values. fullnameOverride`:
@ -978,8 +946,6 @@ name: release-name-mychart
Output of this function is truncated at 63 characters, which is the maximum length of name. Output of this function is truncated at 63 characters, which is the maximum length of name.
### `common.labels` ### `common.labels`
`common.selectorLabels` prints the standard set of labels. `common.selectorLabels` prints the standard set of labels.
@ -1000,8 +966,6 @@ app.kubernetes.io/version: 1.16.0
helm.sh/chart: mychart-0.1.0 helm.sh/chart: mychart-0.1.0
``` ```
### `common.metadata` ### `common.metadata`
The `common.metadata` helper generates value for the `metadata:` section of a Kubernetes resource. The `common.metadata` helper generates value for the `metadata:` section of a Kubernetes resource.
@ -1016,9 +980,7 @@ It generates standard labels and a name field.
Example template: Example template:
```yaml ```yaml
metadata: metadata: { { - include "common.metadata" (list .) | nindent 2 } }
{{- include "common.metadata" (list .) | nindent 2 }}
## The following is the same as above: ## The following is the same as above:
# metadata: # metadata:
# {{- include "common.metadata" (list . "mychart.metadata") | nindent 2 }} # {{- include "common.metadata" (list . "mychart.metadata") | nindent 2 }}
@ -1041,14 +1003,12 @@ metadata:
Most of the common templates that define a resource type (e.g. `common.configMap` or `common.cronJob`) use this to generate the metadata, which means they inherit the same `labels` and `name` fields. Most of the common templates that define a resource type (e.g. `common.configMap` or `common.cronJob`) use this to generate the metadata, which means they inherit the same `labels` and `name` fields.
### `common.name` ### `common.name`
The `common.name` template generates a name suitable for the `app.kubernetes.io/name` label. It is used like this: The `common.name` template generates a name suitable for the `app.kubernetes.io/name` label. It is used like this:
```yaml ```yaml
app.kubernetes.io/name: {{ include "common.name" . }} app.kubernetes.io/name: { { include "common.name" . } }
``` ```
This prints the value of `{{ .Chart.Name }}` by default, but can be overridden with `.Values.nameOverride`: This prints the value of `{{ .Chart.Name }}` by default, but can be overridden with `.Values.nameOverride`:
@ -1071,7 +1031,6 @@ app.kubernetes.io/name: mychart
Output of this function is truncated at 63 characters, which is the maximum length of name. Output of this function is truncated at 63 characters, which is the maximum length of name.
### `common.pod.template` ### `common.pod.template`
The `common.pod.template` template accepts a list of four values: The `common.pod.template` template accepts a list of four values:
@ -1089,7 +1048,7 @@ It creates a basic `PodTemplate` spec to be used within a `Deployment` or `CronJ
It also uses the following configuration from the `$pod`: It also uses the following configuration from the `$pod`:
| Value | Description | | Value | Description |
| ----- | ----------- | | ------------------------- | -------------------------------------------------------- |
| `$pod.imagePullSecrets` | Names of secrets containing private registry credentials | | `$pod.imagePullSecrets` | Names of secrets containing private registry credentials |
| `$pod.podAnnotations` | Pod annotations | | `$pod.podAnnotations` | Pod annotations |
| `$pod.podSecurityContext` | Security options | | `$pod.podSecurityContext` | Security options |
@ -1099,8 +1058,6 @@ It also uses the following configuration from the `$pod`:
Underneath the hood, it invokes [`common.container`](#commoncontainer) template with `$pod` to populate the `PodSpec`'s container list. Underneath the hood, it invokes [`common.container`](#commoncontainer) template with `$pod` to populate the `PodSpec`'s container list.
### `common.selectorLabels` ### `common.selectorLabels`
`common.selectorLabels` prints the standard set of selector labels. `common.selectorLabels` prints the standard set of selector labels.
@ -1118,8 +1075,6 @@ app.kubernetes.io/instance: release-name
app.kubernetes.io/name: mychart app.kubernetes.io/name: mychart
``` ```
### `common.serviceAccountName` ### `common.serviceAccountName`
The `common.serviceAccountName` template accepts a list of two values: The `common.serviceAccountName` template accepts a list of two values:

View File

@ -29,6 +29,9 @@ spec:
{{- with $cronJob.successfulJobsHistoryLimit }} {{- with $cronJob.successfulJobsHistoryLimit }}
successfulJobsHistoryLimit: {{ . }} successfulJobsHistoryLimit: {{ . }}
{{- end }} {{- end }}
{{- with $cronJob.suspend }}
suspend: {{ . }}
{{- end }}
jobTemplate: jobTemplate:
metadata: metadata:
labels: labels: