Compare commits
57 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 56604353a2 | |||
| 96cbc7ec18 | |||
| 2389545811 | |||
| 3da5c3eb13 | |||
| 295e43c993 | |||
| 6d8fb2930e | |||
| d0d78eb1be | |||
| 8a95436200 | |||
| afcfc36e5f | |||
| 966f0672c7 | |||
| 51ba51320a | |||
| 35cb630582 | |||
| 49396e0b8a | |||
| 9a6bbba2de | |||
| c8fcb7359f | |||
| 5c6164c2d6 | |||
| 8a8b63bab9 | |||
| c3df85fef6 | |||
| 5e19d886e5 | |||
| 95b686d20c | |||
| 285a6cca10 | |||
| 3ee1679e1d | |||
| 7d49989247 | |||
| b17db72a63 | |||
| 0f6e89dbe0 | |||
| 14cd62652c | |||
| a788cff019 | |||
| d951961c49 | |||
| 1ba0e4df60 | |||
| b761286e38 | |||
| 1400b4a58d | |||
| e2f8f0042a | |||
| 059523dbf2 | |||
| b9392c085c | |||
| c3e2280489 | |||
| 1722e9bcf1 | |||
| ef6738e62e | |||
| ee9e8e95c2 | |||
| df1042fb5a | |||
| a2b0e07505 | |||
| 7a49d313a5 | |||
| 254d38f05f | |||
| 7f4f1674b8 | |||
| 569ebb06f1 | |||
| a5512f8f8a | |||
| 530070b05c | |||
| ad2ea458c4 | |||
| 6783eb019d | |||
| 6f1753c46d | |||
| e943d982ef | |||
| 213303b10e | |||
| 13d860f7f4 | |||
| 47ae89c7e6 | |||
| 7bb30fccab | |||
| f38708f864 | |||
| d9fa868eaa | |||
| 24c8634b09 |
@@ -31,20 +31,30 @@ jobs:
|
||||
echo $CHART_VERSION
|
||||
echo ::set-output name=chart_version::$CHART_VERSION
|
||||
|
||||
CHART_VERSION=$(cat charts/cron-job/Chart.yaml | grep ^version:)
|
||||
CHART_VERSION=${CHART_VERSION#version: }
|
||||
echo $CHART_VERSION
|
||||
echo ::set-output name=cron_job_chart_version::$CHART_VERSION
|
||||
|
||||
- name: Ensure tag and chart version matches
|
||||
run: |
|
||||
echo "Run ${{ steps.versioning.outputs.VERSION }}"
|
||||
echo "${{ steps.chart_version.outputs.CHART_VERSION }}"
|
||||
echo "$TAG_VERSION"
|
||||
echo "$CHART_VERSION"
|
||||
echo "$CRON_JOB_CHART_VERSION"
|
||||
if [ "$TAG_VERSION" != "$CHART_VERSION" ]
|
||||
then
|
||||
echo "Tag version does not match chart version"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$TAG_VERSION" != "$CRON_JOB_CHART_VERSION" ]
|
||||
then
|
||||
echo "Tag version does not match cron-job chart version"
|
||||
exit 1
|
||||
fi
|
||||
env:
|
||||
TAG_VERSION: ${{ steps.versioning.outputs.tag_version }}
|
||||
CHART_VERSION: ${{ steps.chart_version.outputs.chart_version }}
|
||||
CRON_JOB_CHART_VERSION: ${{ steps.chart_version.outputs.cron_job_chart_version }}
|
||||
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
@@ -85,6 +95,7 @@ jobs:
|
||||
echo "The new version will be $increased_version"
|
||||
|
||||
sed -i "s/version: $CHART_VERSION/version: $increased_version/" charts/onechart/Chart.yaml
|
||||
sed -i "s/version: $CHART_VERSION/version: $increased_version/" charts/cron-job/Chart.yaml
|
||||
|
||||
git status
|
||||
git add .
|
||||
|
||||
@@ -12,20 +12,20 @@ kubeval:
|
||||
rm -rf manifests && true
|
||||
mkdir manifests
|
||||
helm template charts/onechart --output-dir manifests
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.13.0
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.18.0
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.20.0
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.24.0
|
||||
|
||||
rm -rf manifests && true
|
||||
mkdir manifests
|
||||
helm template charts/cron-job --output-dir manifests
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.13.0
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.18.0
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.20.0
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.24.0
|
||||
|
||||
rm -rf manifests && true
|
||||
mkdir manifests
|
||||
helm template charts/namespaces --output-dir manifests
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.13.0
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.18.0
|
||||
helm template charts/namespaces --output-dir manifests -f charts/namespaces/fixture.yaml
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.20.0
|
||||
find manifests/ -name '*.yaml' | xargs kubeval --ignore-missing-schemas -v 1.24.0
|
||||
|
||||
test:
|
||||
helm dependency update charts/onechart
|
||||
@@ -37,9 +37,11 @@ test:
|
||||
helm unittest charts/namespaces
|
||||
|
||||
package:
|
||||
helm dependency update charts/onechart
|
||||
helm package charts/onechart
|
||||
mv onechart*.tgz docs
|
||||
|
||||
helm dependency update charts/cron-job
|
||||
helm package charts/cron-job
|
||||
mv cron-job*.tgz docs
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ A generic Helm chart for your application deployments.
|
||||
|
||||
Because no-one can remember the Kubernetes yaml syntax.
|
||||
|
||||
https://onechart.dev/
|
||||
https://gimlet.io/docs
|
||||
|
||||
## Getting started
|
||||
|
||||
|
||||
@@ -15,4 +15,4 @@ type: library
|
||||
# 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: 0.1.0
|
||||
version: 0.2.0
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{{- define "common.customFileConfigmap.tpl" -}}
|
||||
{{- range .Values.volumes }}
|
||||
{{- if .fileName }}
|
||||
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ template "common.robustName" .fileName }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
data:
|
||||
{{ .fileName }}: |
|
||||
{{- .fileContent | nindent 4 }}
|
||||
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -1,6 +1,6 @@
|
||||
{{- define "common.pvc.tpl" -}}
|
||||
{{- range .Values.volumes }}
|
||||
{{- if not .existingClaim }}
|
||||
{{- if not (or .existingClaim .hostPath .fileName .emptyDir .existingConfigMap) }}
|
||||
{{- $robustName := include "common.robustName" $.Release.Name }}
|
||||
---
|
||||
apiVersion: v1
|
||||
@@ -8,13 +8,19 @@ kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: {{ printf "%s-%s" $robustName .name }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
{{- if .pvcAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml .pvcAnnotations | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ .accessMode | default "ReadWriteOnce" }}
|
||||
storageClassName: {{ .storageClass | default "local-path" }}
|
||||
{{- if .storageClass }}
|
||||
storageClassName: {{ .storageClass }}
|
||||
{{- end }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .size | default "1Gi" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,10 +1,22 @@
|
||||
{{- define "common.volumeMountsRef.tpl" -}}
|
||||
{{- if or (or (.Values.volumes) (.Values.sealedFileSecrets)) .Values.fileSecrets }}
|
||||
{{- if or (or (or (.Values.volumes) (.Values.sealedFileSecrets)) .Values.fileSecrets) .Values.existingFileSecrets }}
|
||||
volumeMounts: &volumeMounts
|
||||
{{- range .Values.volumes }}
|
||||
- name: {{ .name }}
|
||||
mountPath: {{ .path }}
|
||||
|
||||
{{- $volumeName := .name -}}
|
||||
{{- if .existingConfigMap }}
|
||||
{{- $volumeName = .existingConfigMap -}}
|
||||
{{- end }}
|
||||
{{- if .fileName }}
|
||||
{{- $volumeName = include "common.robustName" .fileName -}}
|
||||
{{- end }}
|
||||
|
||||
- name: {{ $volumeName }}
|
||||
mountPath: {{ .path }}
|
||||
{{- if .subPath }}
|
||||
subPath: {{ .subPath }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range .Values.sealedFileSecrets }}
|
||||
- name: {{ .name }}
|
||||
mountPath: {{ .path }}
|
||||
@@ -15,5 +27,14 @@ volumeMounts: &volumeMounts
|
||||
mountPath: {{ .path }}
|
||||
readOnly: true
|
||||
{{- end }}
|
||||
{{- range .Values.existingFileSecrets }}
|
||||
- name: {{ .name }}
|
||||
mountPath: {{ .path }}
|
||||
{{- if .subPath}}
|
||||
subPath: {{ .subPath }}
|
||||
{{- end }}
|
||||
readOnly: true
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
@@ -1,15 +1,40 @@
|
||||
{{- define "common.volumesRef.tpl" -}}
|
||||
{{- if or (or (.Values.volumes) (.Values.sealedFileSecrets)) .Values.fileSecrets }}
|
||||
{{- if or (or (or (.Values.volumes) (.Values.sealedFileSecrets)) .Values.fileSecrets) .Values.existingFileSecrets }}
|
||||
volumes:
|
||||
{{- range .Values.volumes }}
|
||||
- name: {{ .name }}
|
||||
|
||||
{{- $volumeName := .name -}}
|
||||
{{- if .existingConfigMap }}
|
||||
{{- $volumeName = .existingConfigMap -}}
|
||||
{{- end }}
|
||||
{{- if .fileName }}
|
||||
{{- $volumeName = include "common.robustName" .fileName -}}
|
||||
{{- end }}
|
||||
|
||||
- name: {{ $volumeName }}
|
||||
{{- if .emptyDir }}
|
||||
emptyDir: {}
|
||||
{{- else if .existingConfigMap }}
|
||||
configMap:
|
||||
name: {{ .existingConfigMap }}
|
||||
{{- else if .fileName }}
|
||||
configMap:
|
||||
name: {{ $volumeName }}
|
||||
{{- else if .hostPath }}
|
||||
hostPath:
|
||||
path: {{ .hostPath.path }}
|
||||
{{- if .hostPath.type }}
|
||||
type: {{ .hostPath.type }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
persistentVolumeClaim:
|
||||
{{- if .existingClaim }}
|
||||
claimName: {{ .existingClaim }}
|
||||
{{ else }}
|
||||
claimName: {{ printf "%s-%s" $.Release.Name .name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range .Values.sealedFileSecrets }}
|
||||
- name: {{ .name }}
|
||||
secret:
|
||||
@@ -20,5 +45,10 @@ volumes:
|
||||
secret:
|
||||
secretName: {{ printf "%s-%s" $.Release.Name .name }}
|
||||
{{- end }}
|
||||
{{- range .Values.existingFileSecrets }}
|
||||
- name: {{ .name }}
|
||||
secret:
|
||||
secretName: {{ .name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
digest: sha256:636a65e9846bdff17cc4e65b0849061f783759a37aa51fb85ff6fd8ba5e68467
|
||||
generated: "2021-08-05T10:18:17.533366128+02:00"
|
||||
version: 0.2.0
|
||||
digest: sha256:ea028bf07fdc361daabca0c0155e4511cc4fffda94d2f697f4d16013f250c8a8
|
||||
generated: "2023-02-17T15:14:21.719376584+01:00"
|
||||
|
||||
@@ -15,9 +15,9 @@ 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: 0.2.2
|
||||
version: 0.43.0
|
||||
|
||||
dependencies:
|
||||
- name: common
|
||||
version: 0.1.0
|
||||
version: 0.2.0
|
||||
repository: file://../common
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
apiVersion: batch/v1beta1
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: {{ .Release.Name }}
|
||||
@@ -34,15 +34,15 @@ spec:
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 16 }}
|
||||
{{- include "common.volumesRef.tpl" . | nindent 10 }}
|
||||
{{ with .Values.nodeSelector }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{ with .Values.affinity }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{ with .Values.tolerations }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
|
||||
@@ -15,4 +15,4 @@ 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: 0.2.0
|
||||
version: 0.3.0
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
namespaces:
|
||||
- name: staging
|
||||
quota:
|
||||
cpu: 32
|
||||
memory: "64Gi"
|
||||
storage: "500Gi"
|
||||
overcommit:
|
||||
cpu: 1
|
||||
memory: 1
|
||||
podMaximumResources:
|
||||
cpu: 4
|
||||
memory: "8Gi"
|
||||
podDefaultResources:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
podResourceOvercommit:
|
||||
cpu: 2
|
||||
memory: 1
|
||||
@@ -1,22 +1,5 @@
|
||||
{{- range .Values.namespaces }}
|
||||
{{- $limits := $.Values.pod.limits }}
|
||||
{{- if .pod }}
|
||||
{{- if .pod.limits }}
|
||||
{{- $limits = .pod.limits }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- $overcommit := $.Values.pod.overcommit }}
|
||||
{{- if .pod }}
|
||||
{{- if .pod.overcommit }}
|
||||
{{- $overcommit = .pod.overcommit }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- $defaults := $.Values.pod.defaults }}
|
||||
{{- if .pod }}
|
||||
{{- if .pod.defaults }}
|
||||
{{- $defaults = .pod.defaults }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if and .podMaximumResources (and .podDefaultResources .podResourceOvercommit) }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: LimitRange
|
||||
@@ -26,19 +9,26 @@ metadata:
|
||||
spec:
|
||||
limits:
|
||||
- type: Container
|
||||
{{- if .podMaximumResources }}
|
||||
max:
|
||||
cpu: 4
|
||||
memory: "8Gi"
|
||||
min:
|
||||
cpu: "100m"
|
||||
memory: "50Mi"
|
||||
cpu: {{ .podMaximumResources.cpu }}
|
||||
memory: {{ .podMaximumResources.memory }}
|
||||
{{- end }}
|
||||
{{- if .podDefaultResources }}
|
||||
default:
|
||||
cpu: {{ $defaults.cpu }}
|
||||
memory: {{ $defaults.memory }}
|
||||
cpu: {{ .podDefaultResources.cpu }}
|
||||
memory: {{ .podDefaultResources.memory }}
|
||||
defaultRequest:
|
||||
cpu: {{ $defaults.cpu }}
|
||||
memory: {{ $defaults.memory }}
|
||||
cpu: {{ .podDefaultResources.cpu }}
|
||||
memory: {{ .podDefaultResources.memory }}
|
||||
{{- end }}
|
||||
maxLimitRequestRatio:
|
||||
cpu: {{ $overcommit.cpu }}
|
||||
memory: {{ $overcommit.memory }}
|
||||
{{- if .podResourceOvercommit }}
|
||||
cpu: {{ .podResourceOvercommit.cpu }}
|
||||
memory: {{ .podResourceOvercommit.memory }}
|
||||
{{ else }}
|
||||
cpu: 1
|
||||
memory: 1
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -4,8 +4,8 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: {{ .name }}
|
||||
{{- if .annotations }}
|
||||
annotations:
|
||||
{{- if .annotations }}
|
||||
{{- toYaml .annotations | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -1,16 +1,5 @@
|
||||
{{- range .Values.namespaces }}
|
||||
{{- $budget := $.Values.namespace.budget }}
|
||||
{{- if .namespace }}
|
||||
{{- if .namespace.budget }}
|
||||
{{- $budget = .namespace.budget }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- $overcommit := $.Values.namespace.overcommit }}
|
||||
{{- if .namespace }}
|
||||
{{- if .namespace.overcommit }}
|
||||
{{- $overcommit = .namespace.overcommit }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if and .quota .overcommit }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ResourceQuota
|
||||
@@ -18,9 +7,10 @@ metadata:
|
||||
name: {{ .name }}
|
||||
spec:
|
||||
hard:
|
||||
limits.cpu: {{ $budget.cpu | mul $overcommit.cpu }}
|
||||
limits.memory: {{ $budget.memory | regexFind "[1-9]+" | mul $overcommit.memory }}{{ $budget.memory | regexFind "[a-zA-Z]+" }}
|
||||
requests.cpu: {{ $budget.cpu }}
|
||||
requests.memory: {{ $budget.memory }}
|
||||
requests.storage: {{ $budget.storage }}
|
||||
limits.cpu: {{ .quota.cpu | mul .overcommit.cpu }}
|
||||
limits.memory: {{ .quota.memory | regexFind "[1-9]+" | mul .overcommit.memory }}{{ .quota.memory | regexFind "[a-zA-Z]+" }}
|
||||
requests.cpu: {{ .quota.cpu }}
|
||||
requests.memory: {{ .quota.memory }}
|
||||
requests.storage: {{ .quota.storage }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
@@ -2,52 +2,19 @@ suite: test deployment
|
||||
templates:
|
||||
- limit-range.yaml
|
||||
tests:
|
||||
- it: Should set default limits
|
||||
set:
|
||||
pod:
|
||||
limits:
|
||||
cpu: 4
|
||||
memory: "8Gi"
|
||||
defaults:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
overcommit:
|
||||
cpu: 10
|
||||
memory: 2
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.limits
|
||||
value:
|
||||
- type: Container
|
||||
max:
|
||||
cpu: 4
|
||||
memory: "8Gi"
|
||||
min:
|
||||
cpu: "100m"
|
||||
memory: "50Mi"
|
||||
default:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
defaultRequest:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
maxLimitRequestRatio:
|
||||
cpu: 10
|
||||
memory: 2
|
||||
- it: Should set namespace specific limits
|
||||
set:
|
||||
namespaces:
|
||||
- name: staging
|
||||
pod:
|
||||
limits:
|
||||
cpu: 4
|
||||
memory: "8Gi"
|
||||
defaults:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
overcommit:
|
||||
cpu: 10
|
||||
memory: 2
|
||||
podMaximumResources:
|
||||
cpu: 4
|
||||
memory: "8Gi"
|
||||
podDefaultResources:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
podResourceOvercommit:
|
||||
cpu: 2
|
||||
memory: 1
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.limits
|
||||
@@ -56,9 +23,6 @@ tests:
|
||||
max:
|
||||
cpu: 4
|
||||
memory: "8Gi"
|
||||
min:
|
||||
cpu: "100m"
|
||||
memory: "50Mi"
|
||||
default:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
@@ -66,5 +30,5 @@ tests:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
maxLimitRequestRatio:
|
||||
cpu: 10
|
||||
memory: 2
|
||||
cpu: 2
|
||||
memory: 1
|
||||
|
||||
@@ -10,3 +10,10 @@ tests:
|
||||
- equal:
|
||||
path: metadata.name
|
||||
value: staging
|
||||
- it: Should not set annotations if none provided in values
|
||||
set:
|
||||
namespaces:
|
||||
- name: staging
|
||||
asserts:
|
||||
- isNull:
|
||||
path: metadata.annotations
|
||||
|
||||
@@ -2,16 +2,37 @@ suite: test deployment
|
||||
templates:
|
||||
- resource-quota.yaml
|
||||
tests:
|
||||
- it: Should set default quota values
|
||||
- it: Should set namespace specific quotas
|
||||
set:
|
||||
namespace:
|
||||
budget:
|
||||
cpu: 32
|
||||
memory: "64Gi"
|
||||
storage: "500Gi"
|
||||
overcommit:
|
||||
cpu: 2
|
||||
memory: 1
|
||||
namespaces:
|
||||
- name: staging
|
||||
quota:
|
||||
cpu: 32
|
||||
memory: "64Gi"
|
||||
storage: "500Gi"
|
||||
overcommit:
|
||||
cpu: 1
|
||||
memory: 1
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.hard
|
||||
value:
|
||||
limits.cpu: 32
|
||||
limits.memory: "64Gi"
|
||||
requests.cpu: 32
|
||||
requests.memory: "64Gi"
|
||||
requests.storage: "500Gi"
|
||||
- it: Should handle overcommit
|
||||
set:
|
||||
namespaces:
|
||||
- name: staging
|
||||
quota:
|
||||
cpu: 32
|
||||
memory: "64Gi"
|
||||
storage: "500Gi"
|
||||
overcommit:
|
||||
cpu: 2
|
||||
memory: 1
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.hard
|
||||
@@ -21,29 +42,3 @@ tests:
|
||||
requests.cpu: 32
|
||||
requests.memory: "64Gi"
|
||||
requests.storage: "500Gi"
|
||||
- it: Should set namespace specific quotas
|
||||
set:
|
||||
namespaces:
|
||||
- name: staging
|
||||
namespace:
|
||||
budget:
|
||||
cpu: 8
|
||||
memory: "16Gi"
|
||||
storage: "100Gi"
|
||||
namespace:
|
||||
budget:
|
||||
cpu: 32
|
||||
memory: "64Gi"
|
||||
storage: "500Gi"
|
||||
overcommit:
|
||||
cpu: 2
|
||||
memory: 1
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.hard
|
||||
value:
|
||||
limits.cpu: 16
|
||||
limits.memory: "16Gi"
|
||||
requests.cpu: 8
|
||||
requests.memory: "16Gi"
|
||||
requests.storage: "100Gi"
|
||||
|
||||
@@ -1,715 +0,0 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "http://example.com/example.json",
|
||||
"type": "object",
|
||||
"title": "The root schema",
|
||||
"description": "The root schema comprises the entire JSON document.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"namespaces": [
|
||||
{
|
||||
"name": "staging",
|
||||
"namespace": {
|
||||
"budget": {
|
||||
"cpu": 32,
|
||||
"memory": "64Gi",
|
||||
"storage": "500Gi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 2,
|
||||
"memory": 1
|
||||
}
|
||||
},
|
||||
"pod": {
|
||||
"limits": {
|
||||
"cpu": 4,
|
||||
"memory": "8Gi"
|
||||
},
|
||||
"defaults": {
|
||||
"cpu": "200m",
|
||||
"memory": "200Mi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 10,
|
||||
"memory": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"namespace": {
|
||||
"budget": {
|
||||
"cpu": 32,
|
||||
"memory": "64Gi",
|
||||
"storage": "500Gi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 2,
|
||||
"memory": 1
|
||||
}
|
||||
},
|
||||
"pod": {
|
||||
"limits": {
|
||||
"cpu": 4,
|
||||
"memory": "8Gi"
|
||||
},
|
||||
"defaults": {
|
||||
"cpu": "200m",
|
||||
"memory": "200Mi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 10,
|
||||
"memory": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"namespaces",
|
||||
"namespace",
|
||||
"pod"
|
||||
],
|
||||
"properties": {
|
||||
"namespaces": {
|
||||
"$id": "#/properties/namespaces",
|
||||
"type": "array",
|
||||
"title": "The namespaces schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": [],
|
||||
"examples": [
|
||||
[
|
||||
{
|
||||
"name": "staging",
|
||||
"namespace": {
|
||||
"budget": {
|
||||
"cpu": 32,
|
||||
"memory": "64Gi",
|
||||
"storage": "500Gi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 2,
|
||||
"memory": 1
|
||||
}
|
||||
},
|
||||
"pod": {
|
||||
"limits": {
|
||||
"cpu": 4,
|
||||
"memory": "8Gi"
|
||||
},
|
||||
"defaults": {
|
||||
"cpu": "200m",
|
||||
"memory": "200Mi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 10,
|
||||
"memory": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"additionalItems": true,
|
||||
"items": {
|
||||
"$id": "#/properties/namespaces/items",
|
||||
"anyOf": [
|
||||
{
|
||||
"$id": "#/properties/namespaces/items/anyOf/0",
|
||||
"type": "object",
|
||||
"title": "The first anyOf schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"name": "staging",
|
||||
"namespace": {
|
||||
"budget": {
|
||||
"cpu": 32,
|
||||
"memory": "64Gi",
|
||||
"storage": "500Gi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 2,
|
||||
"memory": 1
|
||||
}
|
||||
},
|
||||
"pod": {
|
||||
"limits": {
|
||||
"cpu": 4,
|
||||
"memory": "8Gi"
|
||||
},
|
||||
"defaults": {
|
||||
"cpu": "200m",
|
||||
"memory": "200Mi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 10,
|
||||
"memory": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"name",
|
||||
"namespace",
|
||||
"pod"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/name",
|
||||
"type": "string",
|
||||
"title": "The name schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"staging"
|
||||
]
|
||||
},
|
||||
"namespace": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/namespace",
|
||||
"type": "object",
|
||||
"title": "The namespace schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"budget": {
|
||||
"cpu": 32,
|
||||
"memory": "64Gi",
|
||||
"storage": "500Gi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 2,
|
||||
"memory": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"budget",
|
||||
"overcommit"
|
||||
],
|
||||
"properties": {
|
||||
"budget": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/namespace/properties/budget",
|
||||
"type": "object",
|
||||
"title": "The budget schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": 32,
|
||||
"memory": "64Gi",
|
||||
"storage": "500Gi"
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory",
|
||||
"storage"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/namespace/properties/budget/properties/cpu",
|
||||
"type": "integer",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
32
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/namespace/properties/budget/properties/memory",
|
||||
"type": "string",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"64Gi"
|
||||
]
|
||||
},
|
||||
"storage": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/namespace/properties/budget/properties/storage",
|
||||
"type": "string",
|
||||
"title": "The storage schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"500Gi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"overcommit": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/namespace/properties/overcommit",
|
||||
"type": "object",
|
||||
"title": "The overcommit schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": 2,
|
||||
"memory": 1
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/namespace/properties/overcommit/properties/cpu",
|
||||
"type": "integer",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
2
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/namespace/properties/overcommit/properties/memory",
|
||||
"type": "integer",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
1
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"pod": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod",
|
||||
"type": "object",
|
||||
"title": "The pod schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"limits": {
|
||||
"cpu": 4,
|
||||
"memory": "8Gi"
|
||||
},
|
||||
"defaults": {
|
||||
"cpu": "200m",
|
||||
"memory": "200Mi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 10,
|
||||
"memory": 2
|
||||
}
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"limits",
|
||||
"defaults",
|
||||
"overcommit"
|
||||
],
|
||||
"properties": {
|
||||
"limits": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod/properties/limits",
|
||||
"type": "object",
|
||||
"title": "The limits schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": 4,
|
||||
"memory": "8Gi"
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod/properties/limits/properties/cpu",
|
||||
"type": "integer",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
4
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod/properties/limits/properties/memory",
|
||||
"type": "string",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"8Gi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"defaults": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod/properties/defaults",
|
||||
"type": "object",
|
||||
"title": "The defaults schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": "200m",
|
||||
"memory": "200Mi"
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod/properties/defaults/properties/cpu",
|
||||
"type": "string",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"200m"
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod/properties/defaults/properties/memory",
|
||||
"type": "string",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"200Mi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"overcommit": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod/properties/overcommit",
|
||||
"type": "object",
|
||||
"title": "The overcommit schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": 10,
|
||||
"memory": 2
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod/properties/overcommit/properties/cpu",
|
||||
"type": "integer",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
10
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/namespaces/items/anyOf/0/properties/pod/properties/overcommit/properties/memory",
|
||||
"type": "integer",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
2
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"namespace": {
|
||||
"$id": "#/properties/namespace",
|
||||
"type": "object",
|
||||
"title": "The namespace schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"budget": {
|
||||
"cpu": 32,
|
||||
"memory": "64Gi",
|
||||
"storage": "500Gi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 2,
|
||||
"memory": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"budget",
|
||||
"overcommit"
|
||||
],
|
||||
"properties": {
|
||||
"budget": {
|
||||
"$id": "#/properties/namespace/properties/budget",
|
||||
"type": "object",
|
||||
"title": "The budget schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": 32,
|
||||
"memory": "64Gi",
|
||||
"storage": "500Gi"
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory",
|
||||
"storage"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/namespace/properties/budget/properties/cpu",
|
||||
"type": "integer",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
32
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/namespace/properties/budget/properties/memory",
|
||||
"type": "string",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"64Gi"
|
||||
]
|
||||
},
|
||||
"storage": {
|
||||
"$id": "#/properties/namespace/properties/budget/properties/storage",
|
||||
"type": "string",
|
||||
"title": "The storage schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"500Gi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"overcommit": {
|
||||
"$id": "#/properties/namespace/properties/overcommit",
|
||||
"type": "object",
|
||||
"title": "The overcommit schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": 2,
|
||||
"memory": 1
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/namespace/properties/overcommit/properties/cpu",
|
||||
"type": "integer",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
2
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/namespace/properties/overcommit/properties/memory",
|
||||
"type": "integer",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
1
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"pod": {
|
||||
"$id": "#/properties/pod",
|
||||
"type": "object",
|
||||
"title": "The pod schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"limits": {
|
||||
"cpu": 4,
|
||||
"memory": "8Gi"
|
||||
},
|
||||
"defaults": {
|
||||
"cpu": "200m",
|
||||
"memory": "200Mi"
|
||||
},
|
||||
"overcommit": {
|
||||
"cpu": 10,
|
||||
"memory": 2
|
||||
}
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"limits",
|
||||
"defaults",
|
||||
"overcommit"
|
||||
],
|
||||
"properties": {
|
||||
"limits": {
|
||||
"$id": "#/properties/pod/properties/limits",
|
||||
"type": "object",
|
||||
"title": "The limits schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": 4,
|
||||
"memory": "8Gi"
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/pod/properties/limits/properties/cpu",
|
||||
"type": "integer",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
4
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/pod/properties/limits/properties/memory",
|
||||
"type": "string",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"8Gi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"defaults": {
|
||||
"$id": "#/properties/pod/properties/defaults",
|
||||
"type": "object",
|
||||
"title": "The defaults schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": "200m",
|
||||
"memory": "200Mi"
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/pod/properties/defaults/properties/cpu",
|
||||
"type": "string",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"200m"
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/pod/properties/defaults/properties/memory",
|
||||
"type": "string",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": "",
|
||||
"examples": [
|
||||
"200Mi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"overcommit": {
|
||||
"$id": "#/properties/pod/properties/overcommit",
|
||||
"type": "object",
|
||||
"title": "The overcommit schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"cpu": 10,
|
||||
"memory": 2
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"cpu",
|
||||
"memory"
|
||||
],
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"$id": "#/properties/pod/properties/overcommit/properties/cpu",
|
||||
"type": "integer",
|
||||
"title": "The cpu schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
10
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"$id": "#/properties/pod/properties/overcommit/properties/memory",
|
||||
"type": "integer",
|
||||
"title": "The memory schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"default": 0,
|
||||
"examples": [
|
||||
2
|
||||
]
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
@@ -1,40 +1 @@
|
||||
namespaces:
|
||||
- name: staging
|
||||
namespace:
|
||||
budget:
|
||||
cpu: 32
|
||||
memory: "64Gi"
|
||||
storage: "500Gi"
|
||||
overcommit:
|
||||
cpu: 2
|
||||
memory: 1
|
||||
pod:
|
||||
limits:
|
||||
cpu: 4
|
||||
memory: "8Gi"
|
||||
defaults:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
overcommit:
|
||||
cpu: 10
|
||||
memory: 2
|
||||
|
||||
namespace:
|
||||
budget:
|
||||
cpu: 32
|
||||
memory: "64Gi"
|
||||
storage: "500Gi"
|
||||
overcommit:
|
||||
cpu: 2
|
||||
memory: 1
|
||||
|
||||
pod:
|
||||
limits:
|
||||
cpu: 4
|
||||
memory: "8Gi"
|
||||
defaults:
|
||||
cpu: "200m"
|
||||
memory: "200Mi"
|
||||
overcommit:
|
||||
cpu: 10
|
||||
memory: 2
|
||||
namespaces: []
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
digest: sha256:636a65e9846bdff17cc4e65b0849061f783759a37aa51fb85ff6fd8ba5e68467
|
||||
generated: "2021-08-05T10:39:10.053810673+02:00"
|
||||
version: 0.2.0
|
||||
digest: sha256:ea028bf07fdc361daabca0c0155e4511cc4fffda94d2f697f4d16013f250c8a8
|
||||
generated: "2023-02-17T15:13:57.926786542+01:00"
|
||||
|
||||
@@ -15,9 +15,9 @@ 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: 0.29.0
|
||||
version: 0.43.0
|
||||
|
||||
dependencies:
|
||||
- name: common
|
||||
version: 0.1.0
|
||||
version: 0.2.0
|
||||
repository: file://../common
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -19,8 +19,7 @@
|
||||
"schemaIDs": [
|
||||
"#/properties/resources"
|
||||
],
|
||||
"uiSchema": {
|
||||
},
|
||||
"uiSchema": {},
|
||||
"metaData": {
|
||||
"name": "Resources",
|
||||
"icon": "M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"
|
||||
@@ -28,7 +27,8 @@
|
||||
},
|
||||
{
|
||||
"schemaIDs": [
|
||||
"#/properties/probe"
|
||||
"#/properties/probe",
|
||||
"#/properties/livenessProbe"
|
||||
],
|
||||
"uiSchema": {
|
||||
"#/properties/probe": {
|
||||
@@ -49,6 +49,25 @@
|
||||
"ui:widget": "range"
|
||||
}
|
||||
}
|
||||
},
|
||||
"#/properties/livenessProbe": {
|
||||
"settings": {
|
||||
"initialDelaySeconds": {
|
||||
"ui:widget": "range"
|
||||
},
|
||||
"periodSeconds": {
|
||||
"ui:widget": "range"
|
||||
},
|
||||
"successThreshold": {
|
||||
"ui:widget": "range"
|
||||
},
|
||||
"timeoutSeconds": {
|
||||
"ui:widget": "range"
|
||||
},
|
||||
"failureThreshold": {
|
||||
"ui:widget": "range"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"metaData": {
|
||||
@@ -74,6 +93,7 @@
|
||||
},
|
||||
{
|
||||
"schemaIDs": [
|
||||
"#/properties/secretEnabled",
|
||||
"#/properties/sealedSecrets"
|
||||
],
|
||||
"uiSchema": {
|
||||
@@ -84,7 +104,7 @@
|
||||
}
|
||||
},
|
||||
"metaData": {
|
||||
"name": "Sealed Secrets",
|
||||
"name": "Secrets",
|
||||
"icon": "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"
|
||||
}
|
||||
},
|
||||
@@ -92,7 +112,18 @@
|
||||
"schemaIDs": [
|
||||
"#/properties/volumes"
|
||||
],
|
||||
"uiSchema": {},
|
||||
"uiSchema": {
|
||||
"#/properties/volumes": {
|
||||
"items": {
|
||||
"emptyDir": {
|
||||
"ui:widget": "hidden"
|
||||
},
|
||||
"configMapValue": {
|
||||
"ui:widget": "textarea"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"metaData": {
|
||||
"name": "Volumes",
|
||||
"icon": "M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"
|
||||
@@ -104,7 +135,7 @@
|
||||
],
|
||||
"uiSchema": {},
|
||||
"metaData": {
|
||||
"name": "Host Names",
|
||||
"name": "Ingress",
|
||||
"icon": "M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"
|
||||
}
|
||||
},
|
||||
@@ -118,5 +149,17 @@
|
||||
"name": "High Availability",
|
||||
"icon": "M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"schemaIDs": [
|
||||
"#/properties/podAnnotations",
|
||||
"#/properties/gitSha",
|
||||
"#/properties/gitRepository"
|
||||
],
|
||||
"uiSchema": {},
|
||||
"metaData": {
|
||||
"name": "Misc",
|
||||
"icon": "M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
@@ -0,0 +1 @@
|
||||
{{- include "common.customFileConfigmap.tpl" . -}}
|
||||
@@ -5,10 +5,11 @@ metadata:
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "helm-chart.labels" . | nindent 4 }}
|
||||
{{- if .Values.gitSha }}
|
||||
annotations:
|
||||
kubectl.kubernetes.io/default-container: {{ template "robustName" .Release.Name }}
|
||||
{{- if .Values.gitSha }}
|
||||
gimlet.io/git-sha: {{ .Values.gitSha }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicas }}
|
||||
selector:
|
||||
@@ -84,9 +85,21 @@ spec:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.livenessProbe.enabled }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.livenessProbe.path }}
|
||||
port: {{ .Values.containerPort }}
|
||||
scheme: HTTP
|
||||
{{- with .Values.livenessProbe.settings }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- include "common.volumeMountsRef.tpl" . | nindent 10 }}
|
||||
{{- if not .Values.resources.ignore }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if .Values.sidecar }}
|
||||
- name: {{ template "robustName" .Release.Name }}-sidecar
|
||||
securityContext: *securityContext
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{{- if .Values.extraDeploy }}
|
||||
{{ .Values.extraDeploy }}
|
||||
{{- end }}
|
||||
@@ -6,7 +6,7 @@
|
||||
{{- $resourceName = printf "%s-%s" $robustName (include "robustName" .ingress.host) -}}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $resourceName }}
|
||||
@@ -26,6 +26,9 @@ metadata:
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .ingress.ingressClassName }}
|
||||
ingressClassName: {{ .ingress.ingressClassName }}
|
||||
{{- end }}
|
||||
{{- if default false .ingress.tlsEnabled }}
|
||||
tls:
|
||||
- hosts:
|
||||
@@ -36,9 +39,13 @@ spec:
|
||||
- host: {{ .ingress.host | quote }}
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
serviceName: {{ $robustName }}
|
||||
servicePort: {{ if .root.Values.svcPort }}{{ .root.Values.svcPort }}{{ else }}{{ .root.Values.containerPort }}{{ end }}
|
||||
- path: {{ .ingress.path | default "/" | quote }}
|
||||
pathType: "Prefix"
|
||||
backend:
|
||||
service:
|
||||
name: {{ $robustName }}
|
||||
port:
|
||||
number: {{ if .root.Values.svcPort }}{{ .root.Values.svcPort }}{{ else }}{{ .root.Values.containerPort }}{{ end }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.ingress }}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{{- if and (.Values.podDisruptionBudgetEnabled) (gt (.Values.replicas | int64) 1) }}
|
||||
apiVersion: policy/v1beta1
|
||||
apiVersion: policy/v1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: {{ template "robustName" .Release.Name }}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
suite: test deployment
|
||||
templates:
|
||||
- custom-file-configmap.yaml
|
||||
tests:
|
||||
- it: Should create configmaps for custom string files
|
||||
set:
|
||||
volumes:
|
||||
- fileName: myFile.conf
|
||||
fileContent: |
|
||||
blablabla
|
||||
bla
|
||||
path: /randomPath/myFile.conf
|
||||
subPath: myFile.conf
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- equal:
|
||||
path: data
|
||||
value:
|
||||
myFile.conf: |
|
||||
blablabla
|
||||
bla
|
||||
@@ -0,0 +1,44 @@
|
||||
suite: test deployment
|
||||
templates:
|
||||
- deployment.yaml
|
||||
- configmap.yaml
|
||||
- pvc.yaml
|
||||
tests:
|
||||
- it: Should mount volume
|
||||
set:
|
||||
existingFileSecrets:
|
||||
- name: my-existing-secret
|
||||
path: /config
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
value:
|
||||
- name: my-existing-secret
|
||||
mountPath: /config
|
||||
readOnly: true
|
||||
- it: Should mount volume with optional subPath
|
||||
set:
|
||||
existingFileSecrets:
|
||||
- name: my-existing-secret
|
||||
path: /config/config.yaml
|
||||
subPath: config.yml
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
value:
|
||||
- name: my-existing-secret
|
||||
mountPath: /config/config.yaml
|
||||
subPath: config.yml
|
||||
readOnly: true
|
||||
- it: Should reference volume
|
||||
set:
|
||||
existingFileSecrets:
|
||||
- name: my-existing-secret
|
||||
path: /config
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: my-existing-secret
|
||||
secret:
|
||||
secretName: my-existing-secret
|
||||
@@ -0,0 +1,45 @@
|
||||
suite: test deployment
|
||||
templates:
|
||||
- deployment.yaml
|
||||
- configmap.yaml
|
||||
tests:
|
||||
- it: Should set a liveness probe
|
||||
set:
|
||||
livenessProbe:
|
||||
enabled: true
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].livenessProbe
|
||||
value:
|
||||
httpGet:
|
||||
path: "/"
|
||||
port: 80
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 0
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 3
|
||||
failureThreshold: 3
|
||||
- it: Should not set a livenessProbe
|
||||
asserts:
|
||||
- isNull:
|
||||
path: spec.template.spec.containers[0].livenessProbe
|
||||
- it: Should tune liveness probe
|
||||
set:
|
||||
livenessProbe:
|
||||
enabled: true
|
||||
settings:
|
||||
periodSeconds: 30
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].livenessProbe
|
||||
value:
|
||||
httpGet:
|
||||
path: "/"
|
||||
port: 80
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 0
|
||||
periodSeconds: 30
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 3
|
||||
failureThreshold: 3
|
||||
@@ -0,0 +1,18 @@
|
||||
suite: test deployment
|
||||
templates:
|
||||
- deployment.yaml
|
||||
- configmap.yaml
|
||||
tests:
|
||||
- it: Should render resoucres if not ignored by default
|
||||
set:
|
||||
{}
|
||||
asserts:
|
||||
- isNotNull:
|
||||
path: spec.template.spec.containers[0].resources
|
||||
- it: Should ignore resources if ignore flag is set
|
||||
set:
|
||||
resources:
|
||||
ignore: true
|
||||
asserts:
|
||||
- isNull:
|
||||
path: spec.template.spec.containers[0].resources
|
||||
@@ -74,3 +74,103 @@ tests:
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: my-static-claim
|
||||
- it: Should use emptyDir
|
||||
set:
|
||||
volumes:
|
||||
- name: data
|
||||
path: /var/lib/1clickinfra/data
|
||||
emptyDir: true
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: data
|
||||
emptyDir: {}
|
||||
- it: Should use hostPath
|
||||
set:
|
||||
volumes:
|
||||
- name: data
|
||||
path: /var/lib/1clickinfra/data
|
||||
hostPath:
|
||||
path: /somewhere/over/the/rainbow
|
||||
type: DirectoryOrCreate
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: data
|
||||
hostPath:
|
||||
path: /somewhere/over/the/rainbow
|
||||
type: DirectoryOrCreate
|
||||
- it: Should use hostPath without type
|
||||
set:
|
||||
volumes:
|
||||
- name: data
|
||||
path: /var/lib/1clickinfra/data
|
||||
hostPath:
|
||||
path: /somewhere/over/the/rainbow
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: data
|
||||
hostPath:
|
||||
path: /somewhere/over/the/rainbow
|
||||
- it: Should use emptyDir
|
||||
set:
|
||||
volumes:
|
||||
- name: myScratchDisk
|
||||
path: /randomPath
|
||||
emptyDir: true
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: myScratchDisk
|
||||
emptyDir: {}
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
value:
|
||||
- name: myScratchDisk
|
||||
mountPath: /randomPath
|
||||
- it: Should use a configMap
|
||||
set:
|
||||
volumes:
|
||||
- existingConfigMap: my-configmap
|
||||
path: /randomPath/app.conf
|
||||
subPath: app.conf
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: my-configmap
|
||||
configMap:
|
||||
name: my-configmap
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
value:
|
||||
- name: my-configmap
|
||||
mountPath: /randomPath/app.conf
|
||||
subPath: app.conf
|
||||
- it: Should use a configmap with custom value
|
||||
set:
|
||||
volumes:
|
||||
- fileName: myfile.conf
|
||||
fileContent: |
|
||||
blablabla
|
||||
bla
|
||||
path: /randomPath/myfile.conf
|
||||
subPath: myfile.conf
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.template.spec.volumes
|
||||
value:
|
||||
- name: myfile-conf
|
||||
configMap:
|
||||
name: myfile-conf
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
value:
|
||||
- name: myfile-conf
|
||||
mountPath: /randomPath/myfile.conf
|
||||
subPath: myfile.conf
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
suite: test service
|
||||
templates:
|
||||
- extraDeploy.yaml
|
||||
tests:
|
||||
- it: Should include additional yaml pieces
|
||||
set:
|
||||
extraDeploy: |
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: test-network-policy
|
||||
namespace: default
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
role: db
|
||||
policyTypes:
|
||||
- Ingress
|
||||
- Egress
|
||||
ingress:
|
||||
- from:
|
||||
- ipBlock:
|
||||
cidr: 172.17.0.0/16
|
||||
except:
|
||||
- 172.17.1.0/24
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
project: myproject
|
||||
- podSelector:
|
||||
matchLabels:
|
||||
role: frontend
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 6379
|
||||
egress:
|
||||
- to:
|
||||
- ipBlock:
|
||||
cidr: 10.0.0.0/24
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 5978
|
||||
asserts:
|
||||
- equal:
|
||||
path: kind
|
||||
value: NetworkPolicy
|
||||
- it: Should include multiple yaml pieces
|
||||
set:
|
||||
extraDeploy: |
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 2
|
||||
@@ -20,9 +20,13 @@ tests:
|
||||
- host: chart-example.local
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
serviceName: release-name
|
||||
servicePort: 80
|
||||
- path: "/"
|
||||
pathType: "Prefix"
|
||||
backend:
|
||||
service:
|
||||
name: release-name
|
||||
port:
|
||||
number: 80
|
||||
- it: Should pass ingress host name as is, user must sanitize it
|
||||
set:
|
||||
ingress:
|
||||
@@ -41,20 +45,33 @@ tests:
|
||||
- host: feature/my_branch.local
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
serviceName: release-name
|
||||
servicePort: 80
|
||||
- path: "/"
|
||||
pathType: "Prefix"
|
||||
backend:
|
||||
service:
|
||||
name: release-name
|
||||
port:
|
||||
number: 80
|
||||
- it: Should set Ingress annotation
|
||||
set:
|
||||
ingress:
|
||||
host: chart-example.local
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
just/a-random: annotation
|
||||
asserts:
|
||||
- equal:
|
||||
path: metadata.annotations
|
||||
value:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
just/a-random: annotation
|
||||
- it: Should set ingress class
|
||||
set:
|
||||
ingress:
|
||||
host: chart-example.local
|
||||
ingressClassName: nginx
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.ingressClassName
|
||||
value: nginx
|
||||
- it: Should generate multiple ingresses
|
||||
set:
|
||||
ingresses:
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
suite: test ingress
|
||||
templates:
|
||||
- ingress.yaml
|
||||
tests:
|
||||
- it: Should default
|
||||
set:
|
||||
ingress:
|
||||
host: chart-example.local
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.rules[0].http.paths[0].path
|
||||
value: "/"
|
||||
- it: Should use path
|
||||
set:
|
||||
ingress:
|
||||
host: chart-example.local
|
||||
path: "/mypath"
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.rules[0].http.paths[0].path
|
||||
value: "/mypath"
|
||||
@@ -9,7 +9,7 @@ tests:
|
||||
containerPort: 1234
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.rules[0].http.paths[0].backend.servicePort
|
||||
path: spec.rules[0].http.paths[0].backend.service.port.number
|
||||
value: 1234
|
||||
- it: Should use service port
|
||||
set:
|
||||
@@ -19,5 +19,5 @@ tests:
|
||||
containerPort: 5678
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.rules[0].http.paths[0].backend.servicePort
|
||||
path: spec.rules[0].http.paths[0].backend.service.port.number
|
||||
value: 1234
|
||||
|
||||
@@ -13,6 +13,20 @@ tests:
|
||||
- equal:
|
||||
path: spec.storageClassName
|
||||
value: default
|
||||
- it: Should assign annotations to the PVC
|
||||
set:
|
||||
volumes:
|
||||
- name: data
|
||||
path: /var/lib/1clickinfra/data
|
||||
size: 10Gi
|
||||
storageClass: default
|
||||
pvcAnnotations:
|
||||
rancher.io/local-path/volume-type: local
|
||||
asserts:
|
||||
- equal:
|
||||
path: metadata.annotations
|
||||
value:
|
||||
rancher.io/local-path/volume-type: local
|
||||
- it: Should not generate a claim when using existing claim
|
||||
set:
|
||||
volumes:
|
||||
@@ -22,3 +36,13 @@ tests:
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
- it: Should not generate a claim when using host path
|
||||
set:
|
||||
volumes:
|
||||
- name: data
|
||||
path: /var/lib/1clickinfra/data
|
||||
hostPath:
|
||||
path: /data/test
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
@@ -133,8 +133,8 @@
|
||||
"podAnnotations": {
|
||||
"$id": "#/properties/podAnnotations",
|
||||
"type": "object",
|
||||
"title": "The podAnnotations schema",
|
||||
"description": "An explanation about the purpose of this instance.",
|
||||
"title": "Pod annotations",
|
||||
"description": "Annotations to place on pods",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{}
|
||||
@@ -142,6 +142,20 @@
|
||||
"required": [],
|
||||
"additionalProperties": true
|
||||
},
|
||||
"gitSha": {
|
||||
"$id": "#/properties/gitSha",
|
||||
"type": "string",
|
||||
"title": "Commit Hash",
|
||||
"description": "The git hash that you are deploying",
|
||||
"default": ""
|
||||
},
|
||||
"gitRepository": {
|
||||
"$id": "#/properties/gitRepository",
|
||||
"type": "string",
|
||||
"title": "GitHub Repository",
|
||||
"description": "The git repository that you are deploying",
|
||||
"default": ""
|
||||
},
|
||||
"podSecurityContext": {
|
||||
"$id": "#/properties/podSecurityContext",
|
||||
"type": "object",
|
||||
@@ -212,6 +226,16 @@
|
||||
],
|
||||
"required": [],
|
||||
"properties": {
|
||||
"ignore": {
|
||||
"$id": "#/properties/resources/properties/ignore",
|
||||
"type": "boolean",
|
||||
"title": "Ignore",
|
||||
"description": "If set to true, resource configuration will be ignored",
|
||||
"default": false,
|
||||
"examples": [
|
||||
true
|
||||
]
|
||||
},
|
||||
"requests": {
|
||||
"$id": "#/properties/resources/properties/requests",
|
||||
"type": "object",
|
||||
@@ -334,7 +358,7 @@
|
||||
"$id": "#/properties/probe",
|
||||
"type": "object",
|
||||
"title": "Healthcheck",
|
||||
"description": "The Kubernetes Readiness probe that determines whether your app is healthy and if should receive traffic",
|
||||
"description": "The Kubernetes Readiness probe determines whether your app is healthy and if it should receive traffic",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
@@ -385,10 +409,10 @@
|
||||
"$id": "#/properties/probe/properties/settings/properties/initialDelaySeconds",
|
||||
"type": "integer",
|
||||
"title": "Initial Delay Seconds",
|
||||
"description": "Number of seconds after the container has started before the probes is initiated",
|
||||
"description": "Number of seconds after the container has started before the probe is initiated",
|
||||
"default": 0,
|
||||
"minimum": 0,
|
||||
"maximum": 60
|
||||
"maximum": 180
|
||||
},
|
||||
"periodSeconds": {
|
||||
"$id": "#/properties/probe/properties/settings/properties/periodSeconds",
|
||||
@@ -421,7 +445,107 @@
|
||||
"$id": "#/properties/probe/properties/settings/properties/failureThreshold",
|
||||
"type": "integer",
|
||||
"title": "Failure Threshold",
|
||||
"description": "When a probe fails, Kubernetes will tries this many times before giving up. Giving up the pod will be marked Unready and won't get any traffic",
|
||||
"description": "When a probe fails, Kubernetes will try this many times before giving up. Giving up the pod will be marked Unready and won't get any traffic",
|
||||
"default": 3,
|
||||
"minimum": 1,
|
||||
"maximum": 15
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"livenessProbe": {
|
||||
"$id": "#/properties/livenessProbe",
|
||||
"type": "object",
|
||||
"title": "Liveness check",
|
||||
"description": "The Kubernetes Liveness probe determines whether your app is healthy and if it should be restarted",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"enabled": false,
|
||||
"path": "/"
|
||||
}
|
||||
],
|
||||
"required": [
|
||||
"enabled",
|
||||
"path"
|
||||
],
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"$id": "#/properties/livenessProbe/properties/enabled",
|
||||
"type": "boolean",
|
||||
"title": "",
|
||||
"description": "",
|
||||
"default": false,
|
||||
"examples": [
|
||||
false
|
||||
]
|
||||
},
|
||||
"path": {
|
||||
"$id": "#/properties/livenessProbe/properties/path",
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "Fill in the description",
|
||||
"default": "/",
|
||||
"examples": [
|
||||
"/"
|
||||
]
|
||||
},
|
||||
"settings": {
|
||||
"$id": "#/properties/livenessProbe/properties/settings",
|
||||
"type": "object",
|
||||
"title": "Probe thresholds",
|
||||
"description": "Tune the probe behavior",
|
||||
"examples": [
|
||||
{
|
||||
"failureThreshold": 3,
|
||||
"periodSeconds": 10,
|
||||
"successThreshold": 1,
|
||||
"timeoutSeconds": 10
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"initialDelaySeconds": {
|
||||
"$id": "#/properties/livenessProbe/properties/settings/properties/initialDelaySeconds",
|
||||
"type": "integer",
|
||||
"title": "Initial Delay Seconds",
|
||||
"description": "Number of seconds after the container has started before the probe is initiated",
|
||||
"default": 0,
|
||||
"minimum": 0,
|
||||
"maximum": 180
|
||||
},
|
||||
"periodSeconds": {
|
||||
"$id": "#/properties/livenessProbe/properties/settings/properties/periodSeconds",
|
||||
"type": "integer",
|
||||
"title": "Period",
|
||||
"description": "How often (in seconds) to perform the probe",
|
||||
"default": 10,
|
||||
"minimum": 1,
|
||||
"maximum": 60
|
||||
},
|
||||
"successThreshold": {
|
||||
"$id": "#/properties/livenessProbe/properties/settings/properties/successThreshold",
|
||||
"type": "integer",
|
||||
"title": "Success Threshold",
|
||||
"description": "Minimum consecutive successes for the probe to be considered successful after having failed",
|
||||
"default": 1,
|
||||
"minimum": 1,
|
||||
"maximum": 15
|
||||
},
|
||||
"timeoutSeconds": {
|
||||
"$id": "#/properties/livenessProbe/properties/settings/properties/timeoutSeconds",
|
||||
"type": "integer",
|
||||
"title": "Timeout",
|
||||
"description": "Number of seconds after which the probe times out",
|
||||
"default": 3,
|
||||
"minimum": 1,
|
||||
"maximum": 30
|
||||
},
|
||||
"failureThreshold": {
|
||||
"$id": "#/properties/livenessProbe/properties/settings/properties/failureThreshold",
|
||||
"type": "integer",
|
||||
"title": "Failure Threshold",
|
||||
"description": "When a probe fails, Kubernetes will try this many times before giving up. Giving up the pod will be marked Unready and won't get any traffic",
|
||||
"default": 3,
|
||||
"minimum": 1,
|
||||
"maximum": 15
|
||||
@@ -484,10 +608,17 @@
|
||||
"properties": {},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"secretEnabled": {
|
||||
"$id": "#/properties/secretEnabled",
|
||||
"type": "boolean",
|
||||
"title": "Existing secret",
|
||||
"description": "If enabled, a secret will be referenced from the deployment whose name matches the deployment name",
|
||||
"default": false
|
||||
},
|
||||
"sealedSecrets": {
|
||||
"$id": "#/properties/sealedSecrets",
|
||||
"type": "object",
|
||||
"title": "Sealed Secrets",
|
||||
"title": "Sealed secrets",
|
||||
"description": "",
|
||||
"default": {},
|
||||
"examples": [
|
||||
@@ -527,6 +658,16 @@
|
||||
"my-release.mycompany.com"
|
||||
]
|
||||
},
|
||||
"path": {
|
||||
"$id": "#/properties/ingress/properties/ingressPath",
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "The API path where your service is accessible",
|
||||
"default": "/",
|
||||
"examples": [
|
||||
"/api/myservice"
|
||||
]
|
||||
},
|
||||
"tlsEnabled": {
|
||||
"$id": "#/properties/ingress/properties/tlsEnabled",
|
||||
"type": "boolean",
|
||||
@@ -541,7 +682,7 @@
|
||||
"$id": "#/properties/ingress/properties/annotations",
|
||||
"type": "object",
|
||||
"title": "Annotations",
|
||||
"description": "",
|
||||
"description": "Annotations are used to control ingress behavior. See the full list for the Ingress Nginx project at https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/. Use the `cert-manager.io/cluster-issuer:\"letsencrypt\"` one to request TLS certificates, `kubernetes.io/ingress.class: \"nginx\"` to select an ingress controller.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
@@ -552,6 +693,49 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"existingFileSecrets": {
|
||||
"$id": "#/properties/existingFileSecrets",
|
||||
"type": "array",
|
||||
"title": "Existing file secrets",
|
||||
"description": "Allows to mount existing secrets into a container",
|
||||
"default": [],
|
||||
"additionalItems": true,
|
||||
"items": {
|
||||
"$id": "#/properties/existingFileSecrets/items",
|
||||
"type": "object",
|
||||
"anyOf": [
|
||||
{
|
||||
"id": "#/properties/existingFileSecrets/oneOf/0",
|
||||
"title": "existingFileSecrets",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "Name",
|
||||
"description": "The name of the existing secret to mount",
|
||||
"default": "data"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "The mount path inside the container",
|
||||
"default": "/data"
|
||||
},
|
||||
"subPath": {
|
||||
"type": "string",
|
||||
"title": "SubPath",
|
||||
"description": "The optinal mount subpath inside the container, to only mount a specific file but not a complete directory.",
|
||||
"default": "config.yaml"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"path"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"volumes": {
|
||||
"$id": "#/properties/volumes",
|
||||
"type": "array",
|
||||
@@ -561,38 +745,221 @@
|
||||
"items": {
|
||||
"$id": "#/properties/volumes/items",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"$id": "#/properties/volumes/items/anyOf/0/properties/name",
|
||||
"type": "string",
|
||||
"title": "Name",
|
||||
"description": "The name of the volume. Used only to recognize the volumes purpose in the config later on",
|
||||
"default": "data"
|
||||
"anyOf": [
|
||||
{
|
||||
"id": "#/properties/volumes/oneOf/0",
|
||||
"title": "Volume",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "Name",
|
||||
"description": "The name of the volume. Used only to recognize the volumes purpose in the config later on",
|
||||
"default": "data"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "The mount path inside the container",
|
||||
"default": "/data"
|
||||
},
|
||||
"size": {
|
||||
"type": "string",
|
||||
"title": "Size",
|
||||
"description": "eg: 10Gi"
|
||||
},
|
||||
"storageClass": {
|
||||
"type": "string",
|
||||
"title": "Storage Class",
|
||||
"description": "The slug indicating the disk type in your cloud provider. `standard` on Google Cloud, `default` on Azure; `do-block-storage` on Digital Ocean"
|
||||
},
|
||||
"pvcAnnotations": {
|
||||
"type": "object",
|
||||
"title": "Annotations",
|
||||
"description": "Annotations are used to control the persistance claim behavior.",
|
||||
"default": {},
|
||||
"examples": [
|
||||
{
|
||||
"rancher.io/local-path/volume-type": "local"
|
||||
}
|
||||
],
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"path",
|
||||
"size"
|
||||
]
|
||||
},
|
||||
"path": {
|
||||
"$id": "#/properties/volumes/items/anyOf/0/properties/path",
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "The mount path inside the container",
|
||||
"default": "/data"
|
||||
{
|
||||
"id": "#/properties/volumes/oneOf/1",
|
||||
"title": "Use an existing volume claim",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "Name",
|
||||
"description": "The name of the volume. Used only to recognize the volumes purpose in the config later on",
|
||||
"default": "data"
|
||||
},
|
||||
"existingClaim": {
|
||||
"type": "string",
|
||||
"title": "Existing Claim",
|
||||
"description": "Use an existing PersistentVolumeClaim"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "The mount path inside the container",
|
||||
"default": "/data"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"path",
|
||||
"existingClaim"
|
||||
]
|
||||
},
|
||||
"size": {
|
||||
"$id": "#/properties/volumes/items/anyOf/0/properties/size",
|
||||
"type": "string",
|
||||
"title": "Size",
|
||||
"description": "",
|
||||
"default": "10Gi"
|
||||
{
|
||||
"id": "#/properties/volumes/oneOf/2",
|
||||
"title": "Use a path from the host",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "Name",
|
||||
"description": "The name of the volume. Used only to recognize the volumes purpose in the config later on",
|
||||
"default": "data"
|
||||
},
|
||||
"hostPath": {
|
||||
"type": "object",
|
||||
"title": "Path on the host",
|
||||
"description": "Use a physical path on the host machine",
|
||||
"properties": {
|
||||
"path": {
|
||||
"type": "string",
|
||||
"title": "Path on Host",
|
||||
"description": "Use a physical path on the host machine"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"title": "Path Type",
|
||||
"enum": [
|
||||
"DirectoryOrCreate",
|
||||
"Directory",
|
||||
"FileOrCreate",
|
||||
"File",
|
||||
"Socket",
|
||||
"CharDevice",
|
||||
"BlockDevice"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"path"
|
||||
]
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "The mount path inside the container",
|
||||
"default": "/data"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"path",
|
||||
"hostPath"
|
||||
]
|
||||
},
|
||||
"storageClass": {
|
||||
"$id": "#/properties/volumes/items/anyOf/0/properties/storageClass",
|
||||
"type": "string",
|
||||
"title": "Storage Class",
|
||||
"description": "The slug indicating the disk type in your cloud provider. `standard` on Google Cloud, `default` on Azure; `do-block-storage` on Digital Ocean",
|
||||
"default": ""
|
||||
{
|
||||
"id": "#/properties/volumes/oneOf/3",
|
||||
"title": "Use an ephemeral volume",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "Name",
|
||||
"default": "ephemeral-volume"
|
||||
},
|
||||
"emptyDir": {
|
||||
"type": "boolean",
|
||||
"title": "ephemeral volume (emptyDir)",
|
||||
"description": "Enable to use a non-persistent disk",
|
||||
"default": true
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "The mount path inside the container",
|
||||
"default": "/data"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"emptyDir",
|
||||
"path"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "#/properties/volumes/oneOf/4",
|
||||
"title": "Mount an existing configMap as a file",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"existingConfigMap": {
|
||||
"type": "string",
|
||||
"title": "Name",
|
||||
"description": "The name of the configMap to mount",
|
||||
"default": "data"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "The mount path inside the container",
|
||||
"default": "/data/dummy.conf"
|
||||
},
|
||||
"subPath": {
|
||||
"type": "string",
|
||||
"title": "subPath",
|
||||
"description": "Mount single file",
|
||||
"default": "dummy.conf"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"existingConfigMap",
|
||||
"path"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "#/properties/volumes/oneOf/5",
|
||||
"title": "Custom string to mount as a file",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"fileName": {
|
||||
"type": "string",
|
||||
"title": "File name"
|
||||
},
|
||||
"fileContent": {
|
||||
"type": "string",
|
||||
"title": "File content"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"title": "Path",
|
||||
"description": "The mount path inside the container",
|
||||
"default": "/data"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"fileName",
|
||||
"fileContent",
|
||||
"path"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,16 @@ image:
|
||||
tag: "latest"
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
# ingress:
|
||||
# host: chart-example.local
|
||||
# ingressClassName: nginx
|
||||
# tlsEnabled: true
|
||||
# annotations:
|
||||
# cert-manager.io/cluster-issuer: letsencrypt-staging
|
||||
|
||||
# vars:
|
||||
# MY_VAR: "value"
|
||||
|
||||
replicas: 1
|
||||
|
||||
nameOverride: ""
|
||||
@@ -40,6 +50,17 @@ probe:
|
||||
timeoutSeconds: 3
|
||||
failureThreshold: 3
|
||||
|
||||
# Before you use a liveness probe: https://srcco.de/posts/kubernetes-liveness-probes-are-dangerous.html
|
||||
livenessProbe:
|
||||
enabled: false
|
||||
path: "/"
|
||||
settings:
|
||||
initialDelaySeconds: 0
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 3
|
||||
failureThreshold: 3
|
||||
|
||||
secretEnabled: false
|
||||
|
||||
shell: "/bin/sh"
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+427
-59
@@ -2,21 +2,175 @@ apiVersion: v1
|
||||
entries:
|
||||
cron-job:
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.495729398Z"
|
||||
created: "2023-02-17T14:19:45.657827179Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.2.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: abf83fbf901cd5bf40a3875eb3ed3490ef7ad7535bd07a797fb1cfb87ba7ad4d
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.42.0.tgz
|
||||
version: 0.42.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.657179376Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: a4a0a37bd0428d2715758319fa3e1f5b7fadd650a018e9c3c3eca5d060520600
|
||||
digest: dafa5373aa5e5153fa6be65a3d09b1ad6db2316f76889b4168fe81d3ed38484b
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.41.0.tgz
|
||||
version: 0.41.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.656515873Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 13750b39f8fecf72bd7a94bffbc6700e2c10df73527d7f8878cc7adbe0e86dbf
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.40.0.tgz
|
||||
version: 0.40.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.65581147Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 6fb6e912f104fddced69577eae37b884496d6d3ca469adb3cf9c21a119c1f5a2
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.39.0.tgz
|
||||
version: 0.39.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.654851565Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 677111225bcba92cf711236c19ff7c41e203de2074c054a036275d55c99ede03
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.38.0.tgz
|
||||
version: 0.38.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.65376236Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 0b4e969d361df6daafe5d267c1f2ff4c1aede3423c18255eaa2a489600dd31f9
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.37.0.tgz
|
||||
version: 0.37.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.652663755Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 938ddcad76bc85b54870129bb042c6b5faab5e60f23fe79ac22fe9ea58686e03
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.36.0.tgz
|
||||
version: 0.36.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.651894652Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 9e864df616e71481dadadc9e39c08ae8d5dcc47ebc3e77158a81044dc4027d6c
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.35.0.tgz
|
||||
version: 0.35.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.650475145Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 39e0d49e0e53c56911c4122541a454e1d87df444c80e9580c31330a4d0ea0299
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.34.0.tgz
|
||||
version: 0.34.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.649800842Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: a271e86592e89095de4f5130a7603785959f6352609868116b4501f0c7db2985
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.33.0.tgz
|
||||
version: 0.33.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.649124539Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 65730ad010bfaf7cc4771d1fc0d9f76dc952664f51e66f5e53011fa24467c81d
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.32.0.tgz
|
||||
version: 0.32.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.648440236Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: cc34a31277125ef6554ca86361bddf94d50c8f612770567afd89b7eebd1970ec
|
||||
name: cron-job
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/cron-job-0.2.2.tgz
|
||||
version: 0.2.2
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.49438319Z"
|
||||
created: "2023-02-17T14:19:45.647773633Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
@@ -30,7 +184,7 @@ entries:
|
||||
- https://chart.onechart.dev/cron-job-0.2.1.tgz
|
||||
version: 0.2.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.493612485Z"
|
||||
created: "2023-02-17T14:19:45.64703063Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
@@ -44,7 +198,7 @@ entries:
|
||||
- https://chart.onechart.dev/cron-job-0.2.0.tgz
|
||||
version: 0.2.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.49282768Z"
|
||||
created: "2023-02-17T14:19:45.646287926Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 02a23d8b4177290a518ee5de6a5e1f557f7409f94b2e04f23fedea193464188f
|
||||
@@ -54,7 +208,7 @@ entries:
|
||||
- https://chart.onechart.dev/cron-job-0.1.2.tgz
|
||||
version: 0.1.2
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.492422378Z"
|
||||
created: "2023-02-17T14:19:45.645945225Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: afab9ba533a4686827b54b0dad64f5bbf76f7fbc075e35fb1034689db9ab9dda
|
||||
@@ -64,7 +218,7 @@ entries:
|
||||
- https://chart.onechart.dev/cron-job-0.1.1.tgz
|
||||
version: 0.1.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.492020775Z"
|
||||
created: "2023-02-17T14:19:45.645599623Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 01f9fa40c1c4085d7688474ab00c9e9d21bd1d0793db6b75f2edda0e18456282
|
||||
@@ -75,16 +229,34 @@ entries:
|
||||
version: 0.1.0
|
||||
namespaces:
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.49911372Z"
|
||||
created: "2023-02-17T14:19:45.659050284Z"
|
||||
description: Chart to create namespaces and their defaults
|
||||
digest: 9e40fffa33967fb1d5261d64b6101e5a6a36242f9e677c651275b2c1601dd3e4
|
||||
digest: a908fdd90fea6d27a2cc968f45bee695ce9984d1185168838e58395ea0f49121
|
||||
name: namespaces
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/namespaces-0.3.0.tgz
|
||||
version: 0.3.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.658850683Z"
|
||||
description: Chart to create namespaces and their defaults
|
||||
digest: a8e28dab9dc1a0044e75fbf8dd6d89c760c6fe9caa76bf16076cf5ecb311e808
|
||||
name: namespaces
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/namespaces-0.2.1.tgz
|
||||
version: 0.2.1
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.658450182Z"
|
||||
description: Chart to create namespaces and their defaults
|
||||
digest: 9539bfd2fde6d8f2b36ffec99c8a3a3eb7887462e98ee740b0ae0ea2b16b96b6
|
||||
name: namespaces
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/namespaces-0.2.0.tgz
|
||||
version: 0.2.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.496723005Z"
|
||||
created: "2023-02-17T14:19:45.65806738Z"
|
||||
description: Chart to create namespaces and their defaults
|
||||
digest: 88b06d78a9d1bda6f2ee15b1fad7f25399ac25c2320fb9a8dfa1a4fd14afdf6e
|
||||
name: namespaces
|
||||
@@ -94,7 +266,203 @@ entries:
|
||||
version: 0.1.0
|
||||
onechart:
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.534884543Z"
|
||||
created: "2023-02-17T14:19:45.702614683Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.2.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 9db2ac0e9e4df53f6cb2731bccb168cec9c3f676ef80c8dcaa709012a63814a5
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.42.0.tgz
|
||||
version: 0.42.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.701632178Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 79b8c435dd9736654f5023829223ebf3302a082db61f464cc4d2a5d631efe4b6
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.41.0.tgz
|
||||
version: 0.41.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.700684174Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 18c7611d7591b10d5f68a4ca44b4fecbc8b1635797b86053fe23bc0d2b71166c
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.40.0.tgz
|
||||
version: 0.40.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.699403168Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 99045bbe5babfa5be9f41de300f7044f690a1e0ae186ec19075c0485afd45b42
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.39.0.tgz
|
||||
version: 0.39.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.698262263Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 7e05eaddc56a29c6b762b36a485592ddb32f4cf1684dda79dc8fe069c34a68f2
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.38.0.tgz
|
||||
version: 0.38.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.697309459Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 8c79b4a9a53ce4b2d9bd5724b156fdeafa9f9604690c365592d4ddd87ce799d0
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.37.0.tgz
|
||||
version: 0.37.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.696357554Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 3882c5dad80044c1fd854e06ee329167c9635354a5f2ba1c20bd683c0c12090f
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.36.0.tgz
|
||||
version: 0.36.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.69536365Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 7392bba3467e4c28ffa4c868c7580852dd35dc7e0ff4956a2546adc06c7a29a7
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.35.0.tgz
|
||||
version: 0.35.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.693780542Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 4eb83c83a38c56eb7883949186dc4e91c86da9dc51d6c1ffb962996004ddcd19
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.34.0.tgz
|
||||
version: 0.34.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.690814029Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: adc67be9607bb6c32a7e3e4c16098c6c2e7d4804935db061cc06df79c1af2a08
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.33.0.tgz
|
||||
version: 0.33.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.690026925Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: d2d691f32f0fb95e1ec16686084a7c0a0e71a4c8094124c7ce851dd5ff486059
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.32.0.tgz
|
||||
version: 0.32.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.689219522Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: b39a3dd9e29914d6b2c9b8b35055c07674e8ee22efbc1d3c5090f1f5f786dfe9
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.31.0.tgz
|
||||
version: 0.31.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.688357718Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: fa4bc2bd7ed52d9a4f51375cdab11521024004b9e6ff2f516d2b73479ce9a6cf
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.30.0.tgz
|
||||
version: 0.30.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.686472409Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
version: 0.1.0
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 53645774e5e984048c37f7147754ecfbae5036aa45a830ca20358a5d075aefdf
|
||||
name: onechart
|
||||
type: application
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.29.0.tgz
|
||||
version: 0.29.0
|
||||
- apiVersion: v2
|
||||
created: "2023-02-17T14:19:45.685613405Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
@@ -108,7 +476,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.28.0.tgz
|
||||
version: 0.28.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.533912936Z"
|
||||
created: "2023-02-17T14:19:45.684744801Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
@@ -122,7 +490,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.27.0.tgz
|
||||
version: 0.27.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.53291083Z"
|
||||
created: "2023-02-17T14:19:45.683801697Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
@@ -136,7 +504,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.27.0-rc3.tgz
|
||||
version: 0.27.0-rc3
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.531913324Z"
|
||||
created: "2023-02-17T14:19:45.68231429Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
@@ -150,7 +518,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.27.0-rc2.tgz
|
||||
version: 0.27.0-rc2
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.530919218Z"
|
||||
created: "2023-02-17T14:19:45.681379586Z"
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: file://../common
|
||||
@@ -164,7 +532,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.27.0-rc1.tgz
|
||||
version: 0.27.0-rc1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.529937412Z"
|
||||
created: "2023-02-17T14:19:45.680410982Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 3563a30dba0b6a9c7a1a3df358ca5c41e952882fd2f1bbe33c8103536870d651
|
||||
@@ -174,7 +542,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.26.0.tgz
|
||||
version: 0.26.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.529214807Z"
|
||||
created: "2023-02-17T14:19:45.678705374Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: efcbabde8193f1c3ecb34e4ede8f5efead1f77d8096180f4e8640ff94df07461
|
||||
@@ -184,7 +552,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.25.0.tgz
|
||||
version: 0.25.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.528486503Z"
|
||||
created: "2023-02-17T14:19:45.677553069Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 59f1389268efb3d970f84cae968e3ecbde57015df1201411f9f46becb4b09844
|
||||
@@ -194,7 +562,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.24.1.tgz
|
||||
version: 0.24.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.527722798Z"
|
||||
created: "2023-02-17T14:19:45.676623264Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 74b6fdf49a9fa5327fc0639f1d97f0cf553f89030c01379f3c91a5adb6f8a0f1
|
||||
@@ -204,7 +572,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.24.0.tgz
|
||||
version: 0.24.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.523484571Z"
|
||||
created: "2023-02-17T14:19:45.675976261Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: f8e444c2d5c5a4e73b76a971effda5246d3200427be45c2fb546bc990f197ecc
|
||||
@@ -214,7 +582,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.23.0.tgz
|
||||
version: 0.23.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.522588266Z"
|
||||
created: "2023-02-17T14:19:45.675435759Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: dfad2865c3eb54f0366300ef63b8ba1863ca69aa27e5ca5d3512c0d799d004d3
|
||||
@@ -224,7 +592,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.22.0.tgz
|
||||
version: 0.22.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.521523359Z"
|
||||
created: "2023-02-17T14:19:45.674872256Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 1b837cdefcb7025c40bffdd620a0f116df5ccb9023ac6a8c538bd8e77b3eb80a
|
||||
@@ -234,7 +602,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.21.0.tgz
|
||||
version: 0.21.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.520567453Z"
|
||||
created: "2023-02-17T14:19:45.674272954Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: a4f5741b46b89cd4328fbd96f96d85d53bae64b526730de5097ec33639c9c54f
|
||||
@@ -244,7 +612,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.20.0.tgz
|
||||
version: 0.20.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.519457746Z"
|
||||
created: "2023-02-17T14:19:45.67342545Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 59dd16db4f8519d3922da349aabcc2daec8385fc8a98d0f3163a84b98cc12f61
|
||||
@@ -254,7 +622,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.19.0.tgz
|
||||
version: 0.19.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.518729642Z"
|
||||
created: "2023-02-17T14:19:45.672336745Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 74c4c6a448e66929dfcafc5a641b5bdbaa8af6832c6065b02ce756dfeb3fc438
|
||||
@@ -264,7 +632,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.18.0.tgz
|
||||
version: 0.18.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.517971437Z"
|
||||
created: "2023-02-17T14:19:45.671531941Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: e1ba0bb54c3a3e13b661bb608839c7013d12e24d0437581ebfdbf5ce4a283d4d
|
||||
@@ -274,7 +642,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.17.0.tgz
|
||||
version: 0.17.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.516615929Z"
|
||||
created: "2023-02-17T14:19:45.670806838Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 596350a4977b305e4d5aae16dd8dcca62a17ea5cec9f444aacd82a12d6b3dcfe
|
||||
@@ -284,7 +652,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.16.0.tgz
|
||||
version: 0.16.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.515798924Z"
|
||||
created: "2023-02-17T14:19:45.670225735Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: d1a5a9e9bff274f32f6849bc58b201c7886240b94dd6b70b5cf3411d9ad03393
|
||||
@@ -294,7 +662,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.15.3.tgz
|
||||
version: 0.15.3
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.515063319Z"
|
||||
created: "2023-02-17T14:19:45.669612432Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 626410479f67bbbfa7e7fc94f6dfd8aae50a2bdf9fc72ec395c835dacbd5dbe7
|
||||
@@ -304,7 +672,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.15.2.tgz
|
||||
version: 0.15.2
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.514316814Z"
|
||||
created: "2023-02-17T14:19:45.667979725Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: e6d237aff4abedee6deb5ba57e8183c7598b255d40afdd04c03f73014f706aa3
|
||||
@@ -314,7 +682,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.15.1.tgz
|
||||
version: 0.15.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.513515609Z"
|
||||
created: "2023-02-17T14:19:45.666070716Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: d45fc4cc214bc94e4c2c10d6432562d7e65ee5e55226f677aafdfe101d7f6e7f
|
||||
@@ -324,7 +692,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.15.0.tgz
|
||||
version: 0.15.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.512781305Z"
|
||||
created: "2023-02-17T14:19:45.665268513Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 7e61a72a3400e09c44539094558a2084621239015132d20551c4593be3b5bede
|
||||
@@ -334,7 +702,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.14.0.tgz
|
||||
version: 0.14.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.5120249Z"
|
||||
created: "2023-02-17T14:19:45.664494409Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 743a9b552233770713f0c22edbe8cf4f55c890a59106e1f33055c1cb31be5a27
|
||||
@@ -344,7 +712,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.13.2.tgz
|
||||
version: 0.13.2
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.511312596Z"
|
||||
created: "2023-02-17T14:19:45.663832206Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 02bf9537e13cea0da9dc3bfbcdd45d51576354cb18b7c1c7cec76f829e20105f
|
||||
@@ -354,7 +722,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.13.1.tgz
|
||||
version: 0.13.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.510617391Z"
|
||||
created: "2023-02-17T14:19:45.663298504Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 5183ed825c4f255ca5a4f0ffeb8c92bbad3c43b42fc1b798f1f1fc6de2a30bef
|
||||
@@ -364,7 +732,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.13.0.tgz
|
||||
version: 0.13.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.509881187Z"
|
||||
created: "2023-02-17T14:19:45.6626084Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: e131a502d12a6b074453f1da8d0d1ca7145e80a025f31252b24cc3d62375a4c1
|
||||
@@ -374,7 +742,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.12.2.tgz
|
||||
version: 0.12.2
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.509226983Z"
|
||||
created: "2023-02-17T14:19:45.662052798Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 8e1a25d18a546c4ec5e970991301a08e38495a964a8f6e0a2ee97f92c41c9691
|
||||
@@ -384,7 +752,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.12.1.tgz
|
||||
version: 0.12.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.508551078Z"
|
||||
created: "2023-02-17T14:19:45.661469595Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: f38a6f2fbf5c847b00a9140ecd004e0bf667d859aa83d8dac4a2d0eecd1a361f
|
||||
@@ -394,7 +762,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.12.0.tgz
|
||||
version: 0.12.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.50392585Z"
|
||||
created: "2023-02-17T14:19:45.660785092Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 75c16f84b5e99aad5aa7203f5c1ce2a9589d85b89afec4e161a2e0344a522c17
|
||||
@@ -404,7 +772,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.11.0.tgz
|
||||
version: 0.11.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.501180032Z"
|
||||
created: "2023-02-17T14:19:45.66027359Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 40f1166e858d35cb237debd1390187884641b0e8c29a80aaa195b66b0ee73516
|
||||
@@ -414,7 +782,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.10.0.tgz
|
||||
version: 0.10.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.54247329Z"
|
||||
created: "2023-02-17T14:19:45.708796511Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: cb42b08b463b401f6718bba7c171ee55c173021c5101ea1b3068ef3899a6e164
|
||||
@@ -424,7 +792,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.9.0.tgz
|
||||
version: 0.9.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.541909286Z"
|
||||
created: "2023-02-17T14:19:45.708328109Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: ce046d209a9e8fa07766712492cc896451473fafca129dbc9c675107d0e39c52
|
||||
@@ -434,7 +802,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.8.2.tgz
|
||||
version: 0.8.2
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.541404483Z"
|
||||
created: "2023-02-17T14:19:45.707696106Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 422d7e6ea1bed530d4cd5e23417b229772a6fe2e835828ca282a3e6c9b646b2b
|
||||
@@ -444,7 +812,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.8.1.tgz
|
||||
version: 0.8.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.54085978Z"
|
||||
created: "2023-02-17T14:19:45.707055003Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 8001bd02fc90ad66da7941c136ee8d0e665ea90b6e1ac27d82b048f2b12b3964
|
||||
@@ -454,7 +822,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.8.0.tgz
|
||||
version: 0.8.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.539679972Z"
|
||||
created: "2023-02-17T14:19:45.705458396Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: d1454b430eb7131d0d450f7c0a8a6698278893c61e03d48649a8112dfcf42b72
|
||||
@@ -464,7 +832,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.7.1.tgz
|
||||
version: 0.7.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.539006568Z"
|
||||
created: "2023-02-17T14:19:45.704901293Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 4bf90835f287917671ec40b5b395da9332cf18e70f248d250f8d5a72360dcb4e
|
||||
@@ -474,7 +842,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.7.0.tgz
|
||||
version: 0.7.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.538079062Z"
|
||||
created: "2023-02-17T14:19:45.70421279Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 0cade489fc74a040f5e7f71d01c6fa00d3f68b4752a4d8234ccf2c1504b4c0a1
|
||||
@@ -484,7 +852,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.6.1.tgz
|
||||
version: 0.6.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.537572059Z"
|
||||
created: "2023-02-17T14:19:45.703712688Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: d607820a7e104eaaa88c153c1f2f7f409ef4c612ad747caeb3a671cf3fce03d4
|
||||
@@ -494,7 +862,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.6.0.tgz
|
||||
version: 0.6.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.537162157Z"
|
||||
created: "2023-02-17T14:19:45.703375286Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: ddf7cf87402095d62855898744b805115fdf86c4b295e0a4def0c50408fd9138
|
||||
@@ -504,7 +872,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.5.1.tgz
|
||||
version: 0.5.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.536777454Z"
|
||||
created: "2023-02-17T14:19:45.703017585Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: adf3c2cf3a27e58ec75620599e0e1c2031a7410a061a590317beeff6d8a9ad69
|
||||
@@ -514,7 +882,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.5.0.tgz
|
||||
version: 0.5.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.536385552Z"
|
||||
created: "2023-02-17T14:19:45.699708969Z"
|
||||
description: One chart to rule them all. A generic Helm chart for your application
|
||||
deployments. Because no-one can remember the Kubernetes yaml syntax.
|
||||
digest: 8dab33263c4e632aeb4656c666871440b589497b70e76a1d6c3a5e3db1a30bba
|
||||
@@ -524,7 +892,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.4.0.tgz
|
||||
version: 0.4.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.535977249Z"
|
||||
created: "2023-02-17T14:19:45.687493414Z"
|
||||
description: A generic Helm chart for your application deployments
|
||||
digest: fbaf6139e0ef8ad9a87cc1e41a97c7d25fdcf7ea17fa6364952f1a851a87480a
|
||||
name: onechart
|
||||
@@ -533,7 +901,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.3.2.tgz
|
||||
version: 0.3.2
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.535634147Z"
|
||||
created: "2023-02-17T14:19:45.687178212Z"
|
||||
description: A generic Helm chart for your application deployments
|
||||
digest: bd6f5b1865ab9b05fc6925c163ab8045235bd2723dba31f09d5083d24322d1f8
|
||||
name: onechart
|
||||
@@ -542,7 +910,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.3.1.tgz
|
||||
version: 0.3.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.535292645Z"
|
||||
created: "2023-02-17T14:19:45.686786111Z"
|
||||
description: A generic Helm chart for your application deployments
|
||||
digest: c79cef21eceab948144a289298cdf1e20e77a0782a883d7d65f9e709ccbbc271
|
||||
name: onechart
|
||||
@@ -551,7 +919,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.3.0.tgz
|
||||
version: 0.3.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.519814849Z"
|
||||
created: "2023-02-17T14:19:45.673732451Z"
|
||||
description: A generic Helm chart for your application deployments
|
||||
digest: dd814ac5d08d5e6163a1b769df6803f5cb0f09d906045086dfcc5be522bb1ec3
|
||||
name: onechart
|
||||
@@ -560,7 +928,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.2.0.tgz
|
||||
version: 0.2.0
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.500488028Z"
|
||||
created: "2023-02-17T14:19:45.659803888Z"
|
||||
description: A generic Helm chart for your application deployments
|
||||
digest: e46062df8053840cbfbba26c0a66a843a79f15a0b43a145ed019327513bd5098
|
||||
name: onechart
|
||||
@@ -569,7 +937,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.1.2.tgz
|
||||
version: 0.1.2
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.500023725Z"
|
||||
created: "2023-02-17T14:19:45.659559087Z"
|
||||
description: A generic Helm chart for your application deployments
|
||||
digest: a7bbc8b7dcc008e89156cd1830282b7d39c0592e82ccdcefb77a25a42eca2a3d
|
||||
name: onechart
|
||||
@@ -578,7 +946,7 @@ entries:
|
||||
- https://chart.onechart.dev/onechart-0.1.1.tgz
|
||||
version: 0.1.1
|
||||
- apiVersion: v2
|
||||
created: "2021-08-27T07:09:18.499563222Z"
|
||||
created: "2023-02-17T14:19:45.659300185Z"
|
||||
description: A generic Helm chart for your application deployments
|
||||
digest: 1ed8c0645abdae6c950526e9c5410dc056847a11700dc7def5f1c55eb7de0cd4
|
||||
name: onechart
|
||||
@@ -586,4 +954,4 @@ entries:
|
||||
urls:
|
||||
- https://chart.onechart.dev/onechart-0.1.0.tgz
|
||||
version: 0.1.0
|
||||
generated: "2021-08-27T07:09:18.491499672Z"
|
||||
generated: "2023-02-17T14:19:45.64503712Z"
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+8
-14
@@ -1,16 +1,6 @@
|
||||
ingress:
|
||||
host: chart-example.local
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
ingresses:
|
||||
- host: chart-example.local
|
||||
tlsEnabled: true
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
- host: another.local
|
||||
tlsEnabled: true
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
ingressClassName: nginx
|
||||
|
||||
gitRepository: github.com/laszlocph/demo-app
|
||||
gitSha: xyz
|
||||
@@ -19,6 +9,10 @@ vars:
|
||||
MY_VAR: "value"
|
||||
|
||||
volumes:
|
||||
- name: data
|
||||
path: /data
|
||||
existingClaim: myclaim
|
||||
- name: testing
|
||||
path: /deleteme
|
||||
hostPath:
|
||||
path: /deleteme
|
||||
- name: empty
|
||||
path: /deleteme2
|
||||
emptyDir: true
|
||||
@@ -1,5 +1,5 @@
|
||||
[[redirects]]
|
||||
from = "/*"
|
||||
to = "https://gimlet.io/onechart/getting-started"
|
||||
to = "https://gimlet.io/docs/onechart-reference"
|
||||
status = 301
|
||||
force = true
|
||||
|
||||
Reference in New Issue
Block a user