diff --git a/README.md b/README.md index 490826c5..4c590145 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,7 @@ The following options are supported. See [values.yaml](/charts/atlantis/values.y | `environmentRaw` | Array environment variables in plain Kubernetes yaml format. See `values.yaml` for example. | `[]` | | `environmentSecrets` | Array of Kubernetes secrets that can be used to set environment variables. See `values.yaml` for example. | `{}` | | `environment` | Map of environment variables for the container. | `{}` | +| `extraAnnotations` | These annotations will be added to all the resources | `{}` | | `extraArgs` | Add additional arguments to the atlantis server | `[]` | | `extraContainers` | Additional containers to use and depends of use cases. | `[]` | | `extraManifests` | Add additional manifests to deploy | `[]` | diff --git a/charts/atlantis/Chart.yaml b/charts/atlantis/Chart.yaml index 6cfb97f6..fe6aed43 100644 --- a/charts/atlantis/Chart.yaml +++ b/charts/atlantis/Chart.yaml @@ -3,7 +3,7 @@ apiVersion: v1 appVersion: v0.27.0 description: A Helm chart for Atlantis https://www.runatlantis.io name: atlantis -version: 4.22.0 +version: 4.23.0 keywords: - terraform home: https://www.runatlantis.io diff --git a/charts/atlantis/templates/configmap-config.yaml b/charts/atlantis/templates/configmap-config.yaml index dd9e8d80..4873ffa7 100644 --- a/charts/atlantis/templates/configmap-config.yaml +++ b/charts/atlantis/templates/configmap-config.yaml @@ -1,11 +1,15 @@ -{{- if .Values.config -}} +{{- if .Values.config }} apiVersion: v1 kind: ConfigMap metadata: name: {{ template "atlantis.fullname" . }} labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: atlantis.yaml: | -{{ .Values.config | indent 4 }} -{{- end -}} + {{- .Values.config | nindent 4 }} +{{- end }} diff --git a/charts/atlantis/templates/configmap-init-config.yaml b/charts/atlantis/templates/configmap-init-config.yaml index 6db15a0c..93c8d64e 100644 --- a/charts/atlantis/templates/configmap-init-config.yaml +++ b/charts/atlantis/templates/configmap-init-config.yaml @@ -4,8 +4,12 @@ kind: ConfigMap metadata: name: {{ template "atlantis.fullname" . }}-init-config labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: init-config.sh: | {{- .Values.initConfig.script | nindent 4 }} -{{- end -}} +{{- end }} diff --git a/charts/atlantis/templates/configmap-repo-config.yaml b/charts/atlantis/templates/configmap-repo-config.yaml index 39e9fb4d..d8b1a73b 100644 --- a/charts/atlantis/templates/configmap-repo-config.yaml +++ b/charts/atlantis/templates/configmap-repo-config.yaml @@ -1,11 +1,15 @@ -{{- if .Values.repoConfig -}} +{{- if .Values.repoConfig }} apiVersion: v1 kind: ConfigMap metadata: name: {{ template "atlantis.fullname" . }}-repo-config labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: repos.yaml: | -{{ .Values.repoConfig | indent 4 }} -{{- end -}} + {{- .Values.repoConfig | indent 4 }} +{{- end }} diff --git a/charts/atlantis/templates/ingress.yaml b/charts/atlantis/templates/ingress.yaml index 9c413df6..d9eee3cc 100644 --- a/charts/atlantis/templates/ingress.yaml +++ b/charts/atlantis/templates/ingress.yaml @@ -1,4 +1,4 @@ -{{- if .Values.ingress.enabled -}} +{{- if .Values.ingress.enabled }} {{- $apiVersion := .Values.ingress.apiVersion }} {{- if and $apiVersion (or (eq $apiVersion "networking.k8s.io/v1") (eq $apiVersion "networking.k8s.io/v1beta1") (eq $apiVersion "extensions/v1beta1")) -}} {{- else -}} @@ -19,22 +19,27 @@ kind: Ingress metadata: name: {{ $fullName }} labels: -{{- include "atlantis.labels" . | nindent 4 }} -{{- if .Values.ingress.labels }} -{{ toYaml .Values.ingress.labels | indent 4 }} -{{- end }} -{{- with .Values.ingress.annotations }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- if .Values.ingress.labels }} + {{- toYaml .Values.ingress.labels | nindent 4 }} + {{- end }} + {{- if or .Values.ingress.annotations .Values.extraAnnotations }} annotations: -{{ toYaml . | indent 4 }} -{{- end }} + {{- with .Values.ingress.annotations }} + {{- toYaml . | indent 4 }} + {{- end }} + {{- with .Values.extraAnnotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- end }} spec: -{{- if .Values.ingress.ingressClassName }} + {{- if .Values.ingress.ingressClassName }} ingressClassName: {{ .Values.ingress.ingressClassName }} -{{- end }} -{{- if .Values.ingress.tls }} + {{- end }} + {{- if .Values.ingress.tls }} tls: -{{ toYaml .Values.ingress.tls | indent 4 }} -{{- end }} + {{- toYaml .Values.ingress.tls | nindent 4 }} + {{- end }} rules: {{- if not .Values.ingress.hosts }} - diff --git a/charts/atlantis/templates/podmonitor.yaml b/charts/atlantis/templates/podmonitor.yaml index 8eab4063..d63e0091 100644 --- a/charts/atlantis/templates/podmonitor.yaml +++ b/charts/atlantis/templates/podmonitor.yaml @@ -4,20 +4,25 @@ kind: PodMonitoring metadata: name: {{ template "atlantis.fullname" . }} labels: -{{- include "atlantis.labels" . | nindent 4 }} - {{- with .Values.service.annotations }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- if or .Values.service.annotations .Values.extraAnnotations }} annotations: -{{ toYaml . | indent 4 }} - {{- end }} + {{- with .Values.service.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.extraAnnotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- end }} spec: selector: matchLabels: app: {{ template "atlantis.name" . }} release: {{ .Release.Name }} -{{- if .Values.podTemplate.labels }} -{{ toYaml .Values.podTemplate.labels | indent 6 }} -{{- end }} + {{- if .Values.podTemplate.labels }} + {{- toYaml .Values.podTemplate.labels | nindent 6 }} + {{- end }} endpoints: - port: atlantis interval: {{ .Values.podMonitor.interval }} -{{- end -}} +{{- end }} diff --git a/charts/atlantis/templates/pvc.yaml b/charts/atlantis/templates/pvc.yaml index e6f90219..42fd9209 100644 --- a/charts/atlantis/templates/pvc.yaml +++ b/charts/atlantis/templates/pvc.yaml @@ -3,8 +3,12 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: {{ template "atlantis.fullname" . }}-data -labels: - {{- include "atlantis.labels" . | nindent 2 }} + labels: + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} spec: accessModes: {{ .Values.volumeClaim.accessModes| toYaml | nindent 2 }} resources: @@ -13,6 +17,6 @@ spec: # It deletes the repo after the pull request is merged. storage: {{ .Values.volumeClaim.dataStorage }} {{- if .Values.volumeClaim.storageClassName }} - storageClassName: {{ .Values.volumeClaim.storageClassName }} + storageClassName: {{ .Values.volumeClaim.storageClassName }} {{- end }} {{- end }} diff --git a/charts/atlantis/templates/role.yaml b/charts/atlantis/templates/role.yaml index 4493347e..ec735f7e 100644 --- a/charts/atlantis/templates/role.yaml +++ b/charts/atlantis/templates/role.yaml @@ -1,10 +1,14 @@ -{{- if .Values.enableKubernetesBackend -}} +{{- if .Values.enableKubernetesBackend }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: {{ template "atlantis.fullname" . }} labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} rules: - apiGroups: - coordination.k8s.io @@ -20,4 +24,4 @@ rules: resources: - secrets verbs: ['*'] -{{- end -}} +{{- end }} diff --git a/charts/atlantis/templates/rolebinding.yaml b/charts/atlantis/templates/rolebinding.yaml index 4e77a7a8..add6277b 100644 --- a/charts/atlantis/templates/rolebinding.yaml +++ b/charts/atlantis/templates/rolebinding.yaml @@ -1,10 +1,14 @@ -{{- if .Values.enableKubernetesBackend -}} +{{- if .Values.enableKubernetesBackend }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: {{ template "atlantis.fullname" . }} labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} subjects: - kind: ServiceAccount name: {{ template "atlantis.serviceAccountName" . }} @@ -13,4 +17,4 @@ roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: {{ template "atlantis.fullname" . }} -{{- end -}} +{{- end }} diff --git a/charts/atlantis/templates/secret-api.yaml b/charts/atlantis/templates/secret-api.yaml index 4a85a5ca..c3cfb50a 100644 --- a/charts/atlantis/templates/secret-api.yaml +++ b/charts/atlantis/templates/secret-api.yaml @@ -4,7 +4,11 @@ kind: Secret metadata: name: {{ template "atlantis.apiSecretName" . }} labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: apisecret: {{ .Values.api.secret | b64enc }} {{- end }} diff --git a/charts/atlantis/templates/secret-aws.yaml b/charts/atlantis/templates/secret-aws.yaml index f26fa0e3..afe7b835 100644 --- a/charts/atlantis/templates/secret-aws.yaml +++ b/charts/atlantis/templates/secret-aws.yaml @@ -4,12 +4,16 @@ kind: Secret metadata: name: {{ template "atlantis.fullname" . }}-aws labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: -{{- if .Values.aws.credentials }} + {{- if .Values.aws.credentials }} credentials: {{ .Values.aws.credentials | b64enc }} -{{- end }} -{{- if .Values.aws.config }} + {{- end }} + {{- if .Values.aws.config }} config: {{ .Values.aws.config | b64enc }} -{{- end }} + {{- end }} {{- end }} diff --git a/charts/atlantis/templates/secret-basic-auth.yaml b/charts/atlantis/templates/secret-basic-auth.yaml index 29660b52..b1407e9b 100644 --- a/charts/atlantis/templates/secret-basic-auth.yaml +++ b/charts/atlantis/templates/secret-basic-auth.yaml @@ -4,7 +4,11 @@ kind: Secret metadata: name: {{ template "atlantis.fullname" . }}-basic-auth labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: username: {{ .Values.basicAuth.username | b64enc }} password: {{ .Values.basicAuth.password | b64enc }} diff --git a/charts/atlantis/templates/secret-gitconfig.yaml b/charts/atlantis/templates/secret-gitconfig.yaml index 98faef63..28b04275 100644 --- a/charts/atlantis/templates/secret-gitconfig.yaml +++ b/charts/atlantis/templates/secret-gitconfig.yaml @@ -1,10 +1,14 @@ -{{- if .Values.gitconfig}} +{{- if .Values.gitconfig }} apiVersion: v1 kind: Secret metadata: name: {{ template "atlantis.fullname" . }}-gitconfig labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: gitconfig: {{ .Values.gitconfig | b64enc }} {{- end }} diff --git a/charts/atlantis/templates/secret-netrc.yaml b/charts/atlantis/templates/secret-netrc.yaml index 187fd0fb..ddb95e0c 100644 --- a/charts/atlantis/templates/secret-netrc.yaml +++ b/charts/atlantis/templates/secret-netrc.yaml @@ -1,10 +1,14 @@ -{{- if .Values.netrc}} +{{- if .Values.netrc }} apiVersion: v1 kind: Secret metadata: name: {{ template "atlantis.fullname" . }}-netrc labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: netrc: {{ .Values.netrc | b64enc }} {{- end }} diff --git a/charts/atlantis/templates/secret-redis.yaml b/charts/atlantis/templates/secret-redis.yaml index 26c9674c..88641d3d 100644 --- a/charts/atlantis/templates/secret-redis.yaml +++ b/charts/atlantis/templates/secret-redis.yaml @@ -4,7 +4,11 @@ kind: Secret metadata: name: {{ template "atlantis.fullname" . }}-redis labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: password: {{ .Values.redis.password | b64enc }} {{- end }} diff --git a/charts/atlantis/templates/secret-service-account.yaml b/charts/atlantis/templates/secret-service-account.yaml index a6b8da5f..a31f85f8 100644 --- a/charts/atlantis/templates/secret-service-account.yaml +++ b/charts/atlantis/templates/secret-service-account.yaml @@ -1,13 +1,16 @@ -{{- $all := . -}} -{{ range $name, $secret := .Values.serviceAccountSecrets }} +{{- range $name, $secret := .Values.serviceAccountSecrets }} +--- apiVersion: v1 kind: Secret metadata: name: {{ $name }} labels: component: service-account-secret -{{- include "atlantis.labels" $all | nindent 4 }} + {{- include "atlantis.labels" $ | nindent 4 }} + {{- with $.Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: service-account.json: {{ $secret }} ---- -{{ end }} +{{- end }} diff --git a/charts/atlantis/templates/secret-webhook.yaml b/charts/atlantis/templates/secret-webhook.yaml index 6d4782c4..68dfab97 100644 --- a/charts/atlantis/templates/secret-webhook.yaml +++ b/charts/atlantis/templates/secret-webhook.yaml @@ -4,28 +4,32 @@ kind: Secret metadata: name: {{ template "atlantis.fullname" . }}-webhook labels: -{{- include "atlantis.labels" . | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.extraAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} data: {{- if .Values.githubApp }} key.pem: {{ required "githubApp.key is required if githubApp configuration is specified." .Values.githubApp.key | b64enc }} github_secret: {{ required "githubApp.secret is required if githubApp configuration is specified." .Values.githubApp.secret | b64enc }} - {{- end}} + {{- end }} {{- if .Values.github.user }} github_token: {{ required "github.token is required if github configuration is specified." .Values.github.token | b64enc }} github_secret: {{ required "github.secret is required if github configuration is specified." .Values.github.secret | b64enc }} - {{- end}} + {{- end }} {{- if .Values.gitlab }} gitlab_token: {{ required "gitlab.token is required if gitlab configuration is specified." .Values.gitlab.token | b64enc }} gitlab_secret: {{ required "gitlab.secret is required if gitlab configuration is specified." .Values.gitlab.secret | b64enc }} - {{- end}} + {{- end }} {{- if .Values.bitbucket }} bitbucket_token: {{ required "bitbucket.token is required if bitbucket configuration is specified." .Values.bitbucket.token | b64enc }} {{- if .Values.bitbucket.baseURL }} bitbucket_secret: {{ required "bitbucket.secret is required if bitbucket.baseURL is specified." .Values.bitbucket.secret | b64enc }} - {{- end}} + {{- end }} {{- end }} {{- if .Values.azuredevops }} azuredevops_token: {{ required "azuredevops.token is required if azuredevops configuration is specified." .Values.azuredevops.token | b64enc }} azuredevops_webhook_password: {{ required "azuredevops.webhookPassword is required if azuredevops configuration is specified." .Values.azuredevops.webhookPassword | b64enc }} - {{- end}} + {{- end }} {{- end }} diff --git a/charts/atlantis/templates/service.yaml b/charts/atlantis/templates/service.yaml index c3e39c86..152c2225 100644 --- a/charts/atlantis/templates/service.yaml +++ b/charts/atlantis/templates/service.yaml @@ -3,19 +3,24 @@ kind: Service metadata: name: {{ template "atlantis.fullname" . }} labels: -{{- include "atlantis.labels" . | nindent 4 }} - {{- with .Values.service.annotations }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- if or .Values.service.annotations .Values.extraAnnotations }} annotations: -{{ toYaml . | indent 4 }} + {{- with .Values.service.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.extraAnnotations }} + {{- toYaml . | nindent 4 }} + {{- end }} {{- end }} spec: -{{- if .Values.service.loadBalancerSourceRanges }} + {{- if .Values.service.loadBalancerSourceRanges }} loadBalancerSourceRanges: -{{ toYaml .Values.service.loadBalancerSourceRanges | indent 4 }} -{{- end }} -{{- if .Values.service.loadBalancerIP }} + {{- toYaml .Values.service.loadBalancerSourceRanges | nindent 4 }} + {{- end }} + {{- if .Values.service.loadBalancerIP }} loadBalancerIP: {{ .Values.service.loadBalancerIP }} -{{- end }} + {{- end }} type: {{ .Values.service.type }} ports: - port: {{ .Values.service.port }} diff --git a/charts/atlantis/templates/serviceaccount.yaml b/charts/atlantis/templates/serviceaccount.yaml index 786eecdf..c8941035 100644 --- a/charts/atlantis/templates/serviceaccount.yaml +++ b/charts/atlantis/templates/serviceaccount.yaml @@ -1,11 +1,17 @@ -{{- if .Values.serviceAccount.create -}} +{{- if .Values.serviceAccount.create }} apiVersion: v1 kind: ServiceAccount metadata: name: {{ template "atlantis.serviceAccountName" . }} labels: -{{- include "atlantis.labels" . | nindent 4 }} -{{- if .Values.serviceAccount.annotations }} - annotations: {{ toYaml .Values.serviceAccount.annotations | nindent 4 }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- if or .Values.serviceAccount.annotations .Values.extraAnnotations }} + annotations: + {{- with .Values.serviceAccount.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.extraAnnotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- end }} {{- end }} -{{- end -}} diff --git a/charts/atlantis/templates/servicemonitor.yaml b/charts/atlantis/templates/servicemonitor.yaml index e80eacf4..660f19d6 100644 --- a/charts/atlantis/templates/servicemonitor.yaml +++ b/charts/atlantis/templates/servicemonitor.yaml @@ -8,22 +8,27 @@ metadata: {{- with .Values.servicemonitor.additionalLabels }} {{- toYaml . | nindent 4 }} {{- end }} - {{- with .Values.service.annotations }} + {{- if or .Values.service.annotations .Values.extraAnnotations }} annotations: -{{ toYaml . | indent 4 }} + {{- with .Values.service.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.extraAnnotations }} + {{- toYaml . | nindent 4 }} + {{- end }} {{- end }} spec: selector: matchLabels: -{{- include "atlantis.labels" . | nindent 6 }} + {{- include "atlantis.labels" . | nindent 6 }} namespaceSelector: matchNames: - - {{ .Release.Namespace }} + - {{ .Release.Namespace }} endpoints: - port: atlantis interval: {{ .Values.servicemonitor.interval }} path: {{ .Values.servicemonitor.path }} -{{- if .Values.servicemonitor.auth.basicAuth.enabled }} + {{- if .Values.servicemonitor.auth.basicAuth.enabled }} basicAuth: username: key: username @@ -31,7 +36,7 @@ spec: password: key: password name: {{ template "atlantis.fullname" . }}-basic-auth -{{- else if .Values.servicemonitor.auth.externalSecret.enabled }} + {{- else if .Values.servicemonitor.auth.externalSecret.enabled }} basicAuth: username: key: {{ .Values.servicemonitor.auth.externalSecret.keys.username }} @@ -39,5 +44,5 @@ spec: password: key: {{ .Values.servicemonitor.auth.externalSecret.keys.password }} name: {{ .Values.servicemonitor.auth.externalSecret.name }} + {{- end }} {{- end }} -{{- end -}} diff --git a/charts/atlantis/templates/statefulset.yaml b/charts/atlantis/templates/statefulset.yaml index d8daa154..2a8ee493 100644 --- a/charts/atlantis/templates/statefulset.yaml +++ b/charts/atlantis/templates/statefulset.yaml @@ -3,13 +3,18 @@ kind: StatefulSet metadata: name: {{ template "atlantis.fullname" . }} labels: -{{- include "atlantis.labels" . | nindent 4 }} -{{- if .Values.statefulSet.labels }} -{{ toYaml .Values.statefulSet.labels | indent 4 }} -{{- end }} - {{- with .Values.statefulSet.annotations }} + {{- include "atlantis.labels" . | nindent 4 }} + {{ with .Values.statefulSet.labels }} + {{- toYaml .Values.statefulSet.labels | nindent 4 }} + {{- end }} + {{- if or .Values.statefulSet.annotations .Values.extraAnnotations }} annotations: -{{ toYaml . | indent 4 }} + {{- with .Values.statefulSet.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.extraAnnotations }} + {{- toYaml . | nindent 4 }} + {{- end }} {{- end }} spec: serviceName: {{ template "atlantis.fullname" . }} @@ -23,9 +28,9 @@ spec: labels: app: {{ template "atlantis.name" . }} release: {{ .Release.Name }} -{{- if .Values.podTemplate.labels }} -{{ toYaml .Values.podTemplate.labels | indent 8 }} -{{- end }} + {{- if .Values.podTemplate.labels }} + {{- toYaml .Values.podTemplate.labels | nindent 8 }} + {{- end }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmap-config.yaml") . | sha256sum }} checksum/repo-config: {{ include (print $.Template.BasePath "/configmap-repo-config.yaml") . | sha256sum }} @@ -38,11 +43,13 @@ spec: spec: {{- if .Values.hostAliases }} hostAliases: - {{- range .Values.hostAliases }} - - hostnames: {{- range .hostnames }} - - {{ . }}{{- end }} + {{- range .Values.hostAliases }} + - hostnames: + {{- range .hostnames }} + - {{ . }} + {{- end }} ip: {{ .ip }} - {{- end }} + {{- end }} {{- end }} hostNetwork: {{ .Values.hostNetwork }} serviceAccountName: {{ template "atlantis.serviceAccountName" . }} diff --git a/charts/atlantis/templates/webhook-ingress.yaml b/charts/atlantis/templates/webhook-ingress.yaml index b0827a71..d051fb05 100644 --- a/charts/atlantis/templates/webhook-ingress.yaml +++ b/charts/atlantis/templates/webhook-ingress.yaml @@ -1,4 +1,4 @@ -{{- if .Values.webhook_ingress.enabled -}} +{{- if .Values.webhook_ingress.enabled }} {{- $apiVersion := .Values.webhook_ingress.apiVersion }} {{- if and $apiVersion (or (eq $apiVersion "networking.k8s.io/v1") (eq $apiVersion "networking.k8s.io/v1beta1") (eq $apiVersion "extensions/v1beta1")) -}} {{- else -}} @@ -19,22 +19,27 @@ kind: Ingress metadata: name: {{ $fullName }}-secondary labels: -{{- include "atlantis.labels" . | nindent 4 }} -{{- if .Values.webhook_ingress.labels }} -{{ toYaml .Values.webhook_ingress.labels | indent 4 }} -{{- end }} -{{- with .Values.webhook_ingress.annotations }} + {{- include "atlantis.labels" . | nindent 4 }} + {{- with .Values.webhook_ingress.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if or .Values.webhook_ingress.annotations .Values.extraAnnotations }} annotations: -{{ toYaml . | indent 4 }} -{{- end }} + {{- with .Values.webhook_ingress.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.extraAnnotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- end }} spec: -{{- if .Values.webhook_ingress.ingressClassName }} + {{- if .Values.webhook_ingress.ingressClassName }} ingressClassName: {{ .Values.webhook_ingress.ingressClassName }} -{{- end }} -{{- if .Values.webhook_ingress.tls }} + {{- end }} + {{- if .Values.webhook_ingress.tls }} tls: -{{ toYaml .Values.webhook_ingress.tls | indent 4 }} -{{- end }} + {{- toYaml .Values.webhook_ingress.tls | nindent 4 }} + {{- end }} rules: {{- if not .Values.webhook_ingress.hosts }} - diff --git a/charts/atlantis/tests/statefulset_test.yaml b/charts/atlantis/tests/statefulset_test.yaml index edcb1628..552bbf1c 100644 --- a/charts/atlantis/tests/statefulset_test.yaml +++ b/charts/atlantis/tests/statefulset_test.yaml @@ -54,8 +54,8 @@ tests: - equal: path: spec.template.metadata.annotations value: - checksum/config: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - checksum/repo-config: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + checksum/config: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b + checksum/repo-config: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b - notExists: path: spec.template.spec.hostAliases - equal: diff --git a/charts/atlantis/values.schema.json b/charts/atlantis/values.schema.json index ef008357..ec1b3a81 100644 --- a/charts/atlantis/values.schema.json +++ b/charts/atlantis/values.schema.json @@ -1,9 +1,9 @@ { - "$schema":"https://json-schema.org/draft/2019-09/schema", - "description":"Default values for atlantis. Declare variables to be passed into your templates.", - "type":"object", - "additionalProperties":false, - "properties":{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "description": "Default values for atlantis. Declare variables to be passed into your templates.", + "type": "object", + "additionalProperties": false, + "properties": { "global": { "description": "Global values applied to all charts", "type": "object", @@ -19,688 +19,686 @@ "type": "string", "default": "" }, - "atlantisUrl":{ - "description":"The URL at which Atlantis will be available. This is used to set the webhook URL in GitHub.", - "type":"string", - "default":"", - "examples":[ + "atlantisUrl": { + "description": "The URL at which Atlantis will be available. This is used to set the webhook URL in GitHub.", + "type": "string", + "default": "", + "examples": [ "https://atlantis.example.com" ] }, - "orgAllowlist":{ - "type":"string", - "default":"", - "description":"Allowlist of repositories from which Atlantis will accept webhooks", - "examples":[ + "orgAllowlist": { + "type": "string", + "default": "", + "description": "Allowlist of repositories from which Atlantis will accept webhooks", + "examples": [ "github.com/myorg/*" ] }, - "logLevel":{ - "type":"string", - "description":"Level to use for logging. Either debug, info, warn, or error.", - "enum":[ + "logLevel": { + "type": "string", + "description": "Level to use for logging. Either debug, info, warn, or error.", + "enum": [ "debug", "info", "warn", "error" ], - "examples":[ + "examples": [ "debug" ] }, - "github":{ - "type":"object", - "description":"GitHub settings", - "properties":{ - "user":{ - "type":"string", - "description":"Name of the Atlantis GitHub user." + "github": { + "type": "object", + "description": "GitHub settings", + "properties": { + "user": { + "type": "string", + "description": "Name of the Atlantis GitHub user." }, - "token":{ - "type":"string", - "description":"Name of the Atlantis GitHub user." + "token": { + "type": "string", + "description": "Name of the Atlantis GitHub user." }, - "secret":{ - "type":"string", - "description":"Repository or organization-wide webhook secret for the Atlantis GitHub integration. All repositories in GitHub that are to be integrated with Atlantis must share the same value." + "secret": { + "type": "string", + "description": "Repository or organization-wide webhook secret for the Atlantis GitHub integration. All repositories in GitHub that are to be integrated with Atlantis must share the same value." }, - "hostname":{ - "type":"string", - "description":"Hostname of your GitHub Enterprise installation." + "hostname": { + "type": "string", + "description": "Hostname of your GitHub Enterprise installation." } }, - "additionalProperties":false - }, - "githubApp":{ - "type":"object", - "description":"GitHub App settings", - "properties":{ - "id":{ - "type":[ + "additionalProperties": false + }, + "githubApp": { + "type": "object", + "description": "GitHub App settings", + "properties": { + "id": { + "type": [ "integer", "string" ], - "description":"GitHub app ID. If set, GitHub authentication will be performed as an [installation](https://developer.github.com/v3/apps/installations/)." + "description": "GitHub app ID. If set, GitHub authentication will be performed as an [installation](https://developer.github.com/v3/apps/installations/)." }, - "slug":{ - "type":"string", - "description":"A slugged version of GitHub app name shown in pull requests comments, etc (not Atlantis App but something like atlantis-app). Atlantis uses the value of this parameter to identify the comments it has left on GitHub pull requests. This is used for functions such as `hidePrevPlanComments`." + "slug": { + "type": "string", + "description": "A slugged version of GitHub app name shown in pull requests comments, etc (not Atlantis App but something like atlantis-app). Atlantis uses the value of this parameter to identify the comments it has left on GitHub pull requests. This is used for functions such as `hidePrevPlanComments`." }, - "key":{ - "type":"string", - "description":"A GitHub App PEM encoded private key file. If set, GitHub authentication will be performed as an [installation]((https://developer.github.com/v3/apps/installations/))." + "key": { + "type": "string", + "description": "A GitHub App PEM encoded private key file. If set, GitHub authentication will be performed as an [installation]((https://developer.github.com/v3/apps/installations/))." }, - "secret":{ - "type":"string", - "description":"Secret used to validate GitHub webhooks (see [Securing your webhooks](https://developer.github.com/webhooks/securing/))." + "secret": { + "type": "string", + "description": "Secret used to validate GitHub webhooks (see [Securing your webhooks](https://developer.github.com/webhooks/securing/))." } }, - "additionalProperties":false + "additionalProperties": false }, - "gitlab":{ - "type":"object", - "description":"GitLab settings", - "properties":{ - "user":{ - "type":"string", - "description":"Name of the Atlantis GitLab user." + "gitlab": { + "type": "object", + "description": "GitLab settings", + "properties": { + "user": { + "type": "string", + "description": "Name of the Atlantis GitLab user." }, - "token":{ - "type":"string", - "description":"Personal access token for the Atlantis GitLab user." + "token": { + "type": "string", + "description": "Personal access token for the Atlantis GitLab user." }, - "secret":{ - "type":"string", - "description":"Webhook secret for the Atlantis GitLab integration. All repositories in GitLab that are to be integrated with Atlantis must share the same value." + "secret": { + "type": "string", + "description": "Webhook secret for the Atlantis GitLab integration. All repositories in GitLab that are to be integrated with Atlantis must share the same value." }, - "hostname":{ - "type":"string", - "description":"Hostname of your GitLab Enterprise installation." + "hostname": { + "type": "string", + "description": "Hostname of your GitLab Enterprise installation." } }, - "additionalProperties":false + "additionalProperties": false }, - "bitbucket":{ - "type":"object", - "description":"Bitbucket settings", - "properties":{ - "user":{ - "type":"string", - "description":"Name of the Atlantis Bitbucket user." + "bitbucket": { + "type": "object", + "description": "Bitbucket settings", + "properties": { + "user": { + "type": "string", + "description": "Name of the Atlantis Bitbucket user." }, - "token":{ - "type":"string", - "description":"Personal access token for the Atlantis Bitbucket user." + "token": { + "type": "string", + "description": "Personal access token for the Atlantis Bitbucket user." }, - "secret":{ - "type":"string", - "description":"Webhook secret for Bitbucket repositories (Bitbucket Server only)." + "secret": { + "type": "string", + "description": "Webhook secret for Bitbucket repositories (Bitbucket Server only)." }, - "baseURL":{ - "type":"string", - "description":"Base URL of Bitbucket Server installation." + "baseURL": { + "type": "string", + "description": "Base URL of Bitbucket Server installation." } }, - "additionalProperties":false + "additionalProperties": false }, - "azuredevops":{ - "type":"object", - "description":"Azure DevOps settings", - "properties":{ - "user":{ - "type":"string", - "description":"Name of the Atlantis Azure DevOps user." + "azuredevops": { + "type": "object", + "description": "Azure DevOps settings", + "properties": { + "user": { + "type": "string", + "description": "Name of the Atlantis Azure DevOps user." }, - "token":{ - "type":"string", - "description":"Personal access token for the Atlantis Azure DevOps user." + "token": { + "type": "string", + "description": "Personal access token for the Atlantis Azure DevOps user." }, - "webhookUser":{ - "type":"string", - "description":"Webhook user for the Atlantis Azure DevOps integration." + "webhookUser": { + "type": "string", + "description": "Webhook user for the Atlantis Azure DevOps integration." }, - "webhookPassword":{ - "type":"string", - "description":"Webhook password for the Atlantis Azure DevOps integration. All repositories in Azure DevOps that are to be integrated with Atlantis must share the same value." + "webhookPassword": { + "type": "string", + "description": "Webhook password for the Atlantis Azure DevOps integration. All repositories in Azure DevOps that are to be integrated with Atlantis must share the same value." } }, - "additionalProperties":false + "additionalProperties": false }, - "vcsSecretName":{ - "type":"string", - "description":"Name of a pre-existing Kubernetes `Secret` containing `token` and `secret` keys set to your VCS provider's API token and webhook secret, respectively. Use this instead of `github.token`/`github.secret`, etc. (optional)" + "vcsSecretName": { + "type": "string", + "description": "Name of a pre-existing Kubernetes `Secret` containing `token` and `secret` keys set to your VCS provider's API token and webhook secret, respectively. Use this instead of `github.token`/`github.secret`, etc. (optional)" }, - "gitconfig":{ - "type":"string", - "description":"Contents of a file to be mounted to `~/.gitconfig`. Use to allow redirection for Terraform modules in private git repositories." + "gitconfig": { + "type": "string", + "description": "Contents of a file to be mounted to `~/.gitconfig`. Use to allow redirection for Terraform modules in private git repositories." }, - "gitconfigSecretName":{ - "type":"string", - "description":"Name of a pre-existing Kubernetes `Secret` containing a `gitconfig` key. Use this instead of `gitconfig` (optional)" + "gitconfigSecretName": { + "type": "string", + "description": "Name of a pre-existing Kubernetes `Secret` containing a `gitconfig` key. Use this instead of `gitconfig` (optional)" }, - "netrc":{ - "type":"string", - "description":"Contents of a file to be mounted to `~/.netrc`. Use to authenticate with private registries hosting terraform modules." + "netrc": { + "type": "string", + "description": "Contents of a file to be mounted to `~/.netrc`. Use to authenticate with private registries hosting terraform modules." }, - "netrcSecretName":{ - "type":"string", - "description":"Name of a pre-existing Kubernetes `Secret` containing a `netrc` key. Use this instead of `netrc` (optional)" + "netrcSecretName": { + "type": "string", + "description": "Name of a pre-existing Kubernetes `Secret` containing a `netrc` key. Use this instead of `netrc` (optional)" }, - "aws":{ - "type":"object", - "description":"AWS settings", - "properties":{ - "credentials":{ - "type":"string", - "description":"Contents of a file to be mounted to `~/.aws/credentials` `aws.directory/credentials`." + "aws": { + "type": "object", + "description": "AWS settings", + "properties": { + "credentials": { + "type": "string", + "description": "Contents of a file to be mounted to `~/.aws/credentials` `aws.directory/credentials`." }, - "config":{ - "type":"string", - "description":"Contents of a file to be mounted to `~/.aws/config` or `aws.directory/config`." + "config": { + "type": "string", + "description": "Contents of a file to be mounted to `~/.aws/config` or `aws.directory/config`." }, - "directory":{ - "type":"string", - "description":"If set, will mount AWS credentials to the specified path and set `AWS_SHARED_CREDENTIALS_FILE` and `AWS_CONFIG_FILE` variables. If not set, default path `/home/atlantis/.aws` will be used." + "directory": { + "type": "string", + "description": "If set, will mount AWS credentials to the specified path and set `AWS_SHARED_CREDENTIALS_FILE` and `AWS_CONFIG_FILE` variables. If not set, default path `/home/atlantis/.aws` will be used." } }, - "additionalProperties":false + "additionalProperties": false }, - "awsSecretName":{ - "type":"string", - "description":"Secret name containing AWS credentials - will override aws.credentials and aws.config. Will be used a volume mount on `$HOME/.aws` or `aws.directory`, so it needs a `credentials` key. The key `config` is optional. See the file `templates/secret-aws.yml` for more info on the Secret contents." + "awsSecretName": { + "type": "string", + "description": "Secret name containing AWS credentials - will override aws.credentials and aws.config. Will be used a volume mount on `$HOME/.aws` or `aws.directory`, so it needs a `credentials` key. The key `config` is optional. See the file `templates/secret-aws.yml` for more info on the Secret contents." }, - "serviceAccountSecrets":{ - "type":"object", - "description":"Deprecated (see googleServiceAccountSecrets). To be used for mounting credential files (when using google provider).", - "properties":{ - "credentials":{ - "type":"string", - "description":"Deprecated (see googleServiceAccountSecrets) JSON string representing secrets for a Google Cloud Platform production service account. Only applicable if hosting Atlantis on GKE." + "serviceAccountSecrets": { + "type": "object", + "description": "Deprecated (see googleServiceAccountSecrets). To be used for mounting credential files (when using google provider).", + "properties": { + "credentials": { + "type": "string", + "description": "Deprecated (see googleServiceAccountSecrets) JSON string representing secrets for a Google Cloud Platform production service account. Only applicable if hosting Atlantis on GKE." }, - "credentials-staging":{ - "type":"string", - "description":"Deprecated (see googleServiceAccountSecrets) JSON string representing secrets for a Google Cloud Platform staging service account. Only applicable if hosting Atlantis on GKE." + "credentials-staging": { + "type": "string", + "description": "Deprecated (see googleServiceAccountSecrets) JSON string representing secrets for a Google Cloud Platform staging service account. Only applicable if hosting Atlantis on GKE." } } }, - "image":{ - "type":"object", - "description":"Atlantis image configuration.", - "properties":{ - "repository":{ - "description":"image repository.", - "type":"string", - "default":"ghcr.io/runatlantis/atlantis" - }, - "tag":{ - "description":"image tag. if not set appVersion field from Chart.yaml is used", - "type":[ + "image": { + "type": "object", + "description": "Atlantis image configuration.", + "properties": { + "repository": { + "description": "image repository.", + "type": "string", + "default": "ghcr.io/runatlantis/atlantis" + }, + "tag": { + "description": "image tag. if not set appVersion field from Chart.yaml is used", + "type": [ "string", "null" ], - "default":"" + "default": "" }, - "pullPolicy":{ - "description":"image pull policy.", - "type":"string", - "enum":[ + "pullPolicy": { + "description": "image pull policy.", + "type": "string", + "enum": [ "Always", "Never", "IfNotPresent" ], - "default":"Always" + "default": "Always" } }, - "additionalProperties":false + "additionalProperties": false }, - "imagePullSecrets":{ - "type":"array", - "description":"List of secrets for pulling images from private registries.", - "items":{ - "type":"string" + "imagePullSecrets": { + "type": "array", + "description": "List of secrets for pulling images from private registries.", + "items": { + "type": "string" } }, - "config":{ - "type":"string", - "description":"Override atlantis main configuration by config map. It's allow some additional functionality like slack notifications." - }, - "repoConfig":{ - "type":"string", - "description":"[Server-side Repository Configuration](https://www.runatlantis.io/docs/server-side-repo-config.html) as a raw YAML string. Configuration is stored in ConfigMap." - }, - "allowForkPRs":{ - "type":"boolean", - "description":"Allow atlantis to run on fork Pull Requests", - "default":false - }, - "allowDraftPRs":{ - "type":"boolean", - "description":"Allow atlantis to run on draft Pull Requests", - "default":false - }, - "hidePrevPlanComments":{ - "type":"boolean", - "description":"Allow atlantis to hide previous plan comments", - "default":false - }, - "hideUnchangedPlanComments":{ - "type":"boolean", - "description":"Allow atlantis to hide no-changes plan comments", - "default":false - }, - "defaultTFVersion":{ - "type":"string", - "description":"Default Terraform version to be used by atlantis server" - }, - "disableApply":{ - "type":"boolean", - "description":"Disables running `atlantis apply` regardless of what options are specified", - "default":false - }, - "disableApplyAll":{ - "type":"boolean", - "description":"Disables running `atlantis apply` regardless of what options are specified", - "default":false - }, - "disableRepoLocking":{ - "type":"boolean", - "description":"Stops atlantis locking projects and or workspaces when running terraform", - "default":false - }, - "enableDiffMarkdownFormat":{ - "type":"boolean", - "description":"Enable Atlantis to format Terraform plan output into a markdown-diff friendly format for color-coding purposes.", - "default":false - }, - "basicAuth":{ - "type":"object", - "description":"Basic auth settings", - "properties":{ - "username":{ - "type":"string", - "description":"Username for basic authentication" - }, - "password":{ - "type":"string", - "description":"Password for basic authentication" + "config": { + "type": "string", + "description": "Override atlantis main configuration by config map. It's allow some additional functionality like slack notifications." + }, + "repoConfig": { + "type": "string", + "description": "[Server-side Repository Configuration](https://www.runatlantis.io/docs/server-side-repo-config.html) as a raw YAML string. Configuration is stored in ConfigMap." + }, + "allowForkPRs": { + "type": "boolean", + "description": "Allow atlantis to run on fork Pull Requests", + "default": false + }, + "allowDraftPRs": { + "type": "boolean", + "description": "Allow atlantis to run on draft Pull Requests", + "default": false + }, + "hidePrevPlanComments": { + "type": "boolean", + "description": "Allow atlantis to hide previous plan comments", + "default": false + }, + "hideUnchangedPlanComments": { + "type": "boolean", + "description": "Allow atlantis to hide no-changes plan comments", + "default": false + }, + "defaultTFVersion": { + "type": "string", + "description": "Default Terraform version to be used by atlantis server" + }, + "disableApply": { + "type": "boolean", + "description": "Disables running `atlantis apply` regardless of what options are specified", + "default": false + }, + "disableApplyAll": { + "type": "boolean", + "description": "Disables running `atlantis apply` regardless of what options are specified", + "default": false + }, + "disableRepoLocking": { + "type": "boolean", + "description": "Stops atlantis locking projects and or workspaces when running terraform", + "default": false + }, + "enableDiffMarkdownFormat": { + "type": "boolean", + "description": "Enable Atlantis to format Terraform plan output into a markdown-diff friendly format for color-coding purposes.", + "default": false + }, + "basicAuth": { + "type": "object", + "description": "Basic auth settings", + "properties": { + "username": { + "type": "string", + "description": "Username for basic authentication" + }, + "password": { + "type": "string", + "description": "Password for basic authentication" } }, - "required":[ + "required": [ "username", "password" ], - "additionalProperties":false + "additionalProperties": false }, - "api":{ - "type":"object", - "description":"API settings", - "properties":{ - "secret":{ - "type":"string", - "description":"API secret to enable API endpoints" + "api": { + "type": "object", + "description": "API settings", + "properties": { + "secret": { + "type": "string", + "description": "API secret to enable API endpoints" } }, - "additionalProperties":false - }, - "basicAuthSecretName":{ - "type":"string", - "description":"Name of a pre-existing Kubernetes `Secret` containing `username` and `password` keys for basic auth credentials. Use this instead of `basicAuth.username`/`basicAuth.password`" - }, - "apiSecretName":{ - "type":"string", - "description":"Name of a pre-existing Kubernetes `Secret` containing a `apisecret` key. Use this instead of `api.secret`" - }, - "command":{ - "type":"array", - "description":"Override the command field of the Atlantis container" - }, - "commonLabels":{ - "type":"object", - "description":"Add Common Labels to all resources", - "additionalProperties":true - }, - "livenessProbe":{ - "type":"object", - "description":"Liveness probe configuration for atlantis containers.", - "additionalProperties":false, - "properties":{ - "enabled":{ - "description":"Enable liveness probe.", - "type":"boolean", - "default":true - }, - "periodSeconds":{ - "description":"How often (in seconds) to perform the probe. Minimum value is 1.", - "type":"integer", - "default":60 - }, - "initialDelaySeconds":{ - "description":"Number of seconds after the container has started before liveness probes are initiated.", - "type":"integer", - "default":5 - }, - "timeoutSeconds":{ - "description":"Number of seconds after which the probe times out. Minimum value is 1 seconds.", - "type":"integer", - "default":5 - }, - "successThreshold":{ - "description":"Number of consecutive successful probe executions required for the container to be considered healthy again after having failed.", - "type":"integer", - "default":1 - }, - "failureThreshold":{ - "description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Minimum value is 1.", - "type":"integer", - "default":5 - }, - "scheme":{ - "description":"The URI scheme used for the request. The only supported schemes are http and https.", - "type":"string", - "default":"HTTP", - "enum":[ + "additionalProperties": false + }, + "basicAuthSecretName": { + "type": "string", + "description": "Name of a pre-existing Kubernetes `Secret` containing `username` and `password` keys for basic auth credentials. Use this instead of `basicAuth.username`/`basicAuth.password`" + }, + "apiSecretName": { + "type": "string", + "description": "Name of a pre-existing Kubernetes `Secret` containing a `apisecret` key. Use this instead of `api.secret`" + }, + "command": { + "type": "array", + "description": "Override the command field of the Atlantis container" + }, + "commonLabels": { + "type": "object", + "description": "Add Common Labels to all resources", + "additionalProperties": true + }, + "livenessProbe": { + "type": "object", + "description": "Liveness probe configuration for atlantis containers.", + "additionalProperties": false, + "properties": { + "enabled": { + "description": "Enable liveness probe.", + "type": "boolean", + "default": true + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe. Minimum value is 1.", + "type": "integer", + "default": 60 + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before liveness probes are initiated.", + "type": "integer", + "default": 5 + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out. Minimum value is 1 seconds.", + "type": "integer", + "default": 5 + }, + "successThreshold": { + "description": "Number of consecutive successful probe executions required for the container to be considered healthy again after having failed.", + "type": "integer", + "default": 1 + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Minimum value is 1.", + "type": "integer", + "default": 5 + }, + "scheme": { + "description": "The URI scheme used for the request. The only supported schemes are http and https.", + "type": "string", + "default": "HTTP", + "enum": [ "HTTP", "HTTPS" ] } } }, - "readinessProbe":{ - "type":"object", - "description":"Readiness probe configuration for atlantis containers.", - "additionalProperties":false, - "properties":{ - "enabled":{ - "description":"Enable readiness probe.", - "type":"boolean", - "default":true - }, - "periodSeconds":{ - "description":"How often (in seconds) to perform the probe. Minimum value is 1.", - "type":"integer", - "default":60 - }, - "initialDelaySeconds":{ - "description":"Number of seconds after the container has started before readiness probes are initiated.", - "type":"integer", - "default":5 - }, - "timeoutSeconds":{ - "description":"Number of seconds after which the probe times out. Minimum value is 1 seconds.", - "type":"integer", - "default":5 - }, - "successThreshold":{ - "description":"Number of consecutive successful probe executions required for the container to be considered healthy again after having failed.", - "type":"integer", - "default":1 - }, - "failureThreshold":{ - "description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Minimum value is 1.", - "type":"integer", - "default":5 - }, - "scheme":{ - "description":"The URI scheme used for the request. The only supported schemes are http and https.", - "type":"string", - "default":"HTTP", - "enum":[ + "readinessProbe": { + "type": "object", + "description": "Readiness probe configuration for atlantis containers.", + "additionalProperties": false, + "properties": { + "enabled": { + "description": "Enable readiness probe.", + "type": "boolean", + "default": true + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe. Minimum value is 1.", + "type": "integer", + "default": 60 + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "type": "integer", + "default": 5 + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out. Minimum value is 1 seconds.", + "type": "integer", + "default": 5 + }, + "successThreshold": { + "description": "Number of consecutive successful probe executions required for the container to be considered healthy again after having failed.", + "type": "integer", + "default": 1 + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Minimum value is 1.", + "type": "integer", + "default": 5 + }, + "scheme": { + "description": "The URI scheme used for the request. The only supported schemes are http and https.", + "type": "string", + "default": "HTTP", + "enum": [ "HTTP", "HTTPS" ] } } }, - "service":{ - "description":"Atlantis Service configuration.", - "type":"object", - "additionalProperties":false, - "properties":{ - "type":{ - "description":"Service type.", - "type":"string", - "default":"NodePort", - "enum":[ + "service": { + "description": "Atlantis Service configuration.", + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "description": "Service type.", + "type": "string", + "default": "NodePort", + "enum": [ "ClusterIP", "NodePort", "LoadBalancer" ] }, - "annotations":{ - "description":"Annotations to add to the service.", - "type":"object", - "additionalProperties":{ - "type":"string" + "annotations": { + "description": "Annotations to add to the service.", + "type": "object", + "additionalProperties": { + "type": "string" } }, - "port":{ - "description":"Port to expose on the service.", - "type":[ + "port": { + "description": "Port to expose on the service.", + "type": [ "string", "integer" ], - "default":80 + "default": 80 }, - "nodePort":{ - "description":"Port to expose on the node when the service type is NodePort.", - "type":[ + "nodePort": { + "description": "Port to expose on the node when the service type is NodePort.", + "type": [ "string", "integer", "null" ] }, - "targetPort":{ - "description":"Port on the container to direct traffic to.", - "type":[ + "targetPort": { + "description": "Port on the container to direct traffic to.", + "type": [ "string", "integer" ], - "default":4141 + "default": 4141 }, - "loadBalancerIP":{ - "description":"IP address to assign to load balancer (if supported).", - "type":[ + "loadBalancerIP": { + "description": "IP address to assign to load balancer (if supported).", + "type": [ "string", "null" ] }, - "loadBalancerSourceRanges":{ - "description":"If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.", - "type":[ + "loadBalancerSourceRanges": { + "description": "If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.", + "type": [ "array", "null" ] } } }, - "podTemplate":{ - "description":"Pod template configuration for pods.", - "type":"object", - "additionalProperties":false, - "properties":{ - "annotations":{ - "description":"Additional annotations to use for pods.", - "type":"object", - "additionalProperties":{ - "type":"string" + "podTemplate": { + "description": "Pod template configuration for pods.", + "type": "object", + "additionalProperties": false, + "properties": { + "annotations": { + "description": "Additional annotations to use for pods.", + "type": "object", + "additionalProperties": { + "type": "string" } }, - "labels":{ - "description":"Additional labels to use for pods.", - "type":"object", - "additionalProperties":{ - "type":"string" + "labels": { + "description": "Additional labels to use for pods.", + "type": "object", + "additionalProperties": { + "type": "string" } } } }, - "statefulSet":{ - "description":"StatefulSet configuration.", - "type":"object", - "additionalProperties":false, - "properties":{ - "annotations":{ - "description":"Additional annotations to use for StatefulSet.", - "type":"object", - "additionalProperties":{ - "type":"string" + "statefulSet": { + "description": "StatefulSet configuration.", + "type": "object", + "additionalProperties": false, + "properties": { + "annotations": { + "description": "Additional annotations to use for StatefulSet.", + "type": "object", + "additionalProperties": { + "type": "string" } }, - "labels":{ - "description":"Additional labels to use for StatefulSet.", - "type":"object", - "default":{ - - }, - "additionalProperties":{ - "type":"string" + "labels": { + "description": "Additional labels to use for StatefulSet.", + "type": "object", + "default": {}, + "additionalProperties": { + "type": "string" } }, - "securityContext":{ - "type":"object", - "description":"Allow customizing securityContext.", - "$ref":"#/definitions/io.k8s.api.core.v1.PodSecurityContext" + "securityContext": { + "type": "object", + "description": "Allow customizing securityContext.", + "$ref": "#/definitions/io.k8s.api.core.v1.PodSecurityContext" }, - "priorityClassName":{ - "description":"Leverage a PriorityClass to ensure your pods survive resource shortages.", + "priorityClassName": { + "description": "Leverage a PriorityClass to ensure your pods survive resource shortages.", "type": "string" }, - "updateStrategy":{ - "type":"object", - "description":"Configure [updateStrategy](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies) of the StatefulSet.", - "$ref":"#/definitions/io.k8s.api.apps.v1.StatefulSetUpdateStrategy" + "updateStrategy": { + "type": "object", + "description": "Configure [updateStrategy](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies) of the StatefulSet.", + "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetUpdateStrategy" }, - "shareProcessNamespace":{ - "type":"boolean", - "default":false, - "description":"Share the process namespace between all containers in a pod." + "shareProcessNamespace": { + "type": "boolean", + "default": false, + "description": "Share the process namespace between all containers in a pod." } } }, - "terminationGracePeriodSeconds":{ - "type":"integer", - "description":"Set terminationGracePeriodSeconds for the StatefulSet." - }, - "ingress":{ - "type":"object", - "description":"Ingress configuration.", - "properties":{ - "enabled":{ - "type":"boolean", - "description":"Whether to create a Kubernetes Ingress.", - "default":true - }, - "ingressClassName":{ - "type":[ + "terminationGracePeriodSeconds": { + "type": "integer", + "description": "Set terminationGracePeriodSeconds for the StatefulSet." + }, + "ingress": { + "type": "object", + "description": "Ingress configuration.", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether to create a Kubernetes Ingress.", + "default": true + }, + "ingressClassName": { + "type": [ "string", "null" ], - "default":null, - "description":"Name of the ingress class to use for the Ingress." - }, - "apiVersion":{ - "type":"string", - "description":"The Kubernetes API version used for configuring ingress. If not specified, Helm tries to automatically determine a compatible version based on the cluster's capabilities. The default value is \"\" and is only accepted if it is one of the supported versions: `networking.k8s.io/v1`, `networking.k8s.io/v1beta1`, or `extensions/v1beta1`. In cases where Helm can't determine the cluster's capabilities automatically, this value can be used to override the API version. Setting an unsupported value will result in an error during the Helm chart installation.", - "default":"" - }, - "annotations":{ - "type":"object", - "description":"Additional annotations to use for the Ingress.", - "additionalProperties":{ - "type":"string" + "default": null, + "description": "Name of the ingress class to use for the Ingress." + }, + "apiVersion": { + "type": "string", + "description": "The Kubernetes API version used for configuring ingress. If not specified, Helm tries to automatically determine a compatible version based on the cluster's capabilities. The default value is \"\" and is only accepted if it is one of the supported versions: `networking.k8s.io/v1`, `networking.k8s.io/v1beta1`, or `extensions/v1beta1`. In cases where Helm can't determine the cluster's capabilities automatically, this value can be used to override the API version. Setting an unsupported value will result in an error during the Helm chart installation.", + "default": "" + }, + "annotations": { + "type": "object", + "description": "Additional annotations to use for the Ingress.", + "additionalProperties": { + "type": "string" }, - "labels":{ - "type":"object", - "description":"Additional labels to use for the Ingress.", - "additionalProperties":{ - "type":"string" + "labels": { + "type": "object", + "description": "Additional labels to use for the Ingress.", + "additionalProperties": { + "type": "string" } }, - "path":{ - "type":"string", - "description":"Path to use in the `Ingress`. Should be set to `/*` if using gce-ingress in Google Cloud.", - "default":"/*" + "path": { + "type": "string", + "description": "Path to use in the `Ingress`. Should be set to `/*` if using gce-ingress in Google Cloud.", + "default": "/*" }, - "paths":{ - "type":"array", - "description":"collection of paths that map requests to backends.", - "items":{ - "type":"object", - "properties":{ - "path":{ - "type":"string", - "description":"path is matched against the path of an incoming request" + "paths": { + "type": "array", + "description": "collection of paths that map requests to backends.", + "items": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "path is matched against the path of an incoming request" }, - "service":{ - "type":"string", - "description":"service references a service as a backend." + "service": { + "type": "string", + "description": "service references a service as a backend." }, - "port":{ - "type":[ + "port": { + "type": [ "integer", "null" ], - "description":"backend defines the referenced service endpoint to which the traffic will be forwarded to" + "description": "backend defines the referenced service endpoint to which the traffic will be forwarded to" } } } }, - "pathType":{ - "type":"string", - "description":"pathType to use in the `Ingress`. specify how Ingress paths should be matched. See [Kubernetes docs](https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types) for details.", - "default":"ImplementationSpecific" + "pathType": { + "type": "string", + "description": "pathType to use in the `Ingress`. specify how Ingress paths should be matched. See [Kubernetes docs](https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types) for details.", + "default": "ImplementationSpecific" }, - "host":{ - "type":[ + "host": { + "type": [ "string", "null" ], - "description":"Domain name Kubernetes Ingress rule looks for. Set it to the domain Atlantis will be hosted on.", - "default":null + "description": "Domain name Kubernetes Ingress rule looks for. Set it to the domain Atlantis will be hosted on.", + "default": null }, - "hosts":{ - "type":[ + "hosts": { + "type": [ "array", "null" ], - "description":"An array of hosts to expose (optional)", - "items":{ - "type":"object", - "properties":{ - "host":{ - "type":"string", - "description":"List of domain names Kubernetes Ingress rule looks for. Set it to the domains in which Atlantis will be hosted on." + "description": "An array of hosts to expose (optional)", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "List of domain names Kubernetes Ingress rule looks for. Set it to the domains in which Atlantis will be hosted on." }, - "paths":{ - "type":"array", - "description":"List of paths to use in Kubernetes Ingress rules. Should be set to `/*` if using gce-ingress in Google", - "items":{ - "type":"string" + "paths": { + "type": "array", + "description": "List of paths to use in Kubernetes Ingress rules. Should be set to `/*` if using gce-ingress in Google", + "items": { + "type": "string" } }, - "service":{ - "type":"string", - "description":"service references a service as a backend." + "service": { + "type": "string", + "description": "service references a service as a backend." } } } }, - "tls":{ - "type":"array", - "description":"Kubernetes tls block. See [Kubernetes docs](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) for details.", - "items":{ - "type":"object", - "properties":{ - "secretName":{ - "type":"string", - "description":"The name of the secret containing the TLS certificate and key" + "tls": { + "type": "array", + "description": "Kubernetes tls block. See [Kubernetes docs](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) for details.", + "items": { + "type": "object", + "properties": { + "secretName": { + "type": "string", + "description": "The name of the secret containing the TLS certificate and key" }, - "hosts":{ - "type":"array", - "description":"An array of hosts to use TLS for", - "items":{ - "type":"string", - "description":"The host to use TLS for" + "hosts": { + "type": "array", + "description": "An array of hosts to use TLS for", + "items": { + "type": "string", + "description": "The host to use TLS for" } } } @@ -709,419 +707,423 @@ } } }, - "webhook_ingress":{ - "$ref":"#/properties/ingress" - }, - "customPem":{ - "type":"string", - "description":"SecretName of the custom `ca-certificates.cert` to override the `/etc/ssl/certs/ca-certificates.crt` with your custom one (self-signed certificates)
Secret has to be created manually and shall contain `ca-certificates.crt: PEM`" - }, - "resources":{ - "type":"object", - "description":"Resource configuration for atlantis containers.", - "$ref":"#/definitions/io.k8s.api.core.v1.ResourceRequirements" - }, - "atlantisDataDirectory":{ - "type":"string", - "description":"Directory to store atlantis data.", - "default":"/atlantis-data" - }, - "volumeClaim":{ - "type":"object", - "description":"VolumeClaim configuration for atlantis data.", - "properties":{ - "enabled":{ - "type":"boolean", - "description":"Activate embedded volume claim for Atlantis' data directory (mostly used to check out git repositories)." - }, - "dataStorage":{ - "type":"string", - "description":"Amount of storage available for embedded Atlantis' data directory" - }, - "accessModes":{ - "type":"array", - "description":"Array of requested access modes for the volume.", - "items":{ - "type":"string", - "description":"The access mode to be requested." + "webhook_ingress": { + "$ref": "#/properties/ingress" + }, + "customPem": { + "type": "string", + "description": "SecretName of the custom `ca-certificates.cert` to override the `/etc/ssl/certs/ca-certificates.crt` with your custom one (self-signed certificates)
Secret has to be created manually and shall contain `ca-certificates.crt: PEM`" + }, + "resources": { + "type": "object", + "description": "Resource configuration for atlantis containers.", + "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements" + }, + "atlantisDataDirectory": { + "type": "string", + "description": "Directory to store atlantis data.", + "default": "/atlantis-data" + }, + "volumeClaim": { + "type": "object", + "description": "VolumeClaim configuration for atlantis data.", + "properties": { + "enabled": { + "type": "boolean", + "description": "Activate embedded volume claim for Atlantis' data directory (mostly used to check out git repositories)." + }, + "dataStorage": { + "type": "string", + "description": "Amount of storage available for embedded Atlantis' data directory" + }, + "accessModes": { + "type": "array", + "description": "Array of requested access modes for the volume.", + "items": { + "type": "string", + "description": "The access mode to be requested." } }, - "storageClassName":{ - "type":"string", - "description":"Storage class of the embedded volume mounted for the Atlantis data directory." + "storageClassName": { + "type": "string", + "description": "Storage class of the embedded volume mounted for the Atlantis data directory." } } }, - "dataStorage":{ - "type":"string", - "description":"DEPRECATED - Amount of storage available for Atlantis' data directory (mostly used to check out git repositories)." - }, - "storageClassName":{ - "type":"string", - "description":"DEPRECATED - Storage class of the volume mounted for the Atlantis data directory." - }, - "replicaCount":{ - "type":"integer", - "description":"Number of replicas to run for the Atlantis server.", - "default":1 - }, - "test":{ - "type":"object", - "description":"Test configuration for atlantis containers.", - "properties":{ - "enabled":{ - "type":"boolean", - "description":"Whether to enable the test" - }, - "image":{ - "type":"string", - "description":"The image to use for testing" - }, - "imageTag":{ - "type":"string", - "description":"The tag of the image to use for testing" - }, - "annotations":{ - "type":"object", - "description":"Annotations to apply to the test pod (optional)", - "additionalProperties":{ - "type":"string" + "dataStorage": { + "type": "string", + "description": "DEPRECATED - Amount of storage available for Atlantis' data directory (mostly used to check out git repositories)." + }, + "storageClassName": { + "type": "string", + "description": "DEPRECATED - Storage class of the volume mounted for the Atlantis data directory." + }, + "replicaCount": { + "type": "integer", + "description": "Number of replicas to run for the Atlantis server.", + "default": 1 + }, + "test": { + "type": "object", + "description": "Test configuration for atlantis containers.", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether to enable the test" + }, + "image": { + "type": "string", + "description": "The image to use for testing" + }, + "imageTag": { + "type": "string", + "description": "The tag of the image to use for testing" + }, + "annotations": { + "type": "object", + "description": "Annotations to apply to the test pod (optional)", + "additionalProperties": { + "type": "string" } } }, - "additionalProperties":false + "additionalProperties": false }, - "nodeSelector":{ - "type":"object", - "description":"NodeSelector configuration for atlantis containers.", - "additionalProperties":{ - "type":"string" + "nodeSelector": { + "type": "object", + "description": "NodeSelector configuration for atlantis containers.", + "additionalProperties": { + "type": "string" } }, - "tolerations":{ - "description":"Specify Tolerations for all pods.", - "type":"array", - "default":[ - - ], - "items":{ - "type":"object", - "$ref":"#/definitions/io.k8s.api.core.v1.Toleration" + "tolerations": { + "description": "Specify Tolerations for all pods.", + "type": "array", + "default": [], + "items": { + "type": "object", + "$ref": "#/definitions/io.k8s.api.core.v1.Toleration" } }, - "affinity":{ - "description":"Specify Affinity for all pods.", - "type":"object", - "default":"{}", - "$ref":"#/definitions/io.k8s.api.core.v1.Affinity" - }, - "topologySpreadConstraints":{ - "description":"Specify topology spread constraints for all pods.", - "type":"array", - "default":[ - - ], - "items":{ - "type":"object", - "$ref":"#/definitions/io.k8s.api.core.v1.TopologySpreadConstraint" + "affinity": { + "description": "Specify Affinity for all pods.", + "type": "object", + "default": "{}", + "$ref": "#/definitions/io.k8s.api.core.v1.Affinity" + }, + "topologySpreadConstraints": { + "description": "Specify topology spread constraints for all pods.", + "type": "array", + "default": [], + "items": { + "type": "object", + "$ref": "#/definitions/io.k8s.api.core.v1.TopologySpreadConstraint" } }, - "serviceAccount":{ - "type":"object", - "description":"ServiceAccount configuration for atlantis containers.", - "properties":{ - "create":{ - "type":"boolean", - "description":"Whether to create a Kubernetes ServiceAccount if no account matching `serviceAccount.name` exists." - }, - "mount":{ - "type":"boolean", - "description":"Whether to mount the Kubernetes ServiceAccount into the pod" - }, - "name":{ - "type":[ + "serviceAccount": { + "type": "object", + "description": "ServiceAccount configuration for atlantis containers.", + "properties": { + "create": { + "type": "boolean", + "description": "Whether to create a Kubernetes ServiceAccount if no account matching `serviceAccount.name` exists." + }, + "mount": { + "type": "boolean", + "description": "Whether to mount the Kubernetes ServiceAccount into the pod" + }, + "name": { + "type": [ "string", "null" ], - "description":"Name of the Kubernetes ServiceAccount under which Atlantis should run. If no value is specified and `serviceAccount.create` is `true`, Atlantis will be run under a ServiceAccount whose name is the FullName of the Helm chart's instance, else Atlantis will be run under the `default` ServiceAccount." + "description": "Name of the Kubernetes ServiceAccount under which Atlantis should run. If no value is specified and `serviceAccount.create` is `true`, Atlantis will be run under a ServiceAccount whose name is the FullName of the Helm chart's instance, else Atlantis will be run under the `default` ServiceAccount." }, - "annotations":{ - "type":"object", - "description":"Additional Service Account annotations", - "additionalProperties":{ - "type":"string" + "annotations": { + "type": "object", + "description": "Additional Service Account annotations", + "additionalProperties": { + "type": "string" } } }, - "additionalProperties":false + "additionalProperties": false }, - "enableKubernetesBackend":{ - "type":"boolean", - "description":"Deploy rbac to allow for the serviceAccount to manage terraform state via a kubernetes backend", - "default":false + "enableKubernetesBackend": { + "type": "boolean", + "description": "Deploy rbac to allow for the serviceAccount to manage terraform state via a kubernetes backend", + "default": false }, "tlsSecretName": { - "type": "string", - "description": "Name of a Secret for Atlantis' HTTPS certificate containing the following data items `tls.crt` with the public certificate and `tls.key` with the private key." - }, - "environment":{ - "type":"object", - "description":"Map of environment variables for the container.", - "additionalProperties":{ - "type":[ + "type": "string", + "description": "Name of a Secret for Atlantis' HTTPS certificate containing the following data items `tls.crt` with the public certificate and `tls.key` with the private key." + }, + "environment": { + "type": "object", + "description": "Map of environment variables for the container.", + "additionalProperties": { + "type": [ "string", "integer", "boolean" - ] + ] } }, - "environmentSecrets":{ - "type":"array", - "description":"Array of Kubernetes secrets that can be used to set environment variables. See `values.yaml` for example.", - "items":{ - "type":"object", - "properties":{ - "name":{ - "type":"string", - "description":"The name of the environment variable." + "environmentSecrets": { + "type": "array", + "description": "Array of Kubernetes secrets that can be used to set environment variables. See `values.yaml` for example.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the environment variable." }, - "secretKeyRef":{ - "type":"object", - "properties":{ - "name":{ - "type":"string", - "description":"The name of the Kubernetes secret." + "secretKeyRef": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the Kubernetes secret." }, - "key":{ - "type":"string", - "description":"The key of the value in the Kubernetes secret that should be used to populate the environment variable." + "key": { + "type": "string", + "description": "The key of the value in the Kubernetes secret that should be used to populate the environment variable." } }, - "required":[ + "required": [ "name", "key" ] } }, - "required":[ + "required": [ "name", "secretKeyRef" ] } }, - "environmentRaw":{ - "type":"array", - "description":"Array environment variables in plain Kubernetes yaml format. See `values.yaml` for example.", - "items":{ - "type":"object" + "environmentRaw": { + "type": "array", + "description": "Array environment variables in plain Kubernetes yaml format. See `values.yaml` for example.", + "items": { + "type": "object" } }, - "loadEnvFromSecrets":{ - "type":"array", - "description":"Array of Kubernetes secrets to set all key-value pairs as environment variables. See `values.yaml` for example.", - "items":{ - "type":"string" + "loadEnvFromSecrets": { + "type": "array", + "description": "Array of Kubernetes secrets to set all key-value pairs as environment variables. See `values.yaml` for example.", + "items": { + "type": "string" } }, - "loadEnvFromConfigMaps":{ - "type":"array", - "description":"Array of Kubernetes `ConfigMap`s to set all key-value pairs as environment variables. See `values.yaml` for example.", - "items":{ - "type":"string" + "loadEnvFromConfigMaps": { + "type": "array", + "description": "Array of Kubernetes `ConfigMap`s to set all key-value pairs as environment variables. See `values.yaml` for example.", + "items": { + "type": "string" } }, - "googleServiceAccountSecrets":{ - "type":"array", - "description":"An array of Kubernetes secrets containing Google Service Account credentials. See `values.yaml` for examples and additional documentation.", - "items":{ - "type":"object", - "properties":{ - "name":{ - "type":"string", - "description":"The name of the volume that will mount the secret." + "googleServiceAccountSecrets": { + "type": "array", + "description": "An array of Kubernetes secrets containing Google Service Account credentials. See `values.yaml` for examples and additional documentation.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the volume that will mount the secret." }, - "secretName":{ - "type":"string", - "description":"The name of the Kubernetes secret containing the Google service account credentials." + "secretName": { + "type": "string", + "description": "The name of the Kubernetes secret containing the Google service account credentials." } }, - "additionalProperties":false, - "required":[ + "additionalProperties": false, + "required": [ "name", "secretName" ] } }, - "extraVolumes":{ - "description":"List of additional volumes available to the pod.", - "type":"array", - "default":[ - - ], - "items":{ - "type":"object" + "extraVolumes": { + "description": "List of additional volumes available to the pod.", + "type": "array", + "default": [], + "items": { + "type": "object" } }, - "extraVolumeMounts":{ - "description":"List of additional volumes mounted to the container.", - "type":"array", - "default":[ - - ], - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.VolumeMount" + "extraVolumeMounts": { + "description": "List of additional volumes mounted to the container.", + "type": "array", + "default": [], + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.VolumeMount" } }, - "extraManifests":{ - "type":"array", - "description":"Add additional manifests to deploy", - "items":{ - "type":"object" + "extraManifests": { + "type": "array", + "description": "Add additional manifests to deploy", + "items": { + "type": "object" } }, - "initContainers":{ - "description":"Containers used to initialize context for Atlantis pods", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Container" + "initContainers": { + "description": "Containers used to initialize context for Atlantis pods", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.Container" }, - "type":"array", - "default":[] + "type": "array", + "default": [] }, - "initConfig":{ - "type":"object", - "description":"Init container used to install plugins/providers shared with Atlantis pods", - "properties":{ - "enabled":{ - "type":"boolean", - "description":"Enable creation of init config" + "initConfig": { + "type": "object", + "description": "Init container used to install plugins/providers shared with Atlantis pods", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable creation of init config" }, - "image":{ - "type":"string", - "description":"Container image to use on init configs" + "image": { + "type": "string", + "description": "Container image to use on init configs" }, - "imagePullPolicy":{ - "type":"string", - "description":"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images" + "imagePullPolicy": { + "type": "string", + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images" }, - "sharedDir":{ - "type":"string", - "description":"sharedDir is set as env var INIT_SHARED_DIR" + "sharedDir": { + "type": "string", + "description": "sharedDir is set as env var INIT_SHARED_DIR" }, - "workDir":{ - "type":"string", - "description":"Starting directory for the script" + "workDir": { + "type": "string", + "description": "Starting directory for the script" }, - "sizeLimit":{ - "type":"string", - "description":"Size for the init-shared-path emptyDir volume" + "sizeLimit": { + "type": "string", + "description": "Size for the init-shared-path emptyDir volume" }, - "script":{ - "type":"string", - "description":"Script to install tools/providers required by the atlantis pod" + "script": { + "type": "string", + "description": "Script to install tools/providers required by the atlantis pod" } } }, - "hostAliases":{ - "description":"Specify HostAliases for Atlantis containers.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.HostAlias" + "hostAliases": { + "description": "Specify HostAliases for Atlantis containers.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.HostAlias" }, - "type":"array", - "default":[], - "examples":[ + "type": "array", + "default": [], + "examples": [ { - "ip":"127.0.0.2", - "hostnames":[ + "ip": "127.0.0.2", + "hostnames": [ "test.hostname.one" ] }, { - "ip":"127.0.0.3", - "hostnames":[ + "ip": "127.0.0.3", + "hostnames": [ "test.hostname.two" ] } ] }, - "hostNetwork":{ - "type":"boolean", - "description":"Use the host's network namespace.", - "default":false + "hostNetwork": { + "type": "boolean", + "description": "Use the host's network namespace.", + "default": false }, - "extraArgs":{ - "type":"array", - "description":"Add additional arguments to the atlantis server", - "items":{ - "type":"string" + "extraAnnotations": { + "type": "object", + "description": "Add additional annotations to all ", + "items": { + "type": "object" }, - "examples":[ + "examples": [ [ "--disable-autoplan", "--disable-repo-locking" ] ] }, - "extraContainers":{ - "description":"Additional containers to use and depends of use cases.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Container" + "extraArgs": { + "type": "array", + "description": "These annotations will be added to all the resources", + "items": { + "type": "object" }, - "type":"array", - "default":[ - - ] + "examples": { + "team": "example" + } }, - "containerSecurityContext":{ - "type":"object", - "description":"SecurityContext configuration for atlantis containers.", - "$ref":"#/definitions/io.k8s.api.core.v1.SecurityContext" - }, - "servicemonitor":{ - "type":"object", - "description":"ServiceMonitor configuration for atlantis containers.", - "properties":{ - "enabled":{ - "type":"boolean", - "description":"Enable Prometheus service monitor. This requires metrics.prometheus.endpoint to be defined (/metrics is a good default) in the repoConfig value" - }, - "interval":{ - "type":"string", - "description":"Interval at which metrics should be scraped" - }, - "path":{ - "type":"string", - "description":"HTTP path to scrape for metrics" - }, - "auth":{ - "type":"object", - "description":"Authentication configuration for the ServiceMonitor", - "properties":{ - "basicAuth":{ - "type":"object", - "properties":{ - "enabled":{ - "type":"boolean", - "description":"Whether to enable basic authentication (default: false)" + "extraContainers": { + "description": "Additional containers to use and depends of use cases.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.Container" + }, + "type": "array", + "default": [] + }, + "containerSecurityContext": { + "type": "object", + "description": "SecurityContext configuration for atlantis containers.", + "$ref": "#/definitions/io.k8s.api.core.v1.SecurityContext" + }, + "servicemonitor": { + "type": "object", + "description": "ServiceMonitor configuration for atlantis containers.", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable Prometheus service monitor. This requires metrics.prometheus.endpoint to be defined (/metrics is a good default) in the repoConfig value" + }, + "interval": { + "type": "string", + "description": "Interval at which metrics should be scraped" + }, + "path": { + "type": "string", + "description": "HTTP path to scrape for metrics" + }, + "additionalLabels": { + "type": "object", + "description": "Prometheus ServiceMonitor labels" + }, + "auth": { + "type": "object", + "description": "Authentication configuration for the ServiceMonitor", + "properties": { + "basicAuth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether to enable basic authentication (default: false)" } }, - "required":[ + "required": [ "enabled" ] }, - "externalSecret":{ - "type":"object", - "properties":{ - "enabled":{ - "type":"boolean", - "description":"Whether to enable external secret authentication (default: false)" + "externalSecret": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether to enable external secret authentication (default: false)" }, - "name":{ - "type":"string", - "description":"The name of the Kubernetes secret containing the authentication credentials" + "name": { + "type": "string", + "description": "The name of the Kubernetes secret containing the authentication credentials" }, - "keys":{ - "type":"object", - "description":"A map of key-value pairs to be used for authentication" + "keys": { + "type": "object", + "description": "A map of key-value pairs to be used for authentication" } } } @@ -1129,1287 +1131,1287 @@ } } }, - "podMonitor":{ - "type":"object", - "description":"PodMonitor configuration for atlantis containers. for Google Managed Prometheus", - "properties":{ - "enabled":{ - "type":"boolean", - "description":"Whether to enable a PodMonitor for Atlantis" + "podMonitor": { + "type": "object", + "description": "PodMonitor configuration for atlantis containers. for Google Managed Prometheus", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether to enable a PodMonitor for Atlantis" }, - "interval":{ - "type":"string", - "description":"The interval at which to scrape the metrics" + "interval": { + "type": "string", + "description": "The interval at which to scrape the metrics" } } }, - "lockingDbType":{ - "type":"string", - "description":"Locking DB type for storing plan and apply locks. Allowed values are `boltdb` and `redis`.", - "default":"postgres", - "enum":[ + "lockingDbType": { + "type": "string", + "description": "Locking DB type for storing plan and apply locks. Allowed values are `boltdb` and `redis`.", + "default": "postgres", + "enum": [ "boltdb", "redis" ] }, - "redis":{ - "type":"object", - "description":"Redis configuration for for Locking DB of type `redis`.", - "properties":{ - "host":{ - "type":"string", - "description":"Redis database number for Locking DB of type `redis`." + "redis": { + "type": "object", + "description": "Redis configuration for for Locking DB of type `redis`.", + "properties": { + "host": { + "type": "string", + "description": "Redis database number for Locking DB of type `redis`." }, - "password":{ - "type":"string", - "description":"Redis password for Locking DB of type `redis`." + "password": { + "type": "string", + "description": "Redis password for Locking DB of type `redis`." }, - "port":{ - "type":"integer", - "description":"Redis port for Locking DB of type `redis`." + "port": { + "type": "integer", + "description": "Redis port for Locking DB of type `redis`." }, - "db":{ - "type":"integer", - "description":"Redis database number for Locking DB of type `redis`." + "db": { + "type": "integer", + "description": "Redis database number for Locking DB of type `redis`." }, - "tlsEnabled":{ - "type":"boolean", - "description":"Whether to enable TLS connection to Redis." + "tlsEnabled": { + "type": "boolean", + "description": "Whether to enable TLS connection to Redis." }, - "insecureSkipVerify":{ - "type":"boolean", - "description":"Whether Redis client should skip verification of Redis server's certificate chain and hostname. Setting to `true` may introduce a security vulnerability." + "insecureSkipVerify": { + "type": "boolean", + "description": "Whether Redis client should skip verification of Redis server's certificate chain and hostname. Setting to `true` may introduce a security vulnerability." } }, - "additionalProperties":false + "additionalProperties": false }, "redisSecretName": { - "type": "string", - "description": "Name of a pre-existing Kubernetes `Secret` containing a `password` key. Use this instead of `redis.password`." + "type": "string", + "description": "Name of a pre-existing Kubernetes `Secret` containing a `password` key. Use this instead of `redis.password`." }, - "lifecycle":{ - "type":"object", - "description":"Configure pod container lifecycle hooks. See [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/) for details.", - "$ref":"#/definitions/io.k8s.api.core.v1.Lifecycle" + "lifecycle": { + "type": "object", + "description": "Configure pod container lifecycle hooks. See [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/) for details.", + "$ref": "#/definitions/io.k8s.api.core.v1.Lifecycle" } }, - "definitions":{ - "io.k8s.api.core.v1.HostAlias":{ - "description":"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", - "properties":{ - "hostnames":{ - "description":"Hostnames for the above IP address.", - "items":{ - "type":"string" + "definitions": { + "io.k8s.api.core.v1.HostAlias": { + "description": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", + "properties": { + "hostnames": { + "description": "Hostnames for the above IP address.", + "items": { + "type": "string" }, - "type":"array" + "type": "array" }, - "ip":{ - "description":"IP address of the host file entry.", - "type":"string" + "ip": { + "description": "IP address of the host file entry.", + "type": "string" } }, - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.Container":{ - "description":"A single application container that you want to run within a pod.", - "properties":{ - "args":{ - "description":"Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "items":{ - "type":"string" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.Container": { + "description": "A single application container that you want to run within a pod.", + "properties": { + "args": { + "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "items": { + "type": "string" }, - "type":"array" + "type": "array" }, - "command":{ - "description":"Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "items":{ - "type":"string" + "command": { + "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "items": { + "type": "string" }, - "type":"array" + "type": "array" }, - "env":{ - "description":"List of environment variables to set in the container. Cannot be updated.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.EnvVar" + "env": { + "description": "List of environment variables to set in the container. Cannot be updated.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.EnvVar" }, - "type":"array", - "x-kubernetes-patch-merge-key":"name", - "x-kubernetes-patch-strategy":"merge" - }, - "envFrom":{ - "description":"List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.EnvFromSource" + "type": "array", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.EnvFromSource" }, - "type":"array" + "type": "array" }, - "image":{ - "description":"Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.", - "type":"string" + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.", + "type": "string" }, - "imagePullPolicy":{ - "description":"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type":"string" + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" }, - "lifecycle":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Lifecycle", - "description":"Actions that the management system should take in response to container lifecycle events. Cannot be updated." + "lifecycle": { + "$ref": "#/definitions/io.k8s.api.core.v1.Lifecycle", + "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated." }, - "livenessProbe":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Probe", - "description":"Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + "livenessProbe": { + "$ref": "#/definitions/io.k8s.api.core.v1.Probe", + "description": "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" }, - "name":{ - "description":"Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.", - "type":"string" + "name": { + "description": "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.", + "type": "string" }, - "ports":{ - "description":"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.ContainerPort" + "ports": { + "description": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.ContainerPort" }, - "type":"array", - "x-kubernetes-list-map-keys":[ + "type": "array", + "x-kubernetes-list-map-keys": [ "containerPort", "protocol" ], - "x-kubernetes-list-type":"map", - "x-kubernetes-patch-merge-key":"containerPort", - "x-kubernetes-patch-strategy":"merge" - }, - "readinessProbe":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Probe", - "description":"Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" - }, - "resources":{ - "$ref":"#/definitions/io.k8s.api.core.v1.ResourceRequirements", - "description":"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" - }, - "securityContext":{ - "$ref":"#/definitions/io.k8s.api.core.v1.SecurityContext", - "description":"SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/" - }, - "startupProbe":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Probe", - "description":"StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" - }, - "stdin":{ - "description":"Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.", - "type":"boolean" - }, - "stdinOnce":{ - "description":"Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", - "type":"boolean" - }, - "terminationMessagePath":{ - "description":"Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", - "type":"string" - }, - "terminationMessagePolicy":{ - "description":"Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", - "type":"string" - }, - "tty":{ - "description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", - "type":"boolean" - }, - "volumeDevices":{ - "description":"volumeDevices is the list of block devices to be used by the container.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.VolumeDevice" + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "containerPort", + "x-kubernetes-patch-strategy": "merge" + }, + "readinessProbe": { + "$ref": "#/definitions/io.k8s.api.core.v1.Probe", + "description": "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + }, + "resources": { + "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements", + "description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + }, + "securityContext": { + "$ref": "#/definitions/io.k8s.api.core.v1.SecurityContext", + "description": "SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/" + }, + "startupProbe": { + "$ref": "#/definitions/io.k8s.api.core.v1.Probe", + "description": "StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + }, + "stdin": { + "description": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "type": "string" + }, + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the container.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.VolumeDevice" }, - "type":"array", - "x-kubernetes-patch-merge-key":"devicePath", - "x-kubernetes-patch-strategy":"merge" - }, - "volumeMounts":{ - "description":"Pod volumes to mount into the container's filesystem. Cannot be updated.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.VolumeMount" + "type": "array", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.VolumeMount" }, - "type":"array", - "x-kubernetes-patch-merge-key":"mountPath", - "x-kubernetes-patch-strategy":"merge" + "type": "array", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" }, - "workingDir":{ - "description":"Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type":"string" + "workingDir": { + "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" } }, - "required":[ + "required": [ "name" ], - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.Lifecycle":{ - "description":"Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.", - "properties":{ - "postStart":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Handler", - "description":"PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" + "io.k8s.api.core.v1.Lifecycle": { + "description": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.", + "properties": { + "postStart": { + "$ref": "#/definitions/io.k8s.api.core.v1.Handler", + "description": "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" }, - "preStop":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Handler", - "description":"PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod's termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" + "preStop": { + "$ref": "#/definitions/io.k8s.api.core.v1.Handler", + "description": "PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod's termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.Handler":{ - "description":"Handler defines a specific action that should be taken", - "properties":{ - "exec":{ - "$ref":"#/definitions/io.k8s.api.core.v1.ExecAction", - "description":"One and only one of the following should be specified. Exec specifies the action to take." + "io.k8s.api.core.v1.Handler": { + "description": "Handler defines a specific action that should be taken", + "properties": { + "exec": { + "$ref": "#/definitions/io.k8s.api.core.v1.ExecAction", + "description": "One and only one of the following should be specified. Exec specifies the action to take." }, - "httpGet":{ - "$ref":"#/definitions/io.k8s.api.core.v1.HTTPGetAction", - "description":"HTTPGet specifies the http request to perform." + "httpGet": { + "$ref": "#/definitions/io.k8s.api.core.v1.HTTPGetAction", + "description": "HTTPGet specifies the http request to perform." }, - "tcpSocket":{ - "$ref":"#/definitions/io.k8s.api.core.v1.TCPSocketAction", - "description":"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" + "tcpSocket": { + "$ref": "#/definitions/io.k8s.api.core.v1.TCPSocketAction", + "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" } }, - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.ContainerPort":{ - "description":"ContainerPort represents a network port in a single container.", - "properties":{ - "containerPort":{ - "description":"Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.", - "format":"int32", - "type":"integer" - }, - "hostIP":{ - "description":"What host IP to bind the external port to.", - "type":"string" - }, - "hostPort":{ - "description":"Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.", - "format":"int32", - "type":"integer" - }, - "name":{ - "description":"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type":"string" - }, - "protocol":{ - "description":"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type":"string" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.ContainerPort": { + "description": "ContainerPort represents a network port in a single container.", + "properties": { + "containerPort": { + "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.", + "format": "int32", + "type": "integer" + }, + "hostIP": { + "description": "What host IP to bind the external port to.", + "type": "string" + }, + "hostPort": { + "description": "Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.", + "format": "int32", + "type": "integer" + }, + "name": { + "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", + "type": "string" + }, + "protocol": { + "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", + "type": "string" } }, - "required":[ + "required": [ "containerPort" ], - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.EnvVar":{ - "description":"EnvVar represents an environment variable present in a Container.", - "properties":{ - "name":{ - "description":"Name of the environment variable. Must be a C_IDENTIFIER.", - "type":"string" + "io.k8s.api.core.v1.EnvVar": { + "description": "EnvVar represents an environment variable present in a Container.", + "properties": { + "name": { + "description": "Name of the environment variable. Must be a C_IDENTIFIER.", + "type": "string" }, - "value":{ - "description":"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".", - "type":"string" + "value": { + "description": "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".", + "type": "string" }, - "valueFrom":{ - "$ref":"#/definitions/io.k8s.api.core.v1.EnvVarSource", - "description":"Source for the environment variable's value. Cannot be used if value is not empty." + "valueFrom": { + "$ref": "#/definitions/io.k8s.api.core.v1.EnvVarSource", + "description": "Source for the environment variable's value. Cannot be used if value is not empty." } }, - "required":[ + "required": [ "name" ], - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.EnvFromSource":{ - "description":"EnvFromSource represents the source of a set of ConfigMaps", - "properties":{ - "configMapRef":{ - "$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource", - "description":"The ConfigMap to select from" + "io.k8s.api.core.v1.EnvFromSource": { + "description": "EnvFromSource represents the source of a set of ConfigMaps", + "properties": { + "configMapRef": { + "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource", + "description": "The ConfigMap to select from" }, - "prefix":{ - "description":"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", - "type":"string" + "prefix": { + "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", + "type": "string" }, - "secretRef":{ - "$ref":"#/definitions/io.k8s.api.core.v1.SecretEnvSource", - "description":"The Secret to select from" + "secretRef": { + "$ref": "#/definitions/io.k8s.api.core.v1.SecretEnvSource", + "description": "The Secret to select from" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.ConfigMapEnvSource":{ - "description":"ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", - "properties":{ - "name":{ - "description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type":"string" + "io.k8s.api.core.v1.ConfigMapEnvSource": { + "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", + "properties": { + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" }, - "optional":{ - "description":"Specify whether the ConfigMap must be defined", - "type":"boolean" + "optional": { + "description": "Specify whether the ConfigMap must be defined", + "type": "boolean" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.SecretEnvSource":{ - "description":"SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", - "properties":{ - "name":{ - "description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type":"string" + "io.k8s.api.core.v1.SecretEnvSource": { + "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", + "properties": { + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" }, - "optional":{ - "description":"Specify whether the Secret must be defined", - "type":"boolean" + "optional": { + "description": "Specify whether the Secret must be defined", + "type": "boolean" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.VolumeDevice":{ - "description":"volumeDevice describes a mapping of a raw block device within a container.", - "properties":{ - "devicePath":{ - "description":"devicePath is the path inside of the container that the device will be mapped to.", - "type":"string" + "io.k8s.api.core.v1.VolumeDevice": { + "description": "volumeDevice describes a mapping of a raw block device within a container.", + "properties": { + "devicePath": { + "description": "devicePath is the path inside of the container that the device will be mapped to.", + "type": "string" }, - "name":{ - "description":"name must match the name of a persistentVolumeClaim in the pod", - "type":"string" + "name": { + "description": "name must match the name of a persistentVolumeClaim in the pod", + "type": "string" } }, - "required":[ + "required": [ "name", "devicePath" ], - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.Probe":{ - "description":"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", - "properties":{ - "exec":{ - "$ref":"#/definitions/io.k8s.api.core.v1.ExecAction", - "description":"One and only one of the following should be specified. Exec specifies the action to take." - }, - "failureThreshold":{ - "description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", - "format":"int32", - "type":"integer" - }, - "httpGet":{ - "$ref":"#/definitions/io.k8s.api.core.v1.HTTPGetAction", - "description":"HTTPGet specifies the http request to perform." - }, - "initialDelaySeconds":{ - "description":"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "format":"int32", - "type":"integer" - }, - "periodSeconds":{ - "description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", - "format":"int32", - "type":"integer" - }, - "successThreshold":{ - "description":"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.", - "format":"int32", - "type":"integer" - }, - "tcpSocket":{ - "$ref":"#/definitions/io.k8s.api.core.v1.TCPSocketAction", - "description":"TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" - }, - "terminationGracePeriodSeconds":{ - "description":"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.", - "format":"int64", - "type":"integer" - }, - "timeoutSeconds":{ - "description":"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "format":"int32", - "type":"integer" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.Probe": { + "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", + "properties": { + "exec": { + "$ref": "#/definitions/io.k8s.api.core.v1.ExecAction", + "description": "One and only one of the following should be specified. Exec specifies the action to take." + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "$ref": "#/definitions/io.k8s.api.core.v1.HTTPGetAction", + "description": "HTTPGet specifies the http request to perform." + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "$ref": "#/definitions/io.k8s.api.core.v1.TCPSocketAction", + "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" + }, + "terminationGracePeriodSeconds": { + "description": "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.", + "format": "int64", + "type": "integer" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "format": "int32", + "type": "integer" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.TCPSocketAction":{ - "description":"TCPSocketAction describes an action based on opening a socket", - "properties":{ - "host":{ - "description":"Optional: Host name to connect to, defaults to the pod IP.", - "type":"string" + "io.k8s.api.core.v1.TCPSocketAction": { + "description": "TCPSocketAction describes an action based on opening a socket", + "properties": { + "host": { + "description": "Optional: Host name to connect to, defaults to the pod IP.", + "type": "string" }, - "port":{ - "$ref":"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString", - "description":"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + "port": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString", + "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." } }, - "required":[ + "required": [ "port" ], - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.apimachinery.pkg.util.intstr.IntOrString":{ - "oneOf":[ + "io.k8s.apimachinery.pkg.util.intstr.IntOrString": { + "oneOf": [ { - "type":"string" + "type": "string" }, { - "type":"integer" + "type": "integer" } ] }, - "io.k8s.api.core.v1.HTTPGetAction":{ - "description":"HTTPGetAction describes an action based on HTTP Get requests.", - "properties":{ - "host":{ - "description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", - "type":"string" - }, - "httpHeaders":{ - "description":"Custom headers to set in the request. HTTP allows repeated headers.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.HTTPHeader" + "io.k8s.api.core.v1.HTTPGetAction": { + "description": "HTTPGetAction describes an action based on HTTP Get requests.", + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", + "type": "string" + }, + "httpHeaders": { + "description": "Custom headers to set in the request. HTTP allows repeated headers.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.HTTPHeader" }, - "type":"array" + "type": "array" }, - "path":{ - "description":"Path to access on the HTTP server.", - "type":"string" + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" }, - "port":{ - "$ref":"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString", - "description":"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + "port": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString", + "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." }, - "scheme":{ - "description":"Scheme to use for connecting to the host. Defaults to HTTP.", - "type":"string" + "scheme": { + "description": "Scheme to use for connecting to the host. Defaults to HTTP.", + "type": "string" } }, - "required":[ + "required": [ "port" ], - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.HTTPHeader":{ - "description":"HTTPHeader describes a custom header to be used in HTTP probes", - "properties":{ - "name":{ - "description":"The header field name", - "type":"string" + "io.k8s.api.core.v1.HTTPHeader": { + "description": "HTTPHeader describes a custom header to be used in HTTP probes", + "properties": { + "name": { + "description": "The header field name", + "type": "string" }, - "value":{ - "description":"The header field value", - "type":"string" + "value": { + "description": "The header field value", + "type": "string" } }, - "required":[ + "required": [ "name", "value" ], - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.ExecAction":{ - "description":"ExecAction describes a \"run in container\" action.", - "properties":{ - "command":{ - "description":"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", - "items":{ - "type":"string" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.ExecAction": { + "description": "ExecAction describes a \"run in container\" action.", + "properties": { + "command": { + "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", + "items": { + "type": "string" }, - "type":"array" + "type": "array" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.EnvVarSource":{ - "description":"EnvVarSource represents a source for the value of an EnvVar.", - "properties":{ - "configMapKeyRef":{ - "$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector", - "description":"Selects a key of a ConfigMap." + "io.k8s.api.core.v1.EnvVarSource": { + "description": "EnvVarSource represents a source for the value of an EnvVar.", + "properties": { + "configMapKeyRef": { + "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector", + "description": "Selects a key of a ConfigMap." }, - "fieldRef":{ - "$ref":"#/definitions/io.k8s.api.core.v1.ObjectFieldSelector", - "description":"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." + "fieldRef": { + "$ref": "#/definitions/io.k8s.api.core.v1.ObjectFieldSelector", + "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." }, - "resourceFieldRef":{ - "$ref":"#/definitions/io.k8s.api.core.v1.ResourceFieldSelector", - "description":"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." + "resourceFieldRef": { + "$ref": "#/definitions/io.k8s.api.core.v1.ResourceFieldSelector", + "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." }, - "secretKeyRef":{ - "$ref":"#/definitions/io.k8s.api.core.v1.SecretKeySelector", - "description":"Selects a key of a secret in the pod's namespace" + "secretKeyRef": { + "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector", + "description": "Selects a key of a secret in the pod's namespace" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.ConfigMapKeySelector":{ - "description":"Selects a key from a ConfigMap.", - "properties":{ - "key":{ - "description":"The key to select.", - "type":"string" + "io.k8s.api.core.v1.ConfigMapKeySelector": { + "description": "Selects a key from a ConfigMap.", + "properties": { + "key": { + "description": "The key to select.", + "type": "string" }, - "name":{ - "description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type":"string" + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" }, - "optional":{ - "description":"Specify whether the ConfigMap or its key must be defined", - "type":"boolean" + "optional": { + "description": "Specify whether the ConfigMap or its key must be defined", + "type": "boolean" } }, - "required":[ + "required": [ "key" ], - "type":"object", - "x-kubernetes-map-type":"atomic", - "additionalProperties":false - }, - "io.k8s.api.core.v1.ObjectFieldSelector":{ - "description":"ObjectFieldSelector selects an APIVersioned field of an object.", - "properties":{ - "apiVersion":{ - "description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type":"string" + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "io.k8s.api.core.v1.ObjectFieldSelector": { + "description": "ObjectFieldSelector selects an APIVersioned field of an object.", + "properties": { + "apiVersion": { + "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", + "type": "string" }, - "fieldPath":{ - "description":"Path of the field to select in the specified API version.", - "type":"string" + "fieldPath": { + "description": "Path of the field to select in the specified API version.", + "type": "string" } }, - "required":[ + "required": [ "fieldPath" ], - "type":"object", - "x-kubernetes-map-type":"atomic", - "additionalProperties":false - }, - "io.k8s.api.core.v1.ResourceFieldSelector":{ - "description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "properties":{ - "containerName":{ - "description":"Container name: required for volumes, optional for env vars", - "type":"string" + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "io.k8s.api.core.v1.ResourceFieldSelector": { + "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", + "properties": { + "containerName": { + "description": "Container name: required for volumes, optional for env vars", + "type": "string" }, - "divisor":{ - "$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity", - "description":"Specifies the output format of the exposed resources, defaults to \"1\"" + "divisor": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity", + "description": "Specifies the output format of the exposed resources, defaults to \"1\"" }, - "resource":{ - "description":"Required: resource to select", - "type":"string" + "resource": { + "description": "Required: resource to select", + "type": "string" } }, - "required":[ + "required": [ "resource" ], - "type":"object", - "x-kubernetes-map-type":"atomic", - "additionalProperties":false - }, - "io.k8s.api.core.v1.SecretKeySelector":{ - "description":"SecretKeySelector selects a key of a Secret.", - "properties":{ - "key":{ - "description":"The key of the secret to select from. Must be a valid secret key.", - "type":"string" + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "io.k8s.api.core.v1.SecretKeySelector": { + "description": "SecretKeySelector selects a key of a Secret.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" }, - "name":{ - "description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type":"string" + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" }, - "optional":{ - "description":"Specify whether the Secret or its key must be defined", - "type":"boolean" + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" } }, - "required":[ + "required": [ "key" ], - "type":"object", - "x-kubernetes-map-type":"atomic", - "additionalProperties":false - }, - "io.k8s.api.core.v1.VolumeMount":{ - "description":"VolumeMount describes a mounting of a Volume within a container.", - "properties":{ - "mountPath":{ - "description":"Path within the container at which the volume should be mounted. Must not contain ':'.", - "type":"string" + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "io.k8s.api.core.v1.VolumeMount": { + "description": "VolumeMount describes a mounting of a Volume within a container.", + "properties": { + "mountPath": { + "description": "Path within the container at which the volume should be mounted. Must not contain ':'.", + "type": "string" }, - "mountPropagation":{ - "description":"mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.", - "type":"string" + "mountPropagation": { + "description": "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.", + "type": "string" }, - "name":{ - "description":"This must match the Name of a Volume.", - "type":"string" + "name": { + "description": "This must match the Name of a Volume.", + "type": "string" }, - "readOnly":{ - "description":"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", - "type":"boolean" + "readOnly": { + "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", + "type": "boolean" }, - "subPath":{ - "description":"Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", - "type":"string" + "subPath": { + "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", + "type": "string" }, - "subPathExpr":{ - "description":"Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.", - "type":"string" + "subPathExpr": { + "description": "Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.", + "type": "string" } }, - "required":[ + "required": [ "name", "mountPath" ], - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.TopologySpreadConstraint":{ - "description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "properties":{ - "labelSelector":{ - "$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector", - "description":"LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain." - }, - "maxSkew":{ - "description":"MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "format":"int32", - "type":"integer" - }, - "topologyKey":{ - "description":"TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type":"string" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.TopologySpreadConstraint": { + "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", + "properties": { + "labelSelector": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector", + "description": "LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain." + }, + "maxSkew": { + "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", + "format": "int32", + "type": "integer" + }, + "topologyKey": { + "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", + "type": "string" }, - "whenUnsatisfiable":{ - "description":"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assigment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type":"string" + "whenUnsatisfiable": { + "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assigment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", + "type": "string" } }, - "required":[ + "required": [ "maxSkew", "topologyKey", "whenUnsatisfiable" ], - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.Affinity":{ - "description":"Affinity is a group of affinity scheduling rules.", - "properties":{ - "nodeAffinity":{ - "$ref":"#/definitions/io.k8s.api.core.v1.NodeAffinity", - "description":"Describes node affinity scheduling rules for the pod." + "io.k8s.api.core.v1.Affinity": { + "description": "Affinity is a group of affinity scheduling rules.", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/io.k8s.api.core.v1.NodeAffinity", + "description": "Describes node affinity scheduling rules for the pod." }, - "podAffinity":{ - "$ref":"#/definitions/io.k8s.api.core.v1.PodAffinity", - "description":"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." + "podAffinity": { + "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinity", + "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." }, - "podAntiAffinity":{ - "$ref":"#/definitions/io.k8s.api.core.v1.PodAntiAffinity", - "description":"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." + "podAntiAffinity": { + "$ref": "#/definitions/io.k8s.api.core.v1.PodAntiAffinity", + "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." } }, - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.PodAffinity":{ - "description":"Pod affinity is a group of inter pod affinity scheduling rules.", - "properties":{ - "preferredDuringSchedulingIgnoredDuringExecution":{ - "description":"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.PodAffinity": { + "description": "Pod affinity is a group of inter pod affinity scheduling rules.", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" }, - "type":"array" + "type": "array" }, - "requiredDuringSchedulingIgnoredDuringExecution":{ - "description":"If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.PodAffinityTerm" + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" }, - "type":"array" + "type": "array" } }, - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.PodAffinityTerm":{ - "description":"Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", - "properties":{ - "labelSelector":{ - "$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector", - "description":"A label query over a set of resources, in this case pods." - }, - "namespaceSelector":{ - "$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector", - "description":"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled." - }, - "namespaces":{ - "description":"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"", - "items":{ - "type":"string" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.PodAffinityTerm": { + "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", + "properties": { + "labelSelector": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector", + "description": "A label query over a set of resources, in this case pods." + }, + "namespaceSelector": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector", + "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled." + }, + "namespaces": { + "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"", + "items": { + "type": "string" }, - "type":"array" + "type": "array" }, - "topologyKey":{ - "description":"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", - "type":"string" + "topologyKey": { + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "type": "string" } }, - "required":[ + "required": [ "topologyKey" ], - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.PodAntiAffinity":{ - "description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "properties":{ - "preferredDuringSchedulingIgnoredDuringExecution":{ - "description":"The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.PodAntiAffinity": { + "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" }, - "type":"array" + "type": "array" }, - "requiredDuringSchedulingIgnoredDuringExecution":{ - "description":"If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.PodAffinityTerm" + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" }, - "type":"array" + "type": "array" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.WeightedPodAffinityTerm":{ - "description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", - "properties":{ - "podAffinityTerm":{ - "$ref":"#/definitions/io.k8s.api.core.v1.PodAffinityTerm", - "description":"Required. A pod affinity term, associated with the corresponding weight." + "io.k8s.api.core.v1.WeightedPodAffinityTerm": { + "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "properties": { + "podAffinityTerm": { + "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm", + "description": "Required. A pod affinity term, associated with the corresponding weight." }, - "weight":{ - "description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", - "format":"int32", - "type":"integer" + "weight": { + "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", + "format": "int32", + "type": "integer" } }, - "required":[ + "required": [ "weight", "podAffinityTerm" ], - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.NodeAffinity":{ - "description":"Node affinity is a group of node affinity scheduling rules.", - "properties":{ - "preferredDuringSchedulingIgnoredDuringExecution":{ - "description":"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.NodeAffinity": { + "description": "Node affinity is a group of node affinity scheduling rules.", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm" }, - "type":"array" + "type": "array" }, - "requiredDuringSchedulingIgnoredDuringExecution":{ - "$ref":"#/definitions/io.k8s.api.core.v1.NodeSelector", - "description":"If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node." + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelector", + "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node." } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.PreferredSchedulingTerm":{ - "description":"An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", - "properties":{ - "preference":{ - "$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorTerm", - "description":"A node selector term, associated with the corresponding weight." + "io.k8s.api.core.v1.PreferredSchedulingTerm": { + "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "properties": { + "preference": { + "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorTerm", + "description": "A node selector term, associated with the corresponding weight." }, - "weight":{ - "description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "format":"int32", - "type":"integer" + "weight": { + "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", + "format": "int32", + "type": "integer" } }, - "required":[ + "required": [ "weight", "preference" ], - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.NodeSelectorTerm":{ - "description":"A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", - "properties":{ - "matchExpressions":{ - "description":"A list of node selector requirements by node's labels.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.NodeSelectorTerm": { + "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", + "properties": { + "matchExpressions": { + "description": "A list of node selector requirements by node's labels.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement" }, - "type":"array" + "type": "array" }, - "matchFields":{ - "description":"A list of node selector requirements by node's fields.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement" + "matchFields": { + "description": "A list of node selector requirements by node's fields.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement" }, - "type":"array" + "type": "array" } }, - "type":"object", - "x-kubernetes-map-type":"atomic", - "additionalProperties":false - }, - "io.k8s.api.core.v1.NodeSelectorRequirement":{ - "description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "properties":{ - "key":{ - "description":"The label key that the selector applies to.", - "type":"string" - }, - "operator":{ - "description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type":"string" - }, - "values":{ - "description":"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "items":{ - "type":"string" + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "io.k8s.api.core.v1.NodeSelectorRequirement": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "type": "string" + }, + "values": { + "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", + "items": { + "type": "string" }, - "type":"array" + "type": "array" } }, - "required":[ + "required": [ "key", "operator" ], - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.NodeSelector":{ - "description":"A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "properties":{ - "nodeSelectorTerms":{ - "description":"Required. A list of node selector terms. The terms are ORed.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.NodeSelector": { + "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", + "properties": { + "nodeSelectorTerms": { + "description": "Required. A list of node selector terms. The terms are ORed.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" }, - "type":"array" + "type": "array" } }, - "required":[ + "required": [ "nodeSelectorTerms" ], - "type":"object", - "x-kubernetes-map-type":"atomic", - "additionalProperties":false - }, - "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector":{ - "description":"A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "properties":{ - "matchExpressions":{ - "description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "items":{ - "$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement" + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector": { + "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "items": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement" }, - "type":"array" + "type": "array" }, - "matchLabels":{ - "additionalProperties":{ - "type":"string" + "matchLabels": { + "additionalProperties": { + "type": "string" }, - "description":"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type":"object" + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object" } }, - "type":"object", - "x-kubernetes-map-type":"atomic", - "additionalProperties":false - }, - "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement":{ - "description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "properties":{ - "key":{ - "description":"key is the label key that the selector applies to.", - "type":"string", - "x-kubernetes-patch-merge-key":"key", - "x-kubernetes-patch-strategy":"merge" - }, - "operator":{ - "description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", - "type":"string" - }, - "values":{ - "description":"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", - "items":{ - "type":"string" + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string", + "x-kubernetes-patch-merge-key": "key", + "x-kubernetes-patch-strategy": "merge" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "items": { + "type": "string" }, - "type":"array" + "type": "array" } }, - "required":[ + "required": [ "key", "operator" ], - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.Toleration":{ - "description":"The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .", - "properties":{ - "effect":{ - "description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type":"string" + "io.k8s.api.core.v1.Toleration": { + "description": "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .", + "properties": { + "effect": { + "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", + "type": "string" }, - "key":{ - "description":"Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type":"string" + "key": { + "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", + "type": "string" }, - "operator":{ - "description":"Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type":"string" + "operator": { + "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", + "type": "string" }, - "tolerationSeconds":{ - "description":"TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "format":"int64", - "type":"integer" + "tolerationSeconds": { + "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", + "format": "int64", + "type": "integer" }, - "value":{ - "description":"Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type":"string" + "value": { + "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", + "type": "string" } }, - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.ResourceRequirements":{ - "description":"ResourceRequirements describes the compute resource requirements.", - "properties":{ - "limits":{ - "additionalProperties":{ - "$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.ResourceRequirements": { + "description": "ResourceRequirements describes the compute resource requirements.", + "properties": { + "limits": { + "additionalProperties": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, - "description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type":"object" + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" }, - "requests":{ - "additionalProperties":{ - "$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" + "requests": { + "additionalProperties": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, - "description":"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type":"object" + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.apimachinery.pkg.api.resource.Quantity":{ - "oneOf":[ + "io.k8s.apimachinery.pkg.api.resource.Quantity": { + "oneOf": [ { - "type":"string" + "type": "string" }, { - "type":"number" + "type": "number" } ] }, - "io.k8s.api.apps.v1.StatefulSetUpdateStrategy":{ - "description":"StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.", - "properties":{ - "rollingUpdate":{ - "description":"RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", - "properties":{ - "maxUnavailable":{ - "oneOf":[ + "io.k8s.api.apps.v1.StatefulSetUpdateStrategy": { + "description": "StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.", + "properties": { + "rollingUpdate": { + "description": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", + "properties": { + "maxUnavailable": { + "oneOf": [ { - "type":[ + "type": [ "string", "null" ] }, { - "type":[ + "type": [ "integer", "null" ] } ] }, - "partition":{ - "description":"Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0.", - "format":"int32", - "type":[ + "partition": { + "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0.", + "format": "int32", + "type": [ "integer", "null" ] } }, - "type":[ + "type": [ "object", "null" ], - "additionalProperties":false + "additionalProperties": false }, - "type":{ - "description":"Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.", - "type":[ + "type": { + "description": "Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.", + "type": [ "string", "null" ] } }, - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.Capabilities":{ - "description":"Adds and removes POSIX capabilities from running containers.", - "properties":{ - "add":{ - "description":"Added capabilities", - "items":{ - "type":"string" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.Capabilities": { + "description": "Adds and removes POSIX capabilities from running containers.", + "properties": { + "add": { + "description": "Added capabilities", + "items": { + "type": "string" }, - "type":"array" + "type": "array" }, - "drop":{ - "description":"Removed capabilities", - "items":{ - "type":"string" + "drop": { + "description": "Removed capabilities", + "items": { + "type": "string" }, - "type":"array" + "type": "array" } }, - "type":"object", - "additionalProperties":false - }, - "io.k8s.api.core.v1.PodSecurityContext":{ - "description":"PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", - "properties":{ - "fsGroup":{ - "description":"A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", - "format":"int64", - "type":"integer" - }, - "fsGroupChangePolicy":{ - "description":"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used.", - "type":"string" - }, - "runAsGroup":{ - "description":"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", - "format":"int64", - "type":"integer" - }, - "runAsNonRoot":{ - "description":"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "type":"boolean" - }, - "runAsUser":{ - "description":"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", - "format":"int64", - "type":"integer" - }, - "seLinuxOptions":{ - "$ref":"#/definitions/io.k8s.api.core.v1.SELinuxOptions", - "description":"The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." - }, - "seccompProfile":{ - "$ref":"#/definitions/io.k8s.api.core.v1.SeccompProfile", - "description":"The seccomp options to use by the containers in this pod." - }, - "supplementalGroups":{ - "description":"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", - "items":{ - "format":"int64", - "type":"integer" + "type": "object", + "additionalProperties": false + }, + "io.k8s.api.core.v1.PodSecurityContext": { + "description": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", + "properties": { + "fsGroup": { + "description": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", + "format": "int64", + "type": "integer" + }, + "fsGroupChangePolicy": { + "description": "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used.", + "type": "string" + }, + "runAsGroup": { + "description": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "format": "int64", + "type": "integer" + }, + "runAsNonRoot": { + "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "type": "boolean" + }, + "runAsUser": { + "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "format": "int64", + "type": "integer" + }, + "seLinuxOptions": { + "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions", + "description": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." + }, + "seccompProfile": { + "$ref": "#/definitions/io.k8s.api.core.v1.SeccompProfile", + "description": "The seccomp options to use by the containers in this pod." + }, + "supplementalGroups": { + "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", + "items": { + "format": "int64", + "type": "integer" }, - "type":"array" + "type": "array" }, - "sysctls":{ - "description":"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.", - "items":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Sysctl" + "sysctls": { + "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.Sysctl" }, - "type":"array" + "type": "array" }, - "windowsOptions":{ - "$ref":"#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions", - "description":"The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + "windowsOptions": { + "$ref": "#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions", + "description": "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.SELinuxOptions":{ - "description":"SELinuxOptions are the labels to be applied to the container", - "properties":{ - "level":{ - "description":"Level is SELinux level label that applies to the container.", - "type":"string" + "io.k8s.api.core.v1.SELinuxOptions": { + "description": "SELinuxOptions are the labels to be applied to the container", + "properties": { + "level": { + "description": "Level is SELinux level label that applies to the container.", + "type": "string" }, - "role":{ - "description":"Role is a SELinux role label that applies to the container.", - "type":"string" + "role": { + "description": "Role is a SELinux role label that applies to the container.", + "type": "string" }, - "type":{ - "description":"Type is a SELinux type label that applies to the container.", - "type":"string" + "type": { + "description": "Type is a SELinux type label that applies to the container.", + "type": "string" }, - "user":{ - "description":"User is a SELinux user label that applies to the container.", - "type":"string" + "user": { + "description": "User is a SELinux user label that applies to the container.", + "type": "string" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.SeccompProfile":{ - "description":"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.", - "properties":{ - "localhostProfile":{ - "description":"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".", - "type":"string" + "io.k8s.api.core.v1.SeccompProfile": { + "description": "SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.", + "properties": { + "localhostProfile": { + "description": "localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".", + "type": "string" }, - "type":{ - "description":"type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.", - "type":"string" + "type": { + "description": "type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.", + "type": "string" } }, - "required":[ + "required": [ "type" ], - "type":"object", - "x-kubernetes-unions":[ + "type": "object", + "x-kubernetes-unions": [ { - "discriminator":"type", - "fields-to-discriminateBy":{ - "localhostProfile":"LocalhostProfile" + "discriminator": "type", + "fields-to-discriminateBy": { + "localhostProfile": "LocalhostProfile" } } ], - "additionalProperties":false + "additionalProperties": false }, - "io.k8s.api.core.v1.SecurityContext":{ - "description":"SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", - "properties":{ - "allowPrivilegeEscalation":{ - "description":"AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN", - "type":"boolean" + "io.k8s.api.core.v1.SecurityContext": { + "description": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", + "properties": { + "allowPrivilegeEscalation": { + "description": "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN", + "type": "boolean" }, - "capabilities":{ - "$ref":"#/definitions/io.k8s.api.core.v1.Capabilities", - "description":"The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime." + "capabilities": { + "$ref": "#/definitions/io.k8s.api.core.v1.Capabilities", + "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime." }, - "privileged":{ - "description":"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", - "type":"boolean" + "privileged": { + "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", + "type": "boolean" }, - "procMount":{ - "description":"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.", - "type":"string" + "procMount": { + "description": "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.", + "type": "string" }, - "readOnlyRootFilesystem":{ - "description":"Whether this container has a read-only root filesystem. Default is false.", - "type":"boolean" + "readOnlyRootFilesystem": { + "description": "Whether this container has a read-only root filesystem. Default is false.", + "type": "boolean" }, - "runAsGroup":{ - "description":"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "format":"int64", - "type":"integer" + "runAsGroup": { + "description": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "format": "int64", + "type": "integer" }, - "runAsNonRoot":{ - "description":"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "type":"boolean" + "runAsNonRoot": { + "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "type": "boolean" }, - "runAsUser":{ - "description":"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "format":"int64", - "type":"integer" + "runAsUser": { + "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "format": "int64", + "type": "integer" }, - "seLinuxOptions":{ - "$ref":"#/definitions/io.k8s.api.core.v1.SELinuxOptions", - "description":"The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + "seLinuxOptions": { + "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions", + "description": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." }, - "seccompProfile":{ - "$ref":"#/definitions/io.k8s.api.core.v1.SeccompProfile", - "description":"The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options." + "seccompProfile": { + "$ref": "#/definitions/io.k8s.api.core.v1.SeccompProfile", + "description": "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options." }, - "windowsOptions":{ - "$ref":"#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions", - "description":"The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + "windowsOptions": { + "$ref": "#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions", + "description": "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.Sysctl":{ - "description":"Sysctl defines a kernel parameter to be set", - "properties":{ - "name":{ - "description":"Name of a property to set", - "type":"string" + "io.k8s.api.core.v1.Sysctl": { + "description": "Sysctl defines a kernel parameter to be set", + "properties": { + "name": { + "description": "Name of a property to set", + "type": "string" }, - "value":{ - "description":"Value of a property to set", - "type":"string" + "value": { + "description": "Value of a property to set", + "type": "string" } }, - "required":[ + "required": [ "name", "value" ], - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false }, - "io.k8s.api.core.v1.WindowsSecurityContextOptions":{ - "description":"WindowsSecurityContextOptions contain Windows-specific options and credentials.", - "properties":{ - "gmsaCredentialSpec":{ - "description":"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.", - "type":"string" + "io.k8s.api.core.v1.WindowsSecurityContextOptions": { + "description": "WindowsSecurityContextOptions contain Windows-specific options and credentials.", + "properties": { + "gmsaCredentialSpec": { + "description": "GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.", + "type": "string" }, - "gmsaCredentialSpecName":{ - "description":"GMSACredentialSpecName is the name of the GMSA credential spec to use.", - "type":"string" + "gmsaCredentialSpecName": { + "description": "GMSACredentialSpecName is the name of the GMSA credential spec to use.", + "type": "string" }, - "hostProcess":{ - "description":"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.", - "type":"boolean" + "hostProcess": { + "description": "HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.", + "type": "boolean" }, - "runAsUserName":{ - "description":"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "type":"string" + "runAsUserName": { + "description": "The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "type": "string" } }, - "type":"object", - "additionalProperties":false + "type": "object", + "additionalProperties": false } } } diff --git a/charts/atlantis/values.yaml b/charts/atlantis/values.yaml index 8c97ab46..0536d370 100644 --- a/charts/atlantis/values.yaml +++ b/charts/atlantis/values.yaml @@ -90,7 +90,7 @@ github: {} # Source: https://stackoverflow.com/questions/42148841/github-clone-with-oauth-access-token # If managing secrets outside the chart for the gitconfig, use this variable to reference the secret name - # gitconfigSecretName: 'mygitconfigsecret' +# gitconfigSecretName: 'mygitconfigsecret' # When referencing Terraform modules in private repositories or registries (such as Artfactory) # configuing a .netrc file for authentication may be required: @@ -535,6 +535,10 @@ initConfig: hostNetwork: false +# these annotations will be added to all the resources +extraAnnotations: {} +# team: example + extraArgs: [] # extraArgs: # - --disable-autoplan