From ec4b656867fbd6036e380add4b7b5d1cf1c6ac81 Mon Sep 17 00:00:00 2001 From: Joe Lombrozo Date: Tue, 10 Oct 2023 22:40:58 -0400 Subject: [PATCH] support multiple locations for schemas and policies also check and enforce linting --- .editorconfig | 10 + .github/workflows/on_pull-request_docs.yaml | 14 +- Earthfile | 15 +- cmd/flags.go | 8 + cmd/root.go | 12 +- docs/usage.md | 3 +- hacks/exit-on-changed-files.sh | 15 + pkg/affected_apps/best_effort.go | 6 +- pkg/conftest/conftest.go | 28 +- pkg/events/check.go | 6 +- pkg/gitlab_client/pipeline.go | 1 - pkg/local/gitRepos.go | 94 + pkg/repo/repo.go | 5 +- pkg/validate/validate.go | 102 +- pkg/validate/validate_test.go | 21 +- policy/k8s-images.rego.example | 19 - policy/k8s-resources.rego | 42 - policy/k8s-security.rego | 87 - policy/lib/kubernetes.rego | 257 - .../v1.22.0/alertmanager-monitoring-v1.json | 1 - ...lertmanagerconfig-monitoring-v1alpha1.json | 1 - .../application-argoproj-v1alpha1.json | 1 - ...pplicationconfiguration-core-v1alpha2.json | 1 - .../applicationset-argoproj-v1alpha1.json | 1 - .../v1.22.0/appproject-argoproj-v1alpha1.json | 1 - schemas/v1.22.0/authcode-dex-v1.json | 1 - schemas/v1.22.0/authrequest-dex-v1.json | 1 - .../v1.22.0/awschaos-chaos-mesh-v1alpha1.json | 176 - .../awsnodetemplate-karpenter-v1alpha1.json | 1 - .../azurechaos-chaos-mesh-v1alpha1.json | 177 - schemas/v1.22.0/backup-velero-v1.json | 1 - .../backupstoragelocation-velero-v1.json | 1 - .../blockchaos-chaos-mesh-v1alpha1.json | 293 - .../v1.22.0/certificate-cert-manager-v1.json | 1 - .../certificaterequest-cert-manager-v1.json | 1 - schemas/v1.22.0/challenge-acme-v1.json | 1 - ...ternalsecret-external-secrets-v1beta1.json | 1 - .../clusterissuer-cert-manager-v1.json | 1 - ...secretstore-external-secrets-v1alpha1.json | 1 - ...rsecretstore-external-secrets-v1beta1.json | 1 - ...ertriggerauthentication-keda-v1alpha1.json | 1 - schemas/v1.22.0/component-core-v1alpha2.json | 1 - schemas/v1.22.0/config-config-v1alpha1.json | 1 - schemas/v1.22.0/connector-dex-v1.json | 1 - ...constrainttemplate-templates-v1alpha1.json | 1 - .../constrainttemplate-templates-v1beta1.json | 1 - .../containerizedworkload-core-v1alpha2.json | 1 - ...omresourcedefinition-apiextensions-v1.json | 48 - .../deletebackuprequest-velero-v1.json | 1 - schemas/v1.22.0/devicerequest-dex-v1.json | 1 - schemas/v1.22.0/devicetoken-dex-v1.json | 1 - .../v1.22.0/dnschaos-chaos-mesh-v1alpha1.json | 274 - .../v1.22.0/downloadrequest-velero-v1.json | 1 - schemas/v1.22.0/eniconfig-crd-v1alpha1.json | 1 - ...ernalsecret-external-secrets-v1alpha1.json | 1 - ...ternalsecret-external-secrets-v1beta1.json | 1 - .../externalsecret-kubernetes-client-v1.json | 1 - .../v1.22.0/gcpchaos-chaos-mesh-v1alpha1.json | 183 - .../v1.22.0/healthscope-core-v1alpha2.json | 1 - .../httpchaos-chaos-mesh-v1alpha1.json | 385 - .../ingressclassparams-elbv2-v1beta1.json | 1 - .../v1.22.0/iochaos-chaos-mesh-v1alpha1.json | 425 - schemas/v1.22.0/issuer-cert-manager-v1.json | 1 - .../v1.22.0/jvmchaos-chaos-mesh-v1alpha1.json | 326 - ...8s-allowed-repos-constraints-v1alpha1.json | 1 - ...k8s-allowed-repos-constraints-v1beta1.json | 1 - ...ted-version-kind-constraints-v1alpha1.json | 1 - ...ated-version-kind-constraints-v1beta1.json | 1 - ...low-mount-socket-constraints-v1alpha1.json | 1 - ...llow-mount-socket-constraints-v1beta1.json | 1 - ...tarting-deadline-constraints-v1alpha1.json | 1 - ...starting-deadline-constraints-v1beta1.json | 1 - ...ired-annotations-constraints-v1alpha1.json | 1 - ...uired-annotations-constraints-v1beta1.json | 1 - ...sbannedimagetags-constraints-v1alpha1.json | 1 - ...8sbannedimagetags-constraints-v1beta1.json | 1 - ...tartingdeadlines-constraints-v1alpha1.json | 1 - ...startingdeadlines-constraints-v1beta1.json | 1 - ...uiredannotations-constraints-v1alpha1.json | 1 - ...quiredannotations-constraints-v1beta1.json | 1 - ...8srequiredlabels-constraints-v1alpha1.json | 1 - ...k8srequiredlabels-constraints-v1beta1.json | 1 - .../kernelchaos-chaos-mesh-v1alpha1.json | 317 - .../kongclusterplugin-configuration-v1.json | 1 - .../kongconsumer-configuration-v1.json | 1 - .../kongcredential-configuration-v1.json | 1 - .../v1.22.0/kongingress-configuration-v1.json | 1 - .../v1.22.0/kongplugin-configuration-v1.json | 1 - .../manualscalertrait-core-v1alpha2.json | 1 - .../networkchaos-chaos-mesh-v1alpha1.json | 538 - schemas/v1.22.0/oauth2client-dex-v1.json | 1 - schemas/v1.22.0/offlinesessions-dex-v1.json | 1 - ...metrycollector-opentelemetry-v1alpha1.json | 2125 -- schemas/v1.22.0/order-acme-v1.json | 1 - schemas/v1.22.0/password-dex-v1.json | 1 - .../physicalmachine-chaos-mesh-v1alpha1.json | 33 - ...sicalmachinechaos-chaos-mesh-v1alpha1.json | 1286 -- .../v1.22.0/podchaos-chaos-mesh-v1alpha1.json | 274 - .../podhttpchaos-chaos-mesh-v1alpha1.json | 209 - .../podiochaos-chaos-mesh-v1alpha1.json | 235 - schemas/v1.22.0/podmonitor-monitoring-v1.json | 1 - .../podnetworkchaos-chaos-mesh-v1alpha1.json | 290 - .../v1.22.0/podvolumebackup-velero-v1.json | 1 - .../v1.22.0/podvolumerestore-velero-v1.json | 1 - .../preoomkiller-preoomkiller-v1alpha1.json | 46 - schemas/v1.22.0/probe-monitoring-v1.json | 1 - schemas/v1.22.0/prometheus-monitoring-v1.json | 1 - .../v1.22.0/prometheusrule-monitoring-v1.json | 1 - .../prometheusservicelevel-sloth-v1.json | 1 - .../provisioner-karpenter-v1alpha5.json | 1 - schemas/v1.22.0/refreshtoken-dex-v1.json | 1 - .../v1.22.0/resticrepository-velero-v1.json | 1 - schemas/v1.22.0/restore-velero-v1.json | 1 - schemas/v1.22.0/scaledjob-keda-v1alpha1.json | 1 - .../v1.22.0/scaledobject-keda-v1alpha1.json | 1 - .../v1.22.0/schedule-chaos-mesh-v1alpha1.json | 13012 ----------- schemas/v1.22.0/schedule-velero-v1.json | 1 - .../scopedefinition-core-v1alpha2.json | 1 - .../secretproviderclass-secrets-store-v1.json | 1 - ...tproviderclass-secrets-store-v1alpha1.json | 1 - ...oviderclasspodstatus-secrets-store-v1.json | 1 - ...classpodstatus-secrets-store-v1alpha1.json | 1 - ...secretstore-external-secrets-v1alpha1.json | 1 - .../secretstore-external-secrets-v1beta1.json | 1 - ...uritygrouppolicy-vpcresources-v1beta1.json | 1 - .../serverstatusrequest-velero-v1.json | 1 - .../v1.22.0/servicemonitor-monitoring-v1.json | 1 - schemas/v1.22.0/signingkey-dex-v1.json | 1 - .../v1.22.0/sopssecret-isindir-v1alpha1.json | 1 - .../statuscheck-chaos-mesh-v1alpha1.json | 199 - .../stresschaos-chaos-mesh-v1alpha1.json | 355 - .../targetgroupbinding-elbv2-v1alpha1.json | 1 - .../targetgroupbinding-elbv2-v1beta1.json | 1 - .../tcpingress-configuration-v1beta1.json | 1 - .../v1.22.0/thanosruler-monitoring-v1.json | 1 - .../timechaos-chaos-mesh-v1alpha1.json | 270 - .../traitdefinition-core-v1alpha2.json | 1 - .../triggerauthentication-keda-v1alpha1.json | 1 - schemas/v1.22.0/vault-vault-v1alpha1.json | 1 - .../verticalpodautoscaler-autoscaling-v1.json | 293 - ...icalpodautoscaler-autoscaling-v1beta2.json | 255 - ...odautoscalercheckpoint-autoscaling-v1.json | 105 - ...oscalercheckpoint-autoscaling-v1beta2.json | 105 - .../volumesnapshotlocation-velero-v1.json | 1 - .../v1.22.0/workflow-chaos-mesh-v1alpha1.json | 9541 -------- .../workflownode-chaos-mesh-v1alpha1.json | 19077 ---------------- .../workloaddefinition-core-v1alpha2.json | 1 - .../v1.23.0/alertmanager-monitoring-v1.json | 1 - ...lertmanagerconfig-monitoring-v1alpha1.json | 1 - .../v1.23.0/awschaos-chaos-mesh-v1alpha1.json | 1 - .../azurechaos-chaos-mesh-v1alpha1.json | 1 - schemas/v1.23.0/backup-velero-v1.json | 1 - .../backupstoragelocation-velero-v1.json | 1 - .../blockchaos-chaos-mesh-v1alpha1.json | 1 - .../catalogsource-operators-v1alpha1.json | 1 - .../v1.23.0/certificate-cert-manager-v1.json | 1 - .../certificaterequest-cert-manager-v1.json | 1 - schemas/v1.23.0/challenge-acme-v1.json | 1 - .../clusterissuer-cert-manager-v1.json | 1 - ...sterserviceversion-operators-v1alpha1.json | 1 - ...ertriggerauthentication-keda-v1alpha1.json | 1 - schemas/v1.23.0/config-config-v1alpha1.json | 1 - .../constrainttemplate-templates-v1beta1.json | 1 - .../deletebackuprequest-velero-v1.json | 1 - .../v1.23.0/dnschaos-chaos-mesh-v1alpha1.json | 1 - .../v1.23.0/downloadrequest-velero-v1.json | 1 - schemas/v1.23.0/eniconfig-crd-v1alpha1.json | 1 - ...ernalsecret-external-secrets-v1alpha1.json | 1 - ...ternalsecret-external-secrets-v1beta1.json | 1 - .../externalsecret-kubernetes-client-v1.json | 1 - .../v1.23.0/gcpchaos-chaos-mesh-v1alpha1.json | 1 - .../httpchaos-chaos-mesh-v1alpha1.json | 1 - ...lassparameters-configuration-v1alpha1.json | 1 - .../ingressclassparams-elbv2-v1beta1.json | 1 - .../installplan-operators-v1alpha1.json | 1 - .../v1.23.0/iochaos-chaos-mesh-v1alpha1.json | 1 - schemas/v1.23.0/issuer-cert-manager-v1.json | 1 - .../v1.23.0/jvmchaos-chaos-mesh-v1alpha1.json | 1 - .../kernelchaos-chaos-mesh-v1alpha1.json | 1 - .../kongclusterplugin-configuration-v1.json | 1 - .../kongconsumer-configuration-v1.json | 1 - .../v1.23.0/kongingress-configuration-v1.json | 1 - .../v1.23.0/kongplugin-configuration-v1.json | 1 - .../networkchaos-chaos-mesh-v1alpha1.json | 1 - schemas/v1.23.0/operator-operators-v1.json | 1 - .../operatorcondition-operators-v1.json | 1 - .../v1.23.0/operatorgroup-operators-v1.json | 1 - .../operatorgroup-operators-v1alpha2.json | 1 - schemas/v1.23.0/order-acme-v1.json | 1 - .../physicalmachine-chaos-mesh-v1alpha1.json | 1 - ...sicalmachinechaos-chaos-mesh-v1alpha1.json | 1 - .../v1.23.0/podchaos-chaos-mesh-v1alpha1.json | 1 - .../podhttpchaos-chaos-mesh-v1alpha1.json | 1 - .../podiochaos-chaos-mesh-v1alpha1.json | 1 - schemas/v1.23.0/podmonitor-monitoring-v1.json | 1 - .../podnetworkchaos-chaos-mesh-v1alpha1.json | 1 - .../v1.23.0/podvolumebackup-velero-v1.json | 1 - .../v1.23.0/podvolumerestore-velero-v1.json | 1 - .../preoomkiller-preoomkiller-v1alpha1.json | 1 - schemas/v1.23.0/probe-monitoring-v1.json | 1 - schemas/v1.23.0/prometheus-monitoring-v1.json | 1 - .../v1.23.0/prometheusrule-monitoring-v1.json | 1 - .../prometheusservicelevel-sloth-v1.json | 1 - .../v1.23.0/resticrepository-velero-v1.json | 1 - schemas/v1.23.0/restore-velero-v1.json | 1 - schemas/v1.23.0/scaledjob-keda-v1alpha1.json | 1 - .../v1.23.0/scaledobject-keda-v1alpha1.json | 1 - .../v1.23.0/schedule-chaos-mesh-v1alpha1.json | 1 - schemas/v1.23.0/schedule-velero-v1.json | 1 - .../secretproviderclass-secrets-store-v1.json | 1 - ...tproviderclass-secrets-store-v1alpha1.json | 1 - ...oviderclasspodstatus-secrets-store-v1.json | 1 - ...classpodstatus-secrets-store-v1alpha1.json | 1 - ...secretstore-external-secrets-v1alpha1.json | 1 - .../secretstore-external-secrets-v1beta1.json | 1 - ...uritygrouppolicy-vpcresources-v1beta1.json | 1 - .../serverstatusrequest-velero-v1.json | 1 - .../v1.23.0/servicemonitor-monitoring-v1.json | 1 - .../v1.23.0/sopssecret-isindir-v1alpha1.json | 1 - .../statuscheck-chaos-mesh-v1alpha1.json | 1 - .../stresschaos-chaos-mesh-v1alpha1.json | 1 - .../subscription-operators-v1alpha1.json | 1 - .../targetgroupbinding-elbv2-v1alpha1.json | 1 - .../targetgroupbinding-elbv2-v1beta1.json | 1 - .../tcpingress-configuration-v1beta1.json | 1 - .../v1.23.0/thanosruler-monitoring-v1.json | 1 - .../timechaos-chaos-mesh-v1alpha1.json | 1 - .../triggerauthentication-keda-v1alpha1.json | 1 - .../udpingress-configuration-v1beta1.json | 1 - schemas/v1.23.0/vault-vault-v1alpha1.json | 1 - .../verticalpodautoscaler-autoscaling-v1.json | 1 - ...icalpodautoscaler-autoscaling-v1beta2.json | 1 - ...odautoscalercheckpoint-autoscaling-v1.json | 1 - ...oscalercheckpoint-autoscaling-v1beta2.json | 1 - .../volumesnapshotlocation-velero-v1.json | 1 - .../v1.23.0/workflow-chaos-mesh-v1alpha1.json | 1 - .../workflownode-chaos-mesh-v1alpha1.json | 1 - telemetry/telemetry.go | 4 +- 238 files changed, 235 insertions(+), 51555 deletions(-) create mode 100644 .editorconfig create mode 100755 hacks/exit-on-changed-files.sh create mode 100644 pkg/local/gitRepos.go delete mode 100644 policy/k8s-images.rego.example delete mode 100644 policy/k8s-resources.rego delete mode 100644 policy/k8s-security.rego delete mode 100644 policy/lib/kubernetes.rego delete mode 100644 schemas/v1.22.0/alertmanager-monitoring-v1.json delete mode 100644 schemas/v1.22.0/alertmanagerconfig-monitoring-v1alpha1.json delete mode 100644 schemas/v1.22.0/application-argoproj-v1alpha1.json delete mode 100644 schemas/v1.22.0/applicationconfiguration-core-v1alpha2.json delete mode 100644 schemas/v1.22.0/applicationset-argoproj-v1alpha1.json delete mode 100644 schemas/v1.22.0/appproject-argoproj-v1alpha1.json delete mode 100644 schemas/v1.22.0/authcode-dex-v1.json delete mode 100644 schemas/v1.22.0/authrequest-dex-v1.json delete mode 100644 schemas/v1.22.0/awschaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/awsnodetemplate-karpenter-v1alpha1.json delete mode 100644 schemas/v1.22.0/azurechaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/backup-velero-v1.json delete mode 100644 schemas/v1.22.0/backupstoragelocation-velero-v1.json delete mode 100644 schemas/v1.22.0/blockchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/certificate-cert-manager-v1.json delete mode 100644 schemas/v1.22.0/certificaterequest-cert-manager-v1.json delete mode 100644 schemas/v1.22.0/challenge-acme-v1.json delete mode 100644 schemas/v1.22.0/clusterexternalsecret-external-secrets-v1beta1.json delete mode 100644 schemas/v1.22.0/clusterissuer-cert-manager-v1.json delete mode 100644 schemas/v1.22.0/clustersecretstore-external-secrets-v1alpha1.json delete mode 100644 schemas/v1.22.0/clustersecretstore-external-secrets-v1beta1.json delete mode 100644 schemas/v1.22.0/clustertriggerauthentication-keda-v1alpha1.json delete mode 100644 schemas/v1.22.0/component-core-v1alpha2.json delete mode 100644 schemas/v1.22.0/config-config-v1alpha1.json delete mode 100644 schemas/v1.22.0/connector-dex-v1.json delete mode 100644 schemas/v1.22.0/constrainttemplate-templates-v1alpha1.json delete mode 100644 schemas/v1.22.0/constrainttemplate-templates-v1beta1.json delete mode 100644 schemas/v1.22.0/containerizedworkload-core-v1alpha2.json delete mode 100644 schemas/v1.22.0/customresourcedefinition-apiextensions-v1.json delete mode 100644 schemas/v1.22.0/deletebackuprequest-velero-v1.json delete mode 100644 schemas/v1.22.0/devicerequest-dex-v1.json delete mode 100644 schemas/v1.22.0/devicetoken-dex-v1.json delete mode 100644 schemas/v1.22.0/dnschaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/downloadrequest-velero-v1.json delete mode 100644 schemas/v1.22.0/eniconfig-crd-v1alpha1.json delete mode 100644 schemas/v1.22.0/externalsecret-external-secrets-v1alpha1.json delete mode 100644 schemas/v1.22.0/externalsecret-external-secrets-v1beta1.json delete mode 100644 schemas/v1.22.0/externalsecret-kubernetes-client-v1.json delete mode 100644 schemas/v1.22.0/gcpchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/healthscope-core-v1alpha2.json delete mode 100644 schemas/v1.22.0/httpchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/ingressclassparams-elbv2-v1beta1.json delete mode 100644 schemas/v1.22.0/iochaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/issuer-cert-manager-v1.json delete mode 100644 schemas/v1.22.0/jvmchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8s-allowed-repos-constraints-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8s-allowed-repos-constraints-v1beta1.json delete mode 100644 schemas/v1.22.0/k8s-deprecated-version-kind-constraints-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8s-deprecated-version-kind-constraints-v1beta1.json delete mode 100644 schemas/v1.22.0/k8s-disallow-mount-socket-constraints-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8s-disallow-mount-socket-constraints-v1beta1.json delete mode 100644 schemas/v1.22.0/k8s-minimum-starting-deadline-constraints-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8s-minimum-starting-deadline-constraints-v1beta1.json delete mode 100644 schemas/v1.22.0/k8s-required-annotations-constraints-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8s-required-annotations-constraints-v1beta1.json delete mode 100644 schemas/v1.22.0/k8sbannedimagetags-constraints-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8sbannedimagetags-constraints-v1beta1.json delete mode 100644 schemas/v1.22.0/k8sminimumstartingdeadlines-constraints-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8sminimumstartingdeadlines-constraints-v1beta1.json delete mode 100644 schemas/v1.22.0/k8srequiredannotations-constraints-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8srequiredannotations-constraints-v1beta1.json delete mode 100644 schemas/v1.22.0/k8srequiredlabels-constraints-v1alpha1.json delete mode 100644 schemas/v1.22.0/k8srequiredlabels-constraints-v1beta1.json delete mode 100644 schemas/v1.22.0/kernelchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/kongclusterplugin-configuration-v1.json delete mode 100644 schemas/v1.22.0/kongconsumer-configuration-v1.json delete mode 100644 schemas/v1.22.0/kongcredential-configuration-v1.json delete mode 100644 schemas/v1.22.0/kongingress-configuration-v1.json delete mode 100644 schemas/v1.22.0/kongplugin-configuration-v1.json delete mode 100644 schemas/v1.22.0/manualscalertrait-core-v1alpha2.json delete mode 100644 schemas/v1.22.0/networkchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/oauth2client-dex-v1.json delete mode 100644 schemas/v1.22.0/offlinesessions-dex-v1.json delete mode 100644 schemas/v1.22.0/opentelemetrycollector-opentelemetry-v1alpha1.json delete mode 100644 schemas/v1.22.0/order-acme-v1.json delete mode 100644 schemas/v1.22.0/password-dex-v1.json delete mode 100644 schemas/v1.22.0/physicalmachine-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/physicalmachinechaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/podchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/podhttpchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/podiochaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/podmonitor-monitoring-v1.json delete mode 100644 schemas/v1.22.0/podnetworkchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/podvolumebackup-velero-v1.json delete mode 100644 schemas/v1.22.0/podvolumerestore-velero-v1.json delete mode 100644 schemas/v1.22.0/preoomkiller-preoomkiller-v1alpha1.json delete mode 100644 schemas/v1.22.0/probe-monitoring-v1.json delete mode 100644 schemas/v1.22.0/prometheus-monitoring-v1.json delete mode 100644 schemas/v1.22.0/prometheusrule-monitoring-v1.json delete mode 100644 schemas/v1.22.0/prometheusservicelevel-sloth-v1.json delete mode 100644 schemas/v1.22.0/provisioner-karpenter-v1alpha5.json delete mode 100644 schemas/v1.22.0/refreshtoken-dex-v1.json delete mode 100644 schemas/v1.22.0/resticrepository-velero-v1.json delete mode 100644 schemas/v1.22.0/restore-velero-v1.json delete mode 100644 schemas/v1.22.0/scaledjob-keda-v1alpha1.json delete mode 100644 schemas/v1.22.0/scaledobject-keda-v1alpha1.json delete mode 100644 schemas/v1.22.0/schedule-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/schedule-velero-v1.json delete mode 100644 schemas/v1.22.0/scopedefinition-core-v1alpha2.json delete mode 100644 schemas/v1.22.0/secretproviderclass-secrets-store-v1.json delete mode 100644 schemas/v1.22.0/secretproviderclass-secrets-store-v1alpha1.json delete mode 100644 schemas/v1.22.0/secretproviderclasspodstatus-secrets-store-v1.json delete mode 100644 schemas/v1.22.0/secretproviderclasspodstatus-secrets-store-v1alpha1.json delete mode 100644 schemas/v1.22.0/secretstore-external-secrets-v1alpha1.json delete mode 100644 schemas/v1.22.0/secretstore-external-secrets-v1beta1.json delete mode 100644 schemas/v1.22.0/securitygrouppolicy-vpcresources-v1beta1.json delete mode 100644 schemas/v1.22.0/serverstatusrequest-velero-v1.json delete mode 100644 schemas/v1.22.0/servicemonitor-monitoring-v1.json delete mode 100644 schemas/v1.22.0/signingkey-dex-v1.json delete mode 100644 schemas/v1.22.0/sopssecret-isindir-v1alpha1.json delete mode 100644 schemas/v1.22.0/statuscheck-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/stresschaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/targetgroupbinding-elbv2-v1alpha1.json delete mode 100644 schemas/v1.22.0/targetgroupbinding-elbv2-v1beta1.json delete mode 100644 schemas/v1.22.0/tcpingress-configuration-v1beta1.json delete mode 100644 schemas/v1.22.0/thanosruler-monitoring-v1.json delete mode 100644 schemas/v1.22.0/timechaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/traitdefinition-core-v1alpha2.json delete mode 100644 schemas/v1.22.0/triggerauthentication-keda-v1alpha1.json delete mode 100644 schemas/v1.22.0/vault-vault-v1alpha1.json delete mode 100644 schemas/v1.22.0/verticalpodautoscaler-autoscaling-v1.json delete mode 100644 schemas/v1.22.0/verticalpodautoscaler-autoscaling-v1beta2.json delete mode 100644 schemas/v1.22.0/verticalpodautoscalercheckpoint-autoscaling-v1.json delete mode 100644 schemas/v1.22.0/verticalpodautoscalercheckpoint-autoscaling-v1beta2.json delete mode 100644 schemas/v1.22.0/volumesnapshotlocation-velero-v1.json delete mode 100644 schemas/v1.22.0/workflow-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/workflownode-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.22.0/workloaddefinition-core-v1alpha2.json delete mode 100644 schemas/v1.23.0/alertmanager-monitoring-v1.json delete mode 100644 schemas/v1.23.0/alertmanagerconfig-monitoring-v1alpha1.json delete mode 100644 schemas/v1.23.0/awschaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/azurechaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/backup-velero-v1.json delete mode 100644 schemas/v1.23.0/backupstoragelocation-velero-v1.json delete mode 100644 schemas/v1.23.0/blockchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/catalogsource-operators-v1alpha1.json delete mode 100644 schemas/v1.23.0/certificate-cert-manager-v1.json delete mode 100644 schemas/v1.23.0/certificaterequest-cert-manager-v1.json delete mode 100644 schemas/v1.23.0/challenge-acme-v1.json delete mode 100644 schemas/v1.23.0/clusterissuer-cert-manager-v1.json delete mode 100644 schemas/v1.23.0/clusterserviceversion-operators-v1alpha1.json delete mode 100644 schemas/v1.23.0/clustertriggerauthentication-keda-v1alpha1.json delete mode 100644 schemas/v1.23.0/config-config-v1alpha1.json delete mode 100644 schemas/v1.23.0/constrainttemplate-templates-v1beta1.json delete mode 100644 schemas/v1.23.0/deletebackuprequest-velero-v1.json delete mode 100644 schemas/v1.23.0/dnschaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/downloadrequest-velero-v1.json delete mode 100644 schemas/v1.23.0/eniconfig-crd-v1alpha1.json delete mode 100644 schemas/v1.23.0/externalsecret-external-secrets-v1alpha1.json delete mode 100644 schemas/v1.23.0/externalsecret-external-secrets-v1beta1.json delete mode 100644 schemas/v1.23.0/externalsecret-kubernetes-client-v1.json delete mode 100644 schemas/v1.23.0/gcpchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/httpchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/ingressclassparameters-configuration-v1alpha1.json delete mode 100644 schemas/v1.23.0/ingressclassparams-elbv2-v1beta1.json delete mode 100644 schemas/v1.23.0/installplan-operators-v1alpha1.json delete mode 100644 schemas/v1.23.0/iochaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/issuer-cert-manager-v1.json delete mode 100644 schemas/v1.23.0/jvmchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/kernelchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/kongclusterplugin-configuration-v1.json delete mode 100644 schemas/v1.23.0/kongconsumer-configuration-v1.json delete mode 100644 schemas/v1.23.0/kongingress-configuration-v1.json delete mode 100644 schemas/v1.23.0/kongplugin-configuration-v1.json delete mode 100644 schemas/v1.23.0/networkchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/operator-operators-v1.json delete mode 100644 schemas/v1.23.0/operatorcondition-operators-v1.json delete mode 100644 schemas/v1.23.0/operatorgroup-operators-v1.json delete mode 100644 schemas/v1.23.0/operatorgroup-operators-v1alpha2.json delete mode 100644 schemas/v1.23.0/order-acme-v1.json delete mode 100644 schemas/v1.23.0/physicalmachine-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/physicalmachinechaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/podchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/podhttpchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/podiochaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/podmonitor-monitoring-v1.json delete mode 100644 schemas/v1.23.0/podnetworkchaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/podvolumebackup-velero-v1.json delete mode 100644 schemas/v1.23.0/podvolumerestore-velero-v1.json delete mode 100644 schemas/v1.23.0/preoomkiller-preoomkiller-v1alpha1.json delete mode 100644 schemas/v1.23.0/probe-monitoring-v1.json delete mode 100644 schemas/v1.23.0/prometheus-monitoring-v1.json delete mode 100644 schemas/v1.23.0/prometheusrule-monitoring-v1.json delete mode 100644 schemas/v1.23.0/prometheusservicelevel-sloth-v1.json delete mode 100644 schemas/v1.23.0/resticrepository-velero-v1.json delete mode 100644 schemas/v1.23.0/restore-velero-v1.json delete mode 100644 schemas/v1.23.0/scaledjob-keda-v1alpha1.json delete mode 100644 schemas/v1.23.0/scaledobject-keda-v1alpha1.json delete mode 100644 schemas/v1.23.0/schedule-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/schedule-velero-v1.json delete mode 100644 schemas/v1.23.0/secretproviderclass-secrets-store-v1.json delete mode 100644 schemas/v1.23.0/secretproviderclass-secrets-store-v1alpha1.json delete mode 100644 schemas/v1.23.0/secretproviderclasspodstatus-secrets-store-v1.json delete mode 100644 schemas/v1.23.0/secretproviderclasspodstatus-secrets-store-v1alpha1.json delete mode 100644 schemas/v1.23.0/secretstore-external-secrets-v1alpha1.json delete mode 100644 schemas/v1.23.0/secretstore-external-secrets-v1beta1.json delete mode 100644 schemas/v1.23.0/securitygrouppolicy-vpcresources-v1beta1.json delete mode 100644 schemas/v1.23.0/serverstatusrequest-velero-v1.json delete mode 100644 schemas/v1.23.0/servicemonitor-monitoring-v1.json delete mode 100644 schemas/v1.23.0/sopssecret-isindir-v1alpha1.json delete mode 100644 schemas/v1.23.0/statuscheck-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/stresschaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/subscription-operators-v1alpha1.json delete mode 100644 schemas/v1.23.0/targetgroupbinding-elbv2-v1alpha1.json delete mode 100644 schemas/v1.23.0/targetgroupbinding-elbv2-v1beta1.json delete mode 100644 schemas/v1.23.0/tcpingress-configuration-v1beta1.json delete mode 100644 schemas/v1.23.0/thanosruler-monitoring-v1.json delete mode 100644 schemas/v1.23.0/timechaos-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/triggerauthentication-keda-v1alpha1.json delete mode 100644 schemas/v1.23.0/udpingress-configuration-v1beta1.json delete mode 100644 schemas/v1.23.0/vault-vault-v1alpha1.json delete mode 100644 schemas/v1.23.0/verticalpodautoscaler-autoscaling-v1.json delete mode 100644 schemas/v1.23.0/verticalpodautoscaler-autoscaling-v1beta2.json delete mode 100644 schemas/v1.23.0/verticalpodautoscalercheckpoint-autoscaling-v1.json delete mode 100644 schemas/v1.23.0/verticalpodautoscalercheckpoint-autoscaling-v1beta2.json delete mode 100644 schemas/v1.23.0/volumesnapshotlocation-velero-v1.json delete mode 100644 schemas/v1.23.0/workflow-chaos-mesh-v1alpha1.json delete mode 100644 schemas/v1.23.0/workflownode-chaos-mesh-v1alpha1.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..2495ff7e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +[*.go] +ij_any_blank_lines_after_imports = 1 +ij_go_add_parentheses_for_single_import = true +ij_go_GROUP_CURRENT_PROJECT_IMPORTS = true +ij_go_group_stdlib_imports = true +ij_go_import_sorting = gofmt +ij_go_move_all_imports_in_one_declaration = true +ij_go_move_all_stdlib_imports_in_one_group = true +ij_go_remove_redundant_import_aliases = true +ij_go_use_back_quotes_for_imports = false diff --git a/.github/workflows/on_pull-request_docs.yaml b/.github/workflows/on_pull-request_docs.yaml index c95bf0ab..852e2eca 100644 --- a/.github/workflows/on_pull-request_docs.yaml +++ b/.github/workflows/on_pull-request_docs.yaml @@ -27,16 +27,4 @@ jobs: --GOLANG_VERSION="${{ env.GOLANG_TOOL_VERSION }}" - name: verify that the checked in file has not changed - run: | - #!/usr/bin/env bash - - exitCode=0 - - # Log the actual diff for debugging purposes - git diff --name-only | cat - if ! git diff --exit-code --quiet; then - echo "Please run 'earthly +rebuild-docs' and commit the results to this PR" - exitCode=1 - fi - - exit $exitCode + run: ./hacks/exit-on-changed-files.sh "Please run 'earthly +rebuild-docs' and commit the results to this PR" diff --git a/Earthfile b/Earthfile index f3dc76a1..ff06b283 100644 --- a/Earthfile +++ b/Earthfile @@ -5,6 +5,7 @@ test: BUILD +ci-helm ci-golang: + BUILD +fmt-golang BUILD +lint-golang BUILD +validate-golang BUILD +test-golang @@ -105,10 +106,7 @@ docker: WORKDIR /app - COPY ./policy ./policy - VOLUME /app/policy - - COPY ./schemas ./schemas + VOLUME /app/policies VOLUME /app/schemas COPY (+build-binary/kubechecks --GOARCH=amd64 --VARIANT=$TARGETVARIANT) . @@ -148,6 +146,15 @@ docker-debug: SAVE IMAGE --push $CI_REGISTRY_IMAGE +fmt-golang: + FROM +go-deps + + WORKDIR /src + COPY . /src + + RUN go fmt \ + && ./hacks/exit-on-changed-files.sh + lint-golang: ARG STATICCHECK_VERSION="2023.1.3" diff --git a/cmd/flags.go b/cmd/flags.go index dec203c4..d1fb2298 100644 --- a/cmd/flags.go +++ b/cmd/flags.go @@ -40,10 +40,18 @@ func newStringOpts() DocOpt[string] { return DocOpt[string]{} } +func newStringSliceOpts() DocOpt[[]string] { + return DocOpt[[]string]{} +} + func stringFlag(flags *pflag.FlagSet, name, usage string, opts ...DocOpt[string]) { addFlag(name, usage, opts, flags.String, flags.StringP) } +func stringSliceFlag(flags *pflag.FlagSet, name, usage string, opts ...DocOpt[[]string]) { + addFlag(name, usage, opts, flags.StringArray, flags.StringArrayP) +} + func addFlag[D any]( name, usage string, opts []DocOpt[D], diff --git a/cmd/root.go b/cmd/root.go index ef717751..403f3a54 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -10,6 +10,7 @@ import ( "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/viper" + "github.com/zapier/kubechecks/telemetry" ) @@ -79,14 +80,17 @@ func init() { withChoices("hide", "delete"). withDefault("hide"), ) - stringFlag(flags, "schemas-location", "Sets the schema location. Can be local path or git repository.", - newStringOpts(). - withDefault("./schemas")) + stringSliceFlag(flags, "schemas-location", "Sets schema locations to be used for every check request. Can be common paths inside the repos being checked or git urls in either git or http(s) format.", + newStringSliceOpts(). + withDefault([]string{"./schemas"})) + + stringSliceFlag(flags, "policies-location", "Sets rego policy locations to be used for every check request. Can be common path inside the repos being checked or git urls in either git or http(s) format.", + newStringSliceOpts(). + withDefault([]string{"./policies"})) panicIfError(viper.BindPFlags(flags)) setupLogOutput() - } func initTelemetry(ctx context.Context) (*telemetry.OperatorTelemetry, error) { diff --git a/docs/usage.md b/docs/usage.md index cc65ee2a..1d00f503 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -50,7 +50,8 @@ The full list of supported environment variables is described below: |`KUBECHECKS_OTEL_COLLECTOR_PORT`|The OpenTelemetry collector port.|| |`KUBECHECKS_OTEL_ENABLED`|Enable OpenTelemetry.|`false`| |`KUBECHECKS_PERSIST_LOG_LEVEL`|Persists the set log level down to other module loggers.|`false`| -|`KUBECHECKS_SCHEMAS_LOCATION`|Sets the schema location. Can be local path or git repository.|`./schemas`| +|`KUBECHECKS_POLICIES_LOCATION`|Sets a policies location to be used for every check request. Can be a common path inside the repo being checked or a git url in either git or http(s) format.|`[./policies]`| +|`KUBECHECKS_SCHEMAS_LOCATION`|Sets a schema location to be used for every check request. Can be a common path inside the repo being checked or a git url in either git or http(s) format.|`[./schemas]`| |`KUBECHECKS_SHOW_DEBUG_INFO`|Set to true to print debug info to the footer of MR comments.|`false`| |`KUBECHECKS_TIDY_OUTDATED_COMMENTS_MODE`|Sets the mode to use when tidying outdated comments. One of hide, delete.|`hide`| |`KUBECHECKS_VCS_BASE_URL`|VCS base url, useful if self hosting gitlab, enterprise github, etc.|| diff --git a/hacks/exit-on-changed-files.sh b/hacks/exit-on-changed-files.sh new file mode 100755 index 00000000..eb2f20de --- /dev/null +++ b/hacks/exit-on-changed-files.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +set -e + +exitCode=0 +message=$1 + +# Log the actual diff for debugging purposes +git diff --name-only | cat +if ! git diff --exit-code --quiet; then + echo "$message" + exitCode=1 +fi + +exit $exitCode diff --git a/pkg/affected_apps/best_effort.go b/pkg/affected_apps/best_effort.go index 705e29a9..70fe1c84 100644 --- a/pkg/affected_apps/best_effort.go +++ b/pkg/affected_apps/best_effort.go @@ -115,9 +115,9 @@ func isKustomizeApp(file string) bool { func isKustomizeBaseComponentsChange(file string) bool { return strings.Contains(file, "base/") || - strings.Contains(file, "bases/") || - strings.Contains(file, "components/") || - strings.Contains(file, "resources/") + strings.Contains(file, "bases/") || + strings.Contains(file, "components/") || + strings.Contains(file, "resources/") } func overlaysDir(file string) string { diff --git a/pkg/conftest/conftest.go b/pkg/conftest/conftest.go index a5b61a1e..6806b797 100644 --- a/pkg/conftest/conftest.go +++ b/pkg/conftest/conftest.go @@ -11,12 +11,14 @@ import ( "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" "github.com/olekukonko/tablewriter" "github.com/open-policy-agent/conftest/output" + "github.com/open-policy-agent/conftest/runner" "github.com/rs/zerolog/log" - "github.com/zapier/kubechecks/pkg" - "github.com/zapier/kubechecks/telemetry" + "github.com/spf13/viper" "go.opentelemetry.io/otel" - "github.com/open-policy-agent/conftest/runner" + "github.com/zapier/kubechecks/pkg" + "github.com/zapier/kubechecks/pkg/local" + "github.com/zapier/kubechecks/telemetry" ) var gitLabCommentFormat = ` @@ -32,6 +34,8 @@ var gitLabCommentFormat = ` const passedMessage = "\nPassed all policy checks." +var reposCache = local.NewReposDirectory() + // Conftest runs the conftest validation against an application in a given repository // path. It generates a summary string with the results, which can later be posted // as a GitLab comment. The validation checks resources against Zapier policies and @@ -45,12 +49,26 @@ func Conftest(ctx context.Context, app *v1alpha1.Application, repoPath string) ( log.Debug().Str("dir", confTestDir).Str("app", app.Name).Msg("running conftest in dir for application") - var r = runner.TestRunner{} + policiesLocations := viper.GetStringSlice("policies-location") + var locations []string + for _, policiesLocation := range policiesLocations { + log.Debug().Str("schemas-location", policiesLocation).Msg("viper") + schemaPath := reposCache.EnsurePath(ctx, repoPath, policiesLocation) + if schemaPath != "" { + locations = append(locations, schemaPath) + } + } + + if len(locations) == 0 { + return "no policies locations configured", nil + } + + var r runner.TestRunner r.NoColor = true r.AllNamespaces = true // PATH To Rego Polices - r.Policy = []string{"./policy"} + r.Policy = locations r.SuppressExceptions = false r.Trace = false diff --git a/pkg/events/check.go b/pkg/events/check.go index 50bff3c3..07eddb1d 100644 --- a/pkg/events/check.go +++ b/pkg/events/check.go @@ -344,7 +344,7 @@ func (ce *CheckEvent) processApp(ctx context.Context, app, dir string) error { grp, grpCtx := errgroup.WithContext(ctx) wrap := ce.createWrapper(span, grpCtx, app) - grp.Go(wrap("validating app against schema", ce.validateSchemas(grpCtx, app, k8sVersion, formattedManifests))) + grp.Go(wrap("validating app against schema", ce.validateSchemas(grpCtx, app, k8sVersion, ce.TempWorkingDir, formattedManifests))) grp.Go(wrap("generating diff for app", ce.generateDiff(grpCtx, app, manifests))) if viper.GetBool("enable-conftest") { @@ -431,9 +431,9 @@ func (ce *CheckEvent) generateDiff(ctx context.Context, app string, manifests [] } } -func (ce *CheckEvent) validateSchemas(ctx context.Context, app string, k8sVersion string, formattedManifests []string) func() (string, error) { +func (ce *CheckEvent) validateSchemas(ctx context.Context, app, k8sVersion, tempRepoPath string, formattedManifests []string) func() (string, error) { return func() (string, error) { - s, err := validate.ArgoCdAppValidate(ctx, app, k8sVersion, formattedManifests) + s, err := validate.ArgoCdAppValidate(ctx, app, k8sVersion, tempRepoPath, formattedManifests) if err != nil { return "", err } diff --git a/pkg/gitlab_client/pipeline.go b/pkg/gitlab_client/pipeline.go index 414c9dbf..4cb14cc4 100644 --- a/pkg/gitlab_client/pipeline.go +++ b/pkg/gitlab_client/pipeline.go @@ -1,7 +1,6 @@ package gitlab_client import ( - "github.com/rs/zerolog/log" "github.com/xanzy/go-gitlab" ) diff --git a/pkg/local/gitRepos.go b/pkg/local/gitRepos.go new file mode 100644 index 00000000..4036c83f --- /dev/null +++ b/pkg/local/gitRepos.go @@ -0,0 +1,94 @@ +package local + +import ( + "context" + "os" + "os/exec" + "path/filepath" + "strings" + "sync" + + "github.com/rs/zerolog/log" + + "github.com/zapier/kubechecks/pkg/repo" +) + +type ReposDirectory struct { + paths map[string]string + + mutex sync.Mutex +} + +func NewReposDirectory() *ReposDirectory { + rd := &ReposDirectory{ + paths: make(map[string]string), + } + + return rd +} + +func (rd *ReposDirectory) EnsurePath(ctx context.Context, tempRepoPath, location string) string { + if location == "" { + return "" + } + + if strings.HasPrefix(location, "https://") || strings.HasPrefix(location, "http://") || strings.HasPrefix(location, "git@") { + log.Debug().Str("location", location).Msg("registering remote repository") + localPath := rd.Register(ctx, location) + return localPath + } + + schemaPath := filepath.Join(tempRepoPath, location) + if stat, err := os.Stat(schemaPath); err == nil && stat.IsDir() { + log.Debug().Str("location", location).Msg("registering in-repo path") + return schemaPath + } else { + log.Warn().Str("location", location).Err(err).Msg("failed to find in-repo path") + } + + return "" +} + +func (rd *ReposDirectory) Register(ctx context.Context, cloneUrl string) string { + var ( + ok bool + repoDir string + ) + + rd.mutex.Lock() + defer rd.mutex.Unlock() + + repoDir, ok = rd.paths[cloneUrl] + if ok { + rd.fetchLatest() + return repoDir + } + + return rd.clone(ctx, cloneUrl) +} + +func (rd *ReposDirectory) fetchLatest() { + cmd := exec.Command("git", "pull") + err := cmd.Run() + if err != nil { + log.Err(err).Msg("failed to pull latest") + } +} + +func (rd *ReposDirectory) clone(ctx context.Context, cloneUrl string) string { + repoDir, err := os.MkdirTemp("/tmp", "schemas") + if err != nil { + log.Err(err).Msg("failed to make temp dir") + return "" + } + + r := repo.Repo{CloneURL: cloneUrl} + err = r.CloneRepoLocal(ctx, repoDir) + if err != nil { + log.Err(err).Str("clone-url", cloneUrl).Msg("failed to clone repository") + return "" + } + + rd.paths[cloneUrl] = repoDir + return repoDir +} diff --git a/pkg/repo/repo.go b/pkg/repo/repo.go index 5e0ac891..cc11f50c 100644 --- a/pkg/repo/repo.go +++ b/pkg/repo/repo.go @@ -15,13 +15,14 @@ import ( "github.com/pkg/errors" "github.com/rs/zerolog/log" "github.com/spf13/viper" - "github.com/zapier/kubechecks/telemetry" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" + + "github.com/zapier/kubechecks/telemetry" ) -// Represents a local Repostiory on disk, based off of a PR/MR +// Repo represents a local Repostiory on disk, based off of a PR/MR type Repo struct { BaseRef string // base ref is the branch that the PR is being merged into HeadRef string // head ref is the branch that the PR is coming from diff --git a/pkg/validate/validate.go b/pkg/validate/validate.go index 13f3b6c5..d9086bb9 100644 --- a/pkg/validate/validate.go +++ b/pkg/validate/validate.go @@ -7,21 +7,17 @@ import ( "os" "path/filepath" "strings" - "sync" - "github.com/robfig/cron/v3" "github.com/rs/zerolog/log" "github.com/spf13/viper" "github.com/yannh/kubeconform/pkg/validator" "go.opentelemetry.io/otel" "github.com/zapier/kubechecks/pkg" - "github.com/zapier/kubechecks/pkg/repo" - "github.com/zapier/kubechecks/telemetry" + "github.com/zapier/kubechecks/pkg/local" ) -var getSchemasOnce sync.Once // used to ensure we don't reauth this -var refreshSchemasOnce sync.Once +var reposCache = local.NewReposDirectory() const kubeconformCommentFormat = `
Show kubeconform report: %s @@ -32,70 +28,44 @@ const kubeconformCommentFormat = `
` -const inRepoSchemaLocation = "./schemas" -var localSchemasLocation string +func getSchemaLocations(ctx context.Context, tempRepoPath string) []string { + locations := []string{ + // schemas included in kubechecks + "default", -func getSchemaLocations() []string { - getSchemasOnce.Do(func() { - ctx := context.Background() - _, span := otel.Tracer("Kubechecks").Start(ctx, "GetSchemaLocations") - schemasLocation := viper.GetString("schemas-location") + // schemas collected globally + "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/", + } - var oldLocalSchemasLocation string - // Store the oldSchemasLocation for clean up afterwards - if localSchemasLocation != inRepoSchemaLocation { - oldLocalSchemasLocation = localSchemasLocation + // schemas configured globally + schemasLocations := viper.GetStringSlice("schemas-location") + for _, schemasLocation := range schemasLocations { + log.Debug().Str("schemas-location", schemasLocation).Msg("viper") + schemaPath := reposCache.EnsurePath(ctx, tempRepoPath, schemasLocation) + if schemaPath != "" { + locations = append(locations, schemaPath) } + } - localSchemasLocation = inRepoSchemaLocation - // if this is a git repo, we want to clone it locally - if strings.HasPrefix(schemasLocation, "https://") || strings.HasPrefix(schemasLocation, "http://") || strings.HasPrefix(schemasLocation, "git@") { - - tmpSchemasLocalDir, err := os.MkdirTemp("/tmp", "schemas") - if err != nil { - log.Err(err).Msg("failed to make temporary directory for downloading schemas") - telemetry.SetError(span, err, "failed to make temporary directory for downloading schemas") - return - } - - r := repo.Repo{CloneURL: schemasLocation} - err = r.CloneRepoLocal(ctx, tmpSchemasLocalDir) - if err != nil { - telemetry.SetError(span, err, fmt.Sprintf("failed to clone schemas repository %s", schemasLocation)) - log.Err(err).Msgf("failed to clone schemas repository %s", schemasLocation) - return - } - - log.Debug().Str("schemas-repo", schemasLocation).Msgf("Cloned schemas Repo %s to /tmp/schemas", schemasLocation) - localSchemasLocation = tmpSchemasLocalDir - - err = os.RemoveAll(oldLocalSchemasLocation) - if err != nil { - telemetry.SetError(span, err, "failed to clean up old schemas directory") - log.Err(err).Msg("failed to clean up old schemas directory") - } - - // This is a little function to allow getSchemaLocations to refresh daily by resetting the sync.Once mutex - refreshSchemasOnce.Do(func() { - c := cron.New() - c.AddFunc("@daily", func() { - log.Info().Msg("resetting schemas lock to allow refresh") - getSchemasOnce = *new(sync.Once) - }) - c.Start() - }) + for index := range locations { + location := locations[index] + if location == "default" { + continue } - }) - return []string{ - localSchemasLocation + `/{{ .NormalizedKubernetesVersion }}/{{ .ResourceKind }}{{ .KindSuffix }}.json`, - "default", - "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/{{ .NormalizedKubernetesVersion }}/{{ .ResourceKind }}{{ .KindSuffix }}.json", + if !strings.HasSuffix(location, "/") { + location += "/" + } + + location += "{{ .NormalizedKubernetesVersion }}/{{ .ResourceKind }}{{ .KindSuffix }}.json" + locations[index] = location } + + return locations } -func ArgoCdAppValidate(ctx context.Context, appName, targetKubernetesVersion string, appManifests []string) (string, error) { +func ArgoCdAppValidate(ctx context.Context, appName, targetKubernetesVersion, tempRepoPath string, appManifests []string) (string, error) { _, span := otel.Tracer("Kubechecks").Start(ctx, "ArgoCdAppValidate") defer span.End() @@ -110,11 +80,19 @@ func ArgoCdAppValidate(ctx context.Context, appName, targetKubernetesVersion str KubernetesVersion: targetKubernetesVersion, Strict: true, IgnoreMissingSchemas: false, + Debug: log.Debug().Enabled(), } - var outputString []string + var ( + outputString []string + schemaLocations = getSchemaLocations(ctx, tempRepoPath) + ) + + log.Debug().Msgf("cache location: %s", vOpts.Cache) + log.Debug().Msgf("target kubernetes version: %s", targetKubernetesVersion) + log.Debug().Msgf("schema locations: %s", strings.Join(schemaLocations, ", ")) - v, err := validator.New(getSchemaLocations(), vOpts) + v, err := validator.New(schemaLocations, vOpts) if err != nil { log.Error().Err(err).Msg("could not create kubeconform validator") return "", fmt.Errorf("could not create kubeconform validator: %v", err) diff --git a/pkg/validate/validate_test.go b/pkg/validate/validate_test.go index 165d3af5..37d2293e 100644 --- a/pkg/validate/validate_test.go +++ b/pkg/validate/validate_test.go @@ -1,10 +1,10 @@ package validate import ( + "context" "fmt" "os" "strings" - "sync" "testing" fixtures "github.com/go-git/go-git-fixtures/v4" @@ -14,26 +14,29 @@ import ( ) func TestDefaultGetSchemaLocations(t *testing.T) { - getSchemasOnce = *new(sync.Once) - schemaLocations := getSchemaLocations() + ctx := context.TODO() + schemaLocations := getSchemaLocations(ctx, "/some/other/path") // default schema location is "./schemas" - assert.Equal(t, "./schemas/{{ .NormalizedKubernetesVersion }}/{{ .ResourceKind }}{{ .KindSuffix }}.json", schemaLocations[0]) + assert.Len(t, schemaLocations, 2) + assert.Equal(t, "default", schemaLocations[0]) + assert.Equal(t, "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/{{ .NormalizedKubernetesVersion }}/{{ .ResourceKind }}{{ .KindSuffix }}.json", schemaLocations[1]) } func TestGetRemoteSchemaLocations(t *testing.T) { + ctx := context.TODO() + if os.Getenv("CI") == "" { t.Skip("Skipping testing. Only for CI environments") } - getSchemasOnce = *new(sync.Once) - - fixture := fixtures.Basic().One() + basic := fixtures.Basic() + fixture := basic.One() fmt.Println(fixture.URL) // t.Setenv("KUBECHECKS_SCHEMAS_LOCATION", fixture.URL) // doesn't work because viper needs to initialize from root, which doesn't happen - viper.Set("schemas-location", fixture.URL) - schemaLocations := getSchemaLocations() + viper.Set("schemas-location", []string{fixture.URL}) + schemaLocations := getSchemaLocations(ctx, "/some/other/path") hasTmpDirPrefix := strings.HasPrefix(schemaLocations[0], "/tmp/schemas") assert.Equal(t, hasTmpDirPrefix, true, "invalid schemas location. Schema location should have prefix /tmp/schemas but has %s", schemaLocations[0]) } diff --git a/policy/k8s-images.rego.example b/policy/k8s-images.rego.example deleted file mode 100644 index a9c6bf93..00000000 --- a/policy/k8s-images.rego.example +++ /dev/null @@ -1,19 +0,0 @@ -package k8s.images - -import data.lib.kubernetes as k8s - -is_approved_registry(image) { - startswith(image, ".dkr.ecr.us-east-1.amazonaws.com/") -} - -warn[msg] { - k8s.containers[container] - not is_approved_registry(container.image) - msg = k8s.format(sprintf("container [%s] in the %s [%s] has an image [%s], from an untrusted registry", [k8s.container_name(container), k8s.kind, k8s.name, container.image])) -} - -warn[msg] { - k8s.containers[container] - [image_name, "latest"] = k8s.split_image(container.image) - msg = k8s.format(sprintf("container [%s] in the %s [%s] has an image [%s], using the 'latest' tag", [k8s.container_name(container), k8s.kind, k8s.name, image_name])) -} \ No newline at end of file diff --git a/policy/k8s-resources.rego b/policy/k8s-resources.rego deleted file mode 100644 index 1d29c77b..00000000 --- a/policy/k8s-resources.rego +++ /dev/null @@ -1,42 +0,0 @@ -package k8s.resources - -import data.lib.kubernetes - -# https://kubesec.io/basics/containers-resources-limits-memory -violation[msg] { - kubernetes.containers[container] - not container.resources.limits.memory - msg = kubernetes.format(sprintf("%s in the %s %s does not have a memory limit set", [container.name, kubernetes.kind, kubernetes.name])) -} - -violation[msg] { - kubernetes.containers[container] - not container.resources.requests.memory - msg = kubernetes.format(sprintf("%s in the %s %s does not have a memory request set", [container.name, kubernetes.kind, kubernetes.name])) -} - -violation[msg] { - kubernetes.containers[container] - not container.resources.requests.cpu - msg = kubernetes.format(sprintf("%s in the %s %s does not have a CPU request set", [container.name, kubernetes.kind, kubernetes.name])) -} - -# Validate the requested CPU is less than CPU limit. -violation[msg] { - kubernetes.containers[container] - container.resources.limits.cpu - request := kubernetes.canonify_cpu(container.resources.requests.cpu) - limit := kubernetes.canonify_cpu(container.resources.limits.cpu) - request > limit - msg = kubernetes.format(sprintf("%s in the %s %s requests more CPU (%s) than it's limit (%s)", [container.name, kubernetes.kind, kubernetes.name, container.resources.requests.cpu, container.resources.limits.cpu])) -} - -# Validate requested memory is less than memory limit. -violation[msg] { - kubernetes.containers[container] - container.resources.limits.memory - request := kubernetes.canonify_mem(container.resources.requests.memory) - limit := kubernetes.canonify_mem(container.resources.limits.memory) - request > limit - msg = kubernetes.format(sprintf("%s in the %s %s requests more memory (%s) than it's limit (%s)", [container.name, kubernetes.kind, kubernetes.name, container.resources.requests.memory, container.resources.limits.memory])) -} \ No newline at end of file diff --git a/policy/k8s-security.rego b/policy/k8s-security.rego deleted file mode 100644 index 7151ce4f..00000000 --- a/policy/k8s-security.rego +++ /dev/null @@ -1,87 +0,0 @@ -package k8s.security - -import data.lib.kubernetes - -# https://kubesec.io/basics/containers-securitycontext-capabilities-add-index-sys-admin/ -warn[msg] { - kubernetes.containers[container] - kubernetes.added_capability(container, "CAP_SYS_ADMIN") - msg = kubernetes.format(sprintf("%s in the %s %s has SYS_ADMIN capabilties", [container.name, kubernetes.kind, kubernetes.name])) -} - -# https://kubesec.io/basics/containers-securitycontext-capabilities-drop-index-all/ -# warn[msg] { -# kubernetes.containers[container] -# not kubernetes.dropped_capability(container, "all") -# msg = kubernetes.format(sprintf("%s in the %s %s doesn't drop all capabilities", [container.name, kubernetes.kind, kubernetes.name])) -# } - -# https://kubesec.io/basics/containers-securitycontext-privileged-true/ -warn[msg] { - kubernetes.containers[container] - container.securityContext.privileged - msg = kubernetes.format(sprintf("%s in the %s %s is privileged", [container.name, kubernetes.kind, kubernetes.name])) -} - -# https://kubesec.io/basics/containers-securitycontext-readonlyrootfilesystem-true/ -# warn[msg] { -# kubernetes.containers[container] -# kubernetes.no_read_only_filesystem(container) -# msg = kubernetes.format(sprintf("%s in the %s %s is not using a read only root filesystem", [container.name, kubernetes.kind, kubernetes.name])) -# } - -# warn[msg] { -# kubernetes.containers[container] -# kubernetes.priviledge_escalation_allowed(container) -# msg = kubernetes.format(sprintf("%s in the %s %s allows priviledge escalation", [container.name, kubernetes.kind, kubernetes.name])) -# } - -# https://kubesec.io/basics/containers-securitycontext-runasnonroot-true/ -warn[msg] { - kubernetes.containers[container] - not container.securityContext.runAsNonRoot = true - not container.securityContext.runAsUser > 0 - msg = kubernetes.format(sprintf("%s in the %s %s is running as root", [container.name, kubernetes.kind, kubernetes.name])) -} - -# https://kubesec.io/basics/containers-securitycontext-runasuser/ -# warn[msg] { -# kubernetes.containers[container] -# container.securityContext.runAsUser < 10000 -# msg = kubernetes.format(sprintf("%s in the %s %s has a UID of less than 10000", [container.name, kubernetes.kind, kubernetes.name])) -# } - -# https://kubesec.io/basics/spec-hostaliases/ -warn[msg] { - kubernetes.pods[pod] - pod.spec.hostAliases - msg = kubernetes.format(sprintf("The %s %s is managing host aliases", [kubernetes.kind, kubernetes.name])) -} - -# https://kubesec.io/basics/spec-hostipc/ -warn[msg] { - kubernetes.pods[pod] - pod.spec.hostIPC - msg = kubernetes.format(sprintf("%s %s is sharing the host IPC namespace", [kubernetes.kind, kubernetes.name])) -} - -# https://kubesec.io/basics/spec-hostnetwork/ -warn[msg] { - kubernetes.pods[pod] - pod.spec.hostNetwork - msg = kubernetes.format(sprintf("The %s %s is connected to the host network", [kubernetes.kind, kubernetes.name])) -} - -# https://kubesec.io/basics/spec-hostpid/ -warn[msg] { - kubernetes.pods[pod] - pod.spec.hostPID - msg = kubernetes.format(sprintf("The %s %s is sharing the host PID", [kubernetes.kind, kubernetes.name])) -} - -# https://kubesec.io/basics/spec-volumes-hostpath-path-var-run-docker-sock/ -warn[msg] { - kubernetes.volumes[volume] - volume.hostpath.path = "/var/run/docker.sock" - msg = kubernetes.format(sprintf("The %s %s is mounting the Docker socket", [kubernetes.kind, kubernetes.name])) -} diff --git a/policy/lib/kubernetes.rego b/policy/lib/kubernetes.rego deleted file mode 100644 index 3ac3e8d2..00000000 --- a/policy/lib/kubernetes.rego +++ /dev/null @@ -1,257 +0,0 @@ -package lib.kubernetes - -default is_gatekeeper = false - -is_gatekeeper { - has_field(input, "review") - has_field(input.review, "object") -} - -object = input { - not is_gatekeeper -} - -object = input.review.object { - is_gatekeeper -} - -format(msg) = gatekeeper_format { - is_gatekeeper - gatekeeper_format = {"msg": msg} -} - -format(msg) = msg { - not is_gatekeeper -} - -name = object.metadata.name - -kind = object.kind - -is_service { - kind = "Service" -} - -is_deployment { - kind = "Deployment" -} - -is_daemonset { - kind = "DaemonSet" -} - -is_pod { - kind = "Pod" -} - -is_statefulset { - kind = "StatefulSet" -} - -split_image(image) = [image, "latest"] { - not contains(image, ":") -} - -split_image(image) = [image_name, tag] { - [image_name, tag] = split(image, ":") -} - -pod_containers(pod) = all_containers { - keys = {"containers", "initContainers"} - all_containers = [c | keys[k]; c = pod.spec[k][_]] -} - -containers[container] { - pods[pod] - all_containers = pod_containers(pod) - container = all_containers[_] -} - -containers[container] { - all_containers = pod_containers(object) - container = all_containers[_] -} - -pods[pod] { - is_daemonset - pod = object.spec.template -} - -pods[pod] { - is_deployment - pod = object.spec.template -} - -pods[pod] { - is_statefulset - pod = object.spec.template -} - -pods[pod] { - is_pod - pod = object -} - -volumes[volume] { - pods[pod] - volume = pod.spec.volumes[_] -} - -dropped_capability(container, cap) { - container.securityContext.capabilities.drop[_] == cap -} - -added_capability(container, cap) { - container.securityContext.capabilities.add[_] == cap -} - -has_field(obj, field) { - obj[field] -} - -no_read_only_filesystem(c) { - not has_field(c, "securityContext") -} - -no_read_only_filesystem(c) { - has_field(c, "securityContext") - not has_field(c.securityContext, "readOnlyRootFilesystem") -} - -priviledge_escalation_allowed(c) { - not has_field(c, "securityContext") -} - -priviledge_escalation_allowed(c) { - has_field(c, "securityContext") - has_field(c.securityContext, "allowPrivilegeEscalation") -} - -canonify_cpu(orig) = new { - is_number(orig) - new := orig * 1000 -} - -canonify_cpu(orig) = new { - not is_number(orig) - endswith(orig, "m") - new := to_number(replace(orig, "m", "")) -} - -canonify_cpu(orig) = new { - not is_number(orig) - not endswith(orig, "m") - re_match("^[0-9]+$", orig) - new := to_number(orig) * 1000 -} - -# 10 ** 21 -mem_multiple("E") = 1000000000000000000000 { true } - -# 10 ** 18 -mem_multiple("P") = 1000000000000000000 { true } - -# 10 ** 15 -mem_multiple("T") = 1000000000000000 { true } - -# 10 ** 12 -mem_multiple("G") = 1000000000000 { true } - -# 10 ** 9 -mem_multiple("M") = 1000000000 { true } - -# 10 ** 6 -mem_multiple("k") = 1000000 { true } - -# 10 ** 3 -mem_multiple("") = 1000 { true } - -# Kubernetes accepts millibyte precision when it probably shouldn't. -# https://github.com/kubernetes/kubernetes/issues/28741 -# 10 ** 0 -mem_multiple("m") = 1 { true } - -# 1000 * 2 ** 10 -mem_multiple("Ki") = 1024000 { true } - -# 1000 * 2 ** 20 -mem_multiple("Mi") = 1048576000 { true } - -# 1000 * 2 ** 30 -mem_multiple("Gi") = 1073741824000 { true } - -# 1000 * 2 ** 40 -mem_multiple("Ti") = 1099511627776000 { true } - -# 1000 * 2 ** 50 -mem_multiple("Pi") = 1125899906842624000 { true } - -# 1000 * 2 ** 60 -mem_multiple("Ei") = 1152921504606846976000 { true } - -get_suffix(mem) = suffix { - not is_string(mem) - suffix := "" -} - -get_suffix(mem) = suffix { - is_string(mem) - count(mem) > 0 - suffix := substring(mem, count(mem) - 1, -1) - mem_multiple(suffix) -} - -get_suffix(mem) = suffix { - is_string(mem) - count(mem) > 1 - suffix := substring(mem, count(mem) - 2, -1) - mem_multiple(suffix) -} - -get_suffix(mem) = suffix { - is_string(mem) - count(mem) > 1 - not mem_multiple(substring(mem, count(mem) - 1, -1)) - not mem_multiple(substring(mem, count(mem) - 2, -1)) - suffix := "" -} - -get_suffix(mem) = suffix { - is_string(mem) - count(mem) == 1 - not mem_multiple(substring(mem, count(mem) - 1, -1)) - suffix := "" -} - -get_suffix(mem) = suffix { - is_string(mem) - count(mem) == 0 - suffix := "" -} - -canonify_mem(orig) = new { - is_number(orig) - new := orig * 1000 -} - -canonify_mem(orig) = new { - not is_number(orig) - suffix := get_suffix(orig) - raw := replace(orig, suffix, "") - re_match("^[0-9]+$", raw) - new := to_number(raw) * mem_multiple(suffix) -} - -has_name(container) { - has_field(container, "name") -} - -container_name(container) = name { - has_name(container) - name := container.name -} - -container_name(container) = name { - not has_name(container) - name := "initContainer" -} \ No newline at end of file diff --git a/schemas/v1.22.0/alertmanager-monitoring-v1.json b/schemas/v1.22.0/alertmanager-monitoring-v1.json deleted file mode 100644 index 2f861b65..00000000 --- a/schemas/v1.22.0/alertmanager-monitoring-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "Alertmanager describes an Alertmanager cluster.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "Specification of the desired behavior of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": {"additionalPeers": {"description": "AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.", "items": {"type": "string"}, "type": "array"}, "affinity": {"description": "If specified, the pod's scheduling constraints.", "properties": {"nodeAffinity": {"description": "Describes node affinity scheduling rules for the pod.", "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": {"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": {"description": "A node selector term, associated with the corresponding weight.", "properties": {"matchExpressions": {"description": "A list of node selector requirements by node's labels.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "weight": {"description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["preference", "weight"], "type": "object"}, "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 an update), the system may or may not try to eventually evict the pod from its node.", "properties": {"nodeSelectorTerms": {"description": "Required. A list of node selector terms. The terms are ORed.", "items": {"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": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}}, "required": ["nodeSelectorTerms"], "type": "object"}}, "type": "object"}, "podAffinity": {"description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}, "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)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "alertmanagerConfigNamespaceSelector": {"description": "Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "alertmanagerConfigSelector": {"description": "AlertmanagerConfigs to be selected for to merge and configure Alertmanager with.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "alertmanagerConfiguration": {"description": "EXPERIMENTAL: alertmanagerConfiguration specifies the global Alertmanager configuration. If defined, it takes precedence over the `configSecret` field. This field may change in future releases.", "properties": {"name": {"description": "The name of the AlertmanagerConfig resource which is used to generate the global configuration. It must be defined in the same namespace as the Alertmanager object. The operator will not enforce a `namespace` label for routes and inhibition rules.", "minLength": 1, "type": "string"}}, "type": "object"}, "baseImage": {"description": "Base image that is used to deploy pods, without tag. Deprecated: use 'image' instead", "type": "string"}, "clusterAdvertiseAddress": {"description": "ClusterAdvertiseAddress is the explicit address to advertise in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918", "type": "string"}, "clusterGossipInterval": {"description": "Interval between gossip attempts.", "type": "string"}, "clusterPeerTimeout": {"description": "Timeout for cluster peering.", "type": "string"}, "clusterPushpullInterval": {"description": "Interval between pushpull attempts.", "type": "string"}, "configMaps": {"description": "ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. The ConfigMaps are mounted into /etc/alertmanager/configmaps/.", "items": {"type": "string"}, "type": "array"}, "configSecret": {"description": "ConfigSecret is the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains the configuration for this Alertmanager instance. If empty, it defaults to 'alertmanager-'. \n The Alertmanager configuration should be available under the `alertmanager.yaml` key. Additional keys from the original secret are copied to the generated secret. \n If either the secret or the `alertmanager.yaml` key is missing, the operator provisions an Alertmanager configuration with one empty receiver (effectively dropping alert notifications).", "type": "string"}, "containers": {"description": "Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an Alertmanager pod. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `alertmanager` and `config-reloader`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.", "items": {"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"}, "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"}, "env": {"description": "List of environment variables to set in the container. Cannot be updated.", "items": {"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"}, "valueFrom": {"description": "Source for the environment variable's value. Cannot be used if value is not empty.", "properties": {"configMapKeyRef": {"description": "Selects a key of 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "fieldRef": {"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.", "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"}}, "required": ["fieldPath"], "type": "object"}, "resourceFieldRef": {"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.", "properties": {"containerName": {"description": "Container name: required for volumes, optional for env vars", "type": "string"}, "divisor": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "resource": {"description": "Required: resource to select", "type": "string"}}, "required": ["resource"], "type": "object"}, "secretKeyRef": {"description": "Selects a key of a secret in the pod's namespace", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}}, "required": ["name"], "type": "object"}, "type": "array"}, "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": {"description": "EnvFromSource represents the source of a set of ConfigMaps", "properties": {"configMapRef": {"description": "The ConfigMap to select from", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap must be defined", "type": "boolean"}}, "type": "object"}, "prefix": {"description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", "type": "string"}, "secretRef": {"description": "The Secret to select from", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret must be defined", "type": "boolean"}}, "type": "object"}}, "type": "object"}, "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"}, "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": {"description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", "properties": {"postStart": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "tcpSocket": {"description": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}}, "type": "object"}, "preStop": {"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 Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). 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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "tcpSocket": {"description": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}}, "type": "object"}}, "type": "object"}, "livenessProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "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": {"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": {"default": "TCP", "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", "type": "string"}}, "required": ["containerPort"], "type": "object"}, "type": "array", "x-kubernetes-list-map-keys": ["containerPort", "protocol"], "x-kubernetes-list-type": "map"}, "readinessProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "resources": {"description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "properties": {"limits": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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"}, "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/", "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 Note that this field cannot be set when spec.os.name is windows.", "type": "boolean"}, "capabilities": {"description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.", "properties": {"add": {"description": "Added capabilities", "items": {"description": "Capability represent POSIX capabilities type", "type": "string"}, "type": "array"}, "drop": {"description": "Removed capabilities", "items": {"description": "Capability represent POSIX capabilities type", "type": "string"}, "type": "array"}}, "type": "object"}, "privileged": {"description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "type": "string"}, "readOnlyRootFilesystem": {"description": "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "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"}, "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. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer"}, "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. Note that this field cannot be set when spec.os.name is windows.", "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"}, "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"}}, "type": "object"}, "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. Note that this field cannot be set when spec.os.name is windows.", "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 Localhost - 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": ["type"], "type": "object"}, "windowsOptions": {"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. Note that this field cannot be set when spec.os.name is linux.", "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"}, "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"}}, "type": "object"}}, "type": "object"}, "startupProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "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": {"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"}}, "required": ["devicePath", "name"], "type": "object"}, "type": "array"}, "volumeMounts": {"description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", "items": {"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"}, "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"}, "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"}}, "required": ["mountPath", "name"], "type": "object"}, "type": "array"}, "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": ["name"], "type": "object"}, "type": "array"}, "externalUrl": {"description": "The external URL the Alertmanager instances will be available under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name.", "type": "string"}, "forceEnableClusterMode": {"description": "ForceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica. Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each.", "type": "boolean"}, "image": {"description": "Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Alertmanager is being configured.", "type": "string"}, "imagePullSecrets": {"description": "An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod", "items": {"description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}, "type": "array"}, "initContainers": {"description": "InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the Alertmanager configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ Using initContainers for any use case other then secret fetching is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.", "items": {"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"}, "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"}, "env": {"description": "List of environment variables to set in the container. Cannot be updated.", "items": {"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"}, "valueFrom": {"description": "Source for the environment variable's value. Cannot be used if value is not empty.", "properties": {"configMapKeyRef": {"description": "Selects a key of 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "fieldRef": {"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.", "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"}}, "required": ["fieldPath"], "type": "object"}, "resourceFieldRef": {"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.", "properties": {"containerName": {"description": "Container name: required for volumes, optional for env vars", "type": "string"}, "divisor": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "resource": {"description": "Required: resource to select", "type": "string"}}, "required": ["resource"], "type": "object"}, "secretKeyRef": {"description": "Selects a key of a secret in the pod's namespace", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}}, "required": ["name"], "type": "object"}, "type": "array"}, "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": {"description": "EnvFromSource represents the source of a set of ConfigMaps", "properties": {"configMapRef": {"description": "The ConfigMap to select from", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap must be defined", "type": "boolean"}}, "type": "object"}, "prefix": {"description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", "type": "string"}, "secretRef": {"description": "The Secret to select from", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret must be defined", "type": "boolean"}}, "type": "object"}}, "type": "object"}, "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"}, "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": {"description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", "properties": {"postStart": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "tcpSocket": {"description": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}}, "type": "object"}, "preStop": {"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 Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). 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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "tcpSocket": {"description": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}}, "type": "object"}}, "type": "object"}, "livenessProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "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": {"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": {"default": "TCP", "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", "type": "string"}}, "required": ["containerPort"], "type": "object"}, "type": "array", "x-kubernetes-list-map-keys": ["containerPort", "protocol"], "x-kubernetes-list-type": "map"}, "readinessProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "resources": {"description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "properties": {"limits": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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"}, "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/", "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 Note that this field cannot be set when spec.os.name is windows.", "type": "boolean"}, "capabilities": {"description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.", "properties": {"add": {"description": "Added capabilities", "items": {"description": "Capability represent POSIX capabilities type", "type": "string"}, "type": "array"}, "drop": {"description": "Removed capabilities", "items": {"description": "Capability represent POSIX capabilities type", "type": "string"}, "type": "array"}}, "type": "object"}, "privileged": {"description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "type": "string"}, "readOnlyRootFilesystem": {"description": "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "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"}, "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. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer"}, "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. Note that this field cannot be set when spec.os.name is windows.", "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"}, "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"}}, "type": "object"}, "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. Note that this field cannot be set when spec.os.name is windows.", "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 Localhost - 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": ["type"], "type": "object"}, "windowsOptions": {"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. Note that this field cannot be set when spec.os.name is linux.", "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"}, "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"}}, "type": "object"}}, "type": "object"}, "startupProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "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": {"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"}}, "required": ["devicePath", "name"], "type": "object"}, "type": "array"}, "volumeMounts": {"description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", "items": {"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"}, "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"}, "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"}}, "required": ["mountPath", "name"], "type": "object"}, "type": "array"}, "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": ["name"], "type": "object"}, "type": "array"}, "listenLocal": {"description": "ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. Note this is only for the Alertmanager UI, not the gossip communication.", "type": "boolean"}, "logFormat": {"description": "Log format for Alertmanager to be configured with.", "enum": ["", "logfmt", "json"], "type": "string"}, "logLevel": {"description": "Log level for Alertmanager to be configured with.", "enum": ["", "debug", "info", "warn", "error"], "type": "string"}, "minReadySeconds": {"description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate.", "format": "int32", "type": "integer"}, "nodeSelector": {"additionalProperties": {"type": "string"}, "description": "Define which Nodes the Pods are scheduled on.", "type": "object"}, "paused": {"description": "If set to true all actions on the underlying managed objects are not goint to be performed, except for delete actions.", "type": "boolean"}, "podMetadata": {"description": "PodMetadata configures Labels and Annotations which are propagated to the alertmanager pods.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", "type": "object"}, "name": {"description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string"}}, "type": "object"}, "portName": {"description": "Port name used for the pods and governing service. This defaults to web", "type": "string"}, "priorityClassName": {"description": "Priority class assigned to the Pods", "type": "string"}, "replicas": {"description": "Size is the expected size of the alertmanager cluster. The controller will eventually make the size of the running cluster equal to the expected size.", "format": "int32", "type": "integer"}, "resources": {"description": "Define resources requests and limits for single Pods.", "properties": {"limits": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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"}, "retention": {"description": "Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours).", "type": "string"}, "routePrefix": {"description": "The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`.", "type": "string"}, "secrets": {"description": "Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. The Secrets are mounted into /etc/alertmanager/secrets/.", "items": {"type": "string"}, "type": "array"}, "securityContext": {"description": "SecurityContext holds pod-level security attributes and common container settings. This defaults to the default 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 1. 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 If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer"}, "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. Note that this field cannot be set when spec.os.name is windows.", "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"}, "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"}}, "type": "object"}, "seccompProfile": {"description": "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.", "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 Localhost - 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": ["type"], "type": "object"}, "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. Note that this field cannot be set when spec.os.name is windows.", "items": {"format": "int64", "type": "integer"}, "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. Note that this field cannot be set when spec.os.name is windows.", "items": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "windowsOptions": {"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. Note that this field cannot be set when spec.os.name is linux.", "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"}, "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"}}, "type": "object"}}, "type": "object"}, "serviceAccountName": {"description": "ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.", "type": "string"}, "sha": {"description": "SHA of Alertmanager container image to be deployed. Defaults to the value of `version`. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use 'image' instead. The image digest can be specified as part of the image URL.", "type": "string"}, "storage": {"description": "Storage is the definition of how storage will be used by the Alertmanager instances.", "properties": {"disableMountSubPath": {"description": "Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary. DisableMountSubPath allows to remove any subPath usage in volume mounts.", "type": "boolean"}, "emptyDir": {"description": "EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir", "properties": {"medium": {"description": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "type": "string"}, "sizeLimit": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}}, "type": "object"}, "ephemeral": {"description": "EphemeralVolumeSource to be used by the Prometheus StatefulSets. This is a beta field in k8s 1.21, for lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes", "properties": {"volumeClaimTemplate": {"description": "Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \n Required, must not be nil.", "properties": {"metadata": {"description": "May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.", "type": "object"}, "spec": {"description": "The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.", "properties": {"accessModes": {"description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "items": {"type": "string"}, "type": "array"}, "dataSource": {"description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object"}, "dataSourceRef": {"description": "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object"}, "resources": {"description": "Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", "properties": {"limits": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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"}, "selector": {"description": "A label query over volumes to consider for binding.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "storageClassName": {"description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", "type": "string"}, "volumeMode": {"description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", "type": "string"}, "volumeName": {"description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", "type": "string"}}, "type": "object"}}, "required": ["spec"], "type": "object"}}, "type": "object"}, "volumeClaimTemplate": {"description": "A PVC spec to be used by the Prometheus StatefulSets.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"description": "EmbeddedMetadata contains metadata relevant to an EmbeddedResource.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", "type": "object"}, "name": {"description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string"}}, "type": "object"}, "spec": {"description": "Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "properties": {"accessModes": {"description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "items": {"type": "string"}, "type": "array"}, "dataSource": {"description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object"}, "dataSourceRef": {"description": "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object"}, "resources": {"description": "Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", "properties": {"limits": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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"}, "selector": {"description": "A label query over volumes to consider for binding.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "storageClassName": {"description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", "type": "string"}, "volumeMode": {"description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", "type": "string"}, "volumeName": {"description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", "type": "string"}}, "type": "object"}, "status": {"description": "Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "properties": {"accessModes": {"description": "AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "items": {"type": "string"}, "type": "array"}, "allocatedResources": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "description": "The storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.", "type": "object"}, "capacity": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "description": "Represents the actual resources of the underlying volume.", "type": "object"}, "conditions": {"description": "Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.", "items": {"description": "PersistentVolumeClaimCondition contails details about state of pvc", "properties": {"lastProbeTime": {"description": "Last time we probed the condition.", "format": "date-time", "type": "string"}, "lastTransitionTime": {"description": "Last time the condition transitioned from one status to another.", "format": "date-time", "type": "string"}, "message": {"description": "Human-readable message indicating details about last transition.", "type": "string"}, "reason": {"description": "Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized.", "type": "string"}, "status": {"type": "string"}, "type": {"description": "PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type", "type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array"}, "phase": {"description": "Phase represents the current phase of PersistentVolumeClaim.", "type": "string"}, "resizeStatus": {"description": "ResizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "type": "object"}, "tag": {"description": "Tag of Alertmanager container image to be deployed. Defaults to the value of `version`. Version is ignored if Tag is set. Deprecated: use 'image' instead. The image tag can be specified as part of the image URL.", "type": "string"}, "tolerations": {"description": "If specified, the pod's tolerations.", "items": {"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"}, "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"}, "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"}, "type": "array"}, "topologySpreadConstraints": {"description": "If specified, the pod's topology spread constraints.", "items": {"description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", "properties": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment 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": ["maxSkew", "topologyKey", "whenUnsatisfiable"], "type": "object"}, "type": "array"}, "version": {"description": "Version the cluster should be on.", "type": "string"}, "volumeMounts": {"description": "VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the alertmanager container, that are generated as a result of StorageSpec objects.", "items": {"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"}, "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"}, "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"}}, "required": ["mountPath", "name"], "type": "object"}, "type": "array"}, "volumes": {"description": "Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.", "items": {"description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", "properties": {"awsElasticBlockStore": {"description": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "properties": {"fsType": {"description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine", "type": "string"}, "partition": {"description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).", "format": "int32", "type": "integer"}, "readOnly": {"description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "type": "boolean"}, "volumeID": {"description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "type": "string"}}, "required": ["volumeID"], "type": "object"}, "azureDisk": {"description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "properties": {"cachingMode": {"description": "Host Caching mode: None, Read Only, Read Write.", "type": "string"}, "diskName": {"description": "The Name of the data disk in the blob storage", "type": "string"}, "diskURI": {"description": "The URI the data disk in the blob storage", "type": "string"}, "fsType": {"description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", "type": "string"}, "kind": {"description": "Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared", "type": "string"}, "readOnly": {"description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean"}}, "required": ["diskName", "diskURI"], "type": "object"}, "azureFile": {"description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "properties": {"readOnly": {"description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean"}, "secretName": {"description": "the name of secret that contains Azure Storage Account Name and Key", "type": "string"}, "shareName": {"description": "Share Name", "type": "string"}}, "required": ["secretName", "shareName"], "type": "object"}, "cephfs": {"description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", "properties": {"monitors": {"description": "Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", "items": {"type": "string"}, "type": "array"}, "path": {"description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /", "type": "string"}, "readOnly": {"description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", "type": "boolean"}, "secretFile": {"description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", "type": "string"}, "secretRef": {"description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}, "user": {"description": "Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", "type": "string"}}, "required": ["monitors"], "type": "object"}, "cinder": {"description": "Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", "properties": {"fsType": {"description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", "type": "string"}, "readOnly": {"description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", "type": "boolean"}, "secretRef": {"description": "Optional: points to a secret object containing parameters used to connect to OpenStack.", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}, "volumeID": {"description": "volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", "type": "string"}}, "required": ["volumeID"], "type": "object"}, "configMap": {"description": "ConfigMap represents a configMap that should populate this volume", "properties": {"defaultMode": {"description": "Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "items": {"description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", "items": {"description": "Maps a string key to a path within a volume.", "properties": {"key": {"description": "The key to project.", "type": "string"}, "mode": {"description": "Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "path": {"description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", "type": "string"}}, "required": ["key", "path"], "type": "object"}, "type": "array"}, "name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its keys must be defined", "type": "boolean"}}, "type": "object"}, "csi": {"description": "CSI (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).", "properties": {"driver": {"description": "Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.", "type": "string"}, "fsType": {"description": "Filesystem type to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.", "type": "string"}, "nodePublishSecretRef": {"description": "NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}, "readOnly": {"description": "Specifies a read-only configuration for the volume. Defaults to false (read/write).", "type": "boolean"}, "volumeAttributes": {"additionalProperties": {"type": "string"}, "description": "VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.", "type": "object"}}, "required": ["driver"], "type": "object"}, "downwardAPI": {"description": "DownwardAPI represents downward API about the pod that should populate this volume", "properties": {"defaultMode": {"description": "Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "items": {"description": "Items is a list of downward API volume file", "items": {"description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", "properties": {"fieldRef": {"description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", "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"}}, "required": ["fieldPath"], "type": "object"}, "mode": {"description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "path": {"description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", "type": "string"}, "resourceFieldRef": {"description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", "properties": {"containerName": {"description": "Container name: required for volumes, optional for env vars", "type": "string"}, "divisor": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "resource": {"description": "Required: resource to select", "type": "string"}}, "required": ["resource"], "type": "object"}}, "required": ["path"], "type": "object"}, "type": "array"}}, "type": "object"}, "emptyDir": {"description": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "properties": {"medium": {"description": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "type": "string"}, "sizeLimit": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}}, "type": "object"}, "ephemeral": {"description": "Ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \n A pod can use both types of ephemeral volumes and persistent volumes at the same time.", "properties": {"volumeClaimTemplate": {"description": "Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \n Required, must not be nil.", "properties": {"metadata": {"description": "May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.", "type": "object"}, "spec": {"description": "The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.", "properties": {"accessModes": {"description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "items": {"type": "string"}, "type": "array"}, "dataSource": {"description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object"}, "dataSourceRef": {"description": "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object"}, "resources": {"description": "Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", "properties": {"limits": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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"}, "selector": {"description": "A label query over volumes to consider for binding.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "storageClassName": {"description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", "type": "string"}, "volumeMode": {"description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", "type": "string"}, "volumeName": {"description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", "type": "string"}}, "type": "object"}}, "required": ["spec"], "type": "object"}}, "type": "object"}, "fc": {"description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", "properties": {"fsType": {"description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine", "type": "string"}, "lun": {"description": "Optional: FC target lun number", "format": "int32", "type": "integer"}, "readOnly": {"description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean"}, "targetWWNs": {"description": "Optional: FC target worldwide names (WWNs)", "items": {"type": "string"}, "type": "array"}, "wwids": {"description": "Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.", "items": {"type": "string"}, "type": "array"}}, "type": "object"}, "flexVolume": {"description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.", "properties": {"driver": {"description": "Driver is the name of the driver to use for this volume.", "type": "string"}, "fsType": {"description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.", "type": "string"}, "options": {"additionalProperties": {"type": "string"}, "description": "Optional: Extra command options if any.", "type": "object"}, "readOnly": {"description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean"}, "secretRef": {"description": "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}}, "required": ["driver"], "type": "object"}, "flocker": {"description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running", "properties": {"datasetName": {"description": "Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated", "type": "string"}, "datasetUUID": {"description": "UUID of the dataset. This is unique identifier of a Flocker dataset", "type": "string"}}, "type": "object"}, "gcePersistentDisk": {"description": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", "properties": {"fsType": {"description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine", "type": "string"}, "partition": {"description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", "format": "int32", "type": "integer"}, "pdName": {"description": "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", "type": "string"}, "readOnly": {"description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", "type": "boolean"}}, "required": ["pdName"], "type": "object"}, "gitRepo": {"description": "GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.", "properties": {"directory": {"description": "Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.", "type": "string"}, "repository": {"description": "Repository URL", "type": "string"}, "revision": {"description": "Commit hash for the specified revision.", "type": "string"}}, "required": ["repository"], "type": "object"}, "glusterfs": {"description": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md", "properties": {"endpoints": {"description": "EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string"}, "path": {"description": "Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string"}, "readOnly": {"description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "boolean"}}, "required": ["endpoints", "path"], "type": "object"}, "hostPath": {"description": "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.", "properties": {"path": {"description": "Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", "type": "string"}, "type": {"description": "Type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", "type": "string"}}, "required": ["path"], "type": "object"}, "iscsi": {"description": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md", "properties": {"chapAuthDiscovery": {"description": "whether support iSCSI Discovery CHAP authentication", "type": "boolean"}, "chapAuthSession": {"description": "whether support iSCSI Session CHAP authentication", "type": "boolean"}, "fsType": {"description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine", "type": "string"}, "initiatorName": {"description": "Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.", "type": "string"}, "iqn": {"description": "Target iSCSI Qualified Name.", "type": "string"}, "iscsiInterface": {"description": "iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", "type": "string"}, "lun": {"description": "iSCSI Target Lun number.", "format": "int32", "type": "integer"}, "portals": {"description": "iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", "items": {"type": "string"}, "type": "array"}, "readOnly": {"description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", "type": "boolean"}, "secretRef": {"description": "CHAP Secret for iSCSI target and initiator authentication", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}, "targetPortal": {"description": "iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", "type": "string"}}, "required": ["iqn", "lun", "targetPortal"], "type": "object"}, "name": {"description": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}, "nfs": {"description": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "properties": {"path": {"description": "Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string"}, "readOnly": {"description": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "boolean"}, "server": {"description": "Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string"}}, "required": ["path", "server"], "type": "object"}, "persistentVolumeClaim": {"description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "properties": {"claimName": {"description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "type": "string"}, "readOnly": {"description": "Will force the ReadOnly setting in VolumeMounts. Default false.", "type": "boolean"}}, "required": ["claimName"], "type": "object"}, "photonPersistentDisk": {"description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", "properties": {"fsType": {"description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", "type": "string"}, "pdID": {"description": "ID that identifies Photon Controller persistent disk", "type": "string"}}, "required": ["pdID"], "type": "object"}, "portworxVolume": {"description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", "properties": {"fsType": {"description": "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.", "type": "string"}, "readOnly": {"description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean"}, "volumeID": {"description": "VolumeID uniquely identifies a Portworx volume", "type": "string"}}, "required": ["volumeID"], "type": "object"}, "projected": {"description": "Items for all in one resources secrets, configmaps, and downward API", "properties": {"defaultMode": {"description": "Mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "sources": {"description": "list of volume projections", "items": {"description": "Projection that may be projected along with other supported volume types", "properties": {"configMap": {"description": "information about the configMap data to project", "properties": {"items": {"description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", "items": {"description": "Maps a string key to a path within a volume.", "properties": {"key": {"description": "The key to project.", "type": "string"}, "mode": {"description": "Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "path": {"description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", "type": "string"}}, "required": ["key", "path"], "type": "object"}, "type": "array"}, "name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its keys must be defined", "type": "boolean"}}, "type": "object"}, "downwardAPI": {"description": "information about the downwardAPI data to project", "properties": {"items": {"description": "Items is a list of DownwardAPIVolume file", "items": {"description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", "properties": {"fieldRef": {"description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", "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"}}, "required": ["fieldPath"], "type": "object"}, "mode": {"description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "path": {"description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", "type": "string"}, "resourceFieldRef": {"description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", "properties": {"containerName": {"description": "Container name: required for volumes, optional for env vars", "type": "string"}, "divisor": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "resource": {"description": "Required: resource to select", "type": "string"}}, "required": ["resource"], "type": "object"}}, "required": ["path"], "type": "object"}, "type": "array"}}, "type": "object"}, "secret": {"description": "information about the secret data to project", "properties": {"items": {"description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", "items": {"description": "Maps a string key to a path within a volume.", "properties": {"key": {"description": "The key to project.", "type": "string"}, "mode": {"description": "Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "path": {"description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", "type": "string"}}, "required": ["key", "path"], "type": "object"}, "type": "array"}, "name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "type": "object"}, "serviceAccountToken": {"description": "information about the serviceAccountToken data to project", "properties": {"audience": {"description": "Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.", "type": "string"}, "expirationSeconds": {"description": "ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.", "format": "int64", "type": "integer"}, "path": {"description": "Path is the path relative to the mount point of the file to project the token into.", "type": "string"}}, "required": ["path"], "type": "object"}}, "type": "object"}, "type": "array"}}, "type": "object"}, "quobyte": {"description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", "properties": {"group": {"description": "Group to map volume access to Default is no group", "type": "string"}, "readOnly": {"description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.", "type": "boolean"}, "registry": {"description": "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes", "type": "string"}, "tenant": {"description": "Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin", "type": "string"}, "user": {"description": "User to map volume access to Defaults to serivceaccount user", "type": "string"}, "volume": {"description": "Volume is a string that references an already created Quobyte volume by name.", "type": "string"}}, "required": ["registry", "volume"], "type": "object"}, "rbd": {"description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md", "properties": {"fsType": {"description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine", "type": "string"}, "image": {"description": "The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string"}, "keyring": {"description": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string"}, "monitors": {"description": "A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "items": {"type": "string"}, "type": "array"}, "pool": {"description": "The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string"}, "readOnly": {"description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "boolean"}, "secretRef": {"description": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}, "user": {"description": "The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string"}}, "required": ["image", "monitors"], "type": "object"}, "scaleIO": {"description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", "properties": {"fsType": {"description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".", "type": "string"}, "gateway": {"description": "The host address of the ScaleIO API Gateway.", "type": "string"}, "protectionDomain": {"description": "The name of the ScaleIO Protection Domain for the configured storage.", "type": "string"}, "readOnly": {"description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean"}, "secretRef": {"description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}, "sslEnabled": {"description": "Flag to enable/disable SSL communication with Gateway, default false", "type": "boolean"}, "storageMode": {"description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", "type": "string"}, "storagePool": {"description": "The ScaleIO Storage Pool associated with the protection domain.", "type": "string"}, "system": {"description": "The name of the storage system as configured in ScaleIO.", "type": "string"}, "volumeName": {"description": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", "type": "string"}}, "required": ["gateway", "secretRef", "system"], "type": "object"}, "secret": {"description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", "properties": {"defaultMode": {"description": "Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "items": {"description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", "items": {"description": "Maps a string key to a path within a volume.", "properties": {"key": {"description": "The key to project.", "type": "string"}, "mode": {"description": "Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", "format": "int32", "type": "integer"}, "path": {"description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", "type": "string"}}, "required": ["key", "path"], "type": "object"}, "type": "array"}, "optional": {"description": "Specify whether the Secret or its keys must be defined", "type": "boolean"}, "secretName": {"description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", "type": "string"}}, "type": "object"}, "storageos": {"description": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.", "properties": {"fsType": {"description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", "type": "string"}, "readOnly": {"description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean"}, "secretRef": {"description": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}, "volumeName": {"description": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", "type": "string"}, "volumeNamespace": {"description": "VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", "type": "string"}}, "type": "object"}, "vsphereVolume": {"description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", "properties": {"fsType": {"description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", "type": "string"}, "storagePolicyID": {"description": "Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", "type": "string"}, "storagePolicyName": {"description": "Storage Policy Based Management (SPBM) profile name.", "type": "string"}, "volumePath": {"description": "Path that identifies vSphere volume vmdk", "type": "string"}}, "required": ["volumePath"], "type": "object"}}, "required": ["name"], "type": "object"}, "type": "array"}}, "type": "object"}, "status": {"description": "Most recent observed status of the Alertmanager cluster. Read-only. Not included when requesting from the apiserver, only from the Prometheus Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": {"availableReplicas": {"description": "Total number of available pods (ready for at least minReadySeconds) targeted by this Alertmanager cluster.", "format": "int32", "type": "integer"}, "paused": {"description": "Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed.", "type": "boolean"}, "replicas": {"description": "Total number of non-terminated pods targeted by this Alertmanager cluster (their labels match the selector).", "format": "int32", "type": "integer"}, "unavailableReplicas": {"description": "Total number of unavailable pods targeted by this Alertmanager cluster.", "format": "int32", "type": "integer"}, "updatedReplicas": {"description": "Total number of non-terminated pods targeted by this Alertmanager cluster that have the desired version spec.", "format": "int32", "type": "integer"}}, "required": ["availableReplicas", "paused", "replicas", "unavailableReplicas", "updatedReplicas"], "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/alertmanagerconfig-monitoring-v1alpha1.json b/schemas/v1.22.0/alertmanagerconfig-monitoring-v1alpha1.json deleted file mode 100644 index d3d350c1..00000000 --- a/schemas/v1.22.0/alertmanagerconfig-monitoring-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "AlertmanagerConfig defines a namespaced AlertmanagerConfig to be aggregated across multiple namespaces configuring one Alertmanager cluster.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By definition, the Alertmanager configuration only applies to alerts for which the `namespace` label is equal to the namespace of the AlertmanagerConfig resource.", "properties": {"inhibitRules": {"description": "List of inhibition rules. The rules will only apply to alerts matching the resource\u2019s namespace.", "items": {"description": "InhibitRule defines an inhibition rule that allows to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule", "properties": {"equal": {"description": "Labels that must have an equal value in the source and target alert for the inhibition to take effect.", "items": {"type": "string"}, "type": "array"}, "sourceMatch": {"description": "Matchers for which one or more alerts have to exist for the inhibition to take effect. The operator enforces that the alert matches the resource\u2019s namespace.", "items": {"description": "Matcher defines how to match on alert's labels.", "properties": {"matchType": {"description": "Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.", "enum": ["!=", "=", "=~", "!~"], "type": "string"}, "name": {"description": "Label to match.", "minLength": 1, "type": "string"}, "regex": {"description": "Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead.", "type": "boolean"}, "value": {"description": "Label value to match.", "type": "string"}}, "required": ["name"], "type": "object"}, "type": "array"}, "targetMatch": {"description": "Matchers that have to be fulfilled in the alerts to be muted. The operator enforces that the alert matches the resource\u2019s namespace.", "items": {"description": "Matcher defines how to match on alert's labels.", "properties": {"matchType": {"description": "Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.", "enum": ["!=", "=", "=~", "!~"], "type": "string"}, "name": {"description": "Label to match.", "minLength": 1, "type": "string"}, "regex": {"description": "Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead.", "type": "boolean"}, "value": {"description": "Label value to match.", "type": "string"}}, "required": ["name"], "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}, "muteTimeIntervals": {"description": "List of MuteTimeInterval specifying when the routes should be muted.", "items": {"description": "MuteTimeInterval specifies the periods in time when notifications will be muted", "properties": {"name": {"description": "Name of the time interval", "type": "string"}, "timeIntervals": {"description": "TimeIntervals is a list of TimeInterval", "items": {"description": "TimeInterval describes intervals of time", "properties": {"daysOfMonth": {"description": "DaysOfMonth is a list of DayOfMonthRange", "items": {"description": "DayOfMonthRange is an inclusive range of days of the month beginning at 1", "properties": {"end": {"description": "End of the inclusive range", "maximum": 31, "minimum": -31, "type": "integer"}, "start": {"description": "Start of the inclusive range", "maximum": 31, "minimum": -31, "type": "integer"}}, "type": "object"}, "type": "array"}, "months": {"description": "Months is a list of MonthRange", "items": {"description": "MonthRange is an inclusive range of months of the year beginning in January Months can be specified by name (e.g 'January') by numerical month (e.g '1') or as an inclusive range (e.g 'January:March', '1:3', '1:March')", "pattern": "^((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12])(?:((:((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12]))$)|$)", "type": "string"}, "type": "array"}, "times": {"description": "Times is a list of TimeRange", "items": {"description": "TimeRange defines a start and end time in 24hr format", "properties": {"endTime": {"description": "EndTime is the end time in 24hr format.", "pattern": "^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)", "type": "string"}, "startTime": {"description": "StartTime is the start time in 24hr format.", "pattern": "^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)", "type": "string"}}, "type": "object"}, "type": "array"}, "weekdays": {"description": "Weekdays is a list of WeekdayRange", "items": {"description": "WeekdayRange is an inclusive range of days of the week beginning on Sunday Days can be specified by name (e.g 'Sunday') or as an inclusive range (e.g 'Monday:Friday')", "pattern": "^((?i)sun|mon|tues|wednes|thurs|fri|satur)day(?:((:(sun|mon|tues|wednes|thurs|fri|satur)day)$)|$)", "type": "string"}, "type": "array"}, "years": {"description": "Years is a list of YearRange", "items": {"description": "YearRange is an inclusive range of years", "pattern": "^2\\d{3}(?::2\\d{3}|$)", "type": "string"}, "type": "array"}}, "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}, "receivers": {"description": "List of receivers.", "items": {"description": "Receiver defines one or more notification integrations.", "properties": {"emailConfigs": {"description": "List of Email configurations.", "items": {"description": "EmailConfig configures notifications via Email.", "properties": {"authIdentity": {"description": "The identity to use for authentication.", "type": "string"}, "authPassword": {"description": "The secret's key that contains the password to use for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "authSecret": {"description": "The secret's key that contains the CRAM-MD5 secret. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "authUsername": {"description": "The username to use for authentication.", "type": "string"}, "from": {"description": "The sender address.", "type": "string"}, "headers": {"description": "Further headers email header key/value pairs. Overrides any headers previously set by the notification implementation.", "items": {"description": "KeyValue defines a (key, value) tuple.", "properties": {"key": {"description": "Key of the tuple.", "minLength": 1, "type": "string"}, "value": {"description": "Value of the tuple.", "type": "string"}}, "required": ["key", "value"], "type": "object"}, "type": "array"}, "hello": {"description": "The hostname to identify to the SMTP server.", "type": "string"}, "html": {"description": "The HTML body of the email notification.", "type": "string"}, "requireTLS": {"description": "The SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.", "type": "boolean"}, "sendResolved": {"description": "Whether or not to notify about resolved alerts.", "type": "boolean"}, "smarthost": {"description": "The SMTP host and port through which emails are sent. E.g. example.com:25", "type": "string"}, "text": {"description": "The text body of the email notification.", "type": "string"}, "tlsConfig": {"description": "TLS configuration", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}, "to": {"description": "The email address to send notifications to.", "type": "string"}}, "type": "object"}, "type": "array"}, "name": {"description": "Name of the receiver. Must be unique across all items from the list.", "minLength": 1, "type": "string"}, "opsgenieConfigs": {"description": "List of OpsGenie configurations.", "items": {"description": "OpsGenieConfig configures notifications via OpsGenie. See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config", "properties": {"actions": {"description": "Comma separated list of actions that will be available for the alert.", "type": "string"}, "apiKey": {"description": "The secret's key that contains the OpsGenie API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "apiURL": {"description": "The URL to send OpsGenie API requests to.", "type": "string"}, "description": {"description": "Description of the incident.", "type": "string"}, "details": {"description": "A set of arbitrary key/value pairs that provide further detail about the incident.", "items": {"description": "KeyValue defines a (key, value) tuple.", "properties": {"key": {"description": "Key of the tuple.", "minLength": 1, "type": "string"}, "value": {"description": "Value of the tuple.", "type": "string"}}, "required": ["key", "value"], "type": "object"}, "type": "array"}, "entity": {"description": "Optional field that can be used to specify which domain alert is related to.", "type": "string"}, "httpConfig": {"description": "HTTP client configuration.", "properties": {"authorization": {"description": "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "followRedirects": {"description": "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.", "type": "boolean"}, "oauth2": {"description": "OAuth2 client credentials used to fetch a token for the targets.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "proxyURL": {"description": "Optional proxy URL.", "type": "string"}, "tlsConfig": {"description": "TLS configuration for the client.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}, "message": {"description": "Alert text limited to 130 characters.", "type": "string"}, "note": {"description": "Additional alert note.", "type": "string"}, "priority": {"description": "Priority level of alert. Possible values are P1, P2, P3, P4, and P5.", "type": "string"}, "responders": {"description": "List of responders responsible for notifications.", "items": {"description": "OpsGenieConfigResponder defines a responder to an incident. One of `id`, `name` or `username` has to be defined.", "properties": {"id": {"description": "ID of the responder.", "type": "string"}, "name": {"description": "Name of the responder.", "type": "string"}, "type": {"description": "Type of responder.", "minLength": 1, "type": "string"}, "username": {"description": "Username of the responder.", "type": "string"}}, "required": ["type"], "type": "object"}, "type": "array"}, "sendResolved": {"description": "Whether or not to notify about resolved alerts.", "type": "boolean"}, "source": {"description": "Backlink to the sender of the notification.", "type": "string"}, "tags": {"description": "Comma separated list of tags attached to the notifications.", "type": "string"}}, "type": "object"}, "type": "array"}, "pagerdutyConfigs": {"description": "List of PagerDuty configurations.", "items": {"description": "PagerDutyConfig configures notifications via PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config", "properties": {"class": {"description": "The class/type of the event.", "type": "string"}, "client": {"description": "Client identification.", "type": "string"}, "clientURL": {"description": "Backlink to the sender of notification.", "type": "string"}, "component": {"description": "The part or component of the affected system that is broken.", "type": "string"}, "description": {"description": "Description of the incident.", "type": "string"}, "details": {"description": "Arbitrary key/value pairs that provide further detail about the incident.", "items": {"description": "KeyValue defines a (key, value) tuple.", "properties": {"key": {"description": "Key of the tuple.", "minLength": 1, "type": "string"}, "value": {"description": "Value of the tuple.", "type": "string"}}, "required": ["key", "value"], "type": "object"}, "type": "array"}, "group": {"description": "A cluster or grouping of sources.", "type": "string"}, "httpConfig": {"description": "HTTP client configuration.", "properties": {"authorization": {"description": "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "followRedirects": {"description": "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.", "type": "boolean"}, "oauth2": {"description": "OAuth2 client credentials used to fetch a token for the targets.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "proxyURL": {"description": "Optional proxy URL.", "type": "string"}, "tlsConfig": {"description": "TLS configuration for the client.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}, "pagerDutyImageConfigs": {"description": "A list of image details to attach that provide further detail about an incident.", "items": {"description": "PagerDutyImageConfig attaches images to an incident", "properties": {"alt": {"description": "Alt is the optional alternative text for the image.", "type": "string"}, "href": {"description": "Optional URL; makes the image a clickable link.", "type": "string"}, "src": {"description": "Src of the image being attached to the incident", "type": "string"}}, "type": "object"}, "type": "array"}, "pagerDutyLinkConfigs": {"description": "A list of link details to attach that provide further detail about an incident.", "items": {"description": "PagerDutyLinkConfig attaches text links to an incident", "properties": {"alt": {"description": "Text that describes the purpose of the link, and can be used as the link's text.", "type": "string"}, "href": {"description": "Href is the URL of the link to be attached", "type": "string"}}, "type": "object"}, "type": "array"}, "routingKey": {"description": "The secret's key that contains the PagerDuty integration key (when using Events API v2). Either this field or `serviceKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "sendResolved": {"description": "Whether or not to notify about resolved alerts.", "type": "boolean"}, "serviceKey": {"description": "The secret's key that contains the PagerDuty service key (when using integration type \"Prometheus\"). Either this field or `routingKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "severity": {"description": "Severity of the incident.", "type": "string"}, "url": {"description": "The URL to send requests to.", "type": "string"}}, "type": "object"}, "type": "array"}, "pushoverConfigs": {"description": "List of Pushover configurations.", "items": {"description": "PushoverConfig configures notifications via Pushover. See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config", "properties": {"expire": {"description": "How long your notification will continue to be retried for, unless the user acknowledges the notification.", "pattern": "^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$", "type": "string"}, "html": {"description": "Whether notification message is HTML or plain text.", "type": "boolean"}, "httpConfig": {"description": "HTTP client configuration.", "properties": {"authorization": {"description": "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "followRedirects": {"description": "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.", "type": "boolean"}, "oauth2": {"description": "OAuth2 client credentials used to fetch a token for the targets.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "proxyURL": {"description": "Optional proxy URL.", "type": "string"}, "tlsConfig": {"description": "TLS configuration for the client.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}, "message": {"description": "Notification message.", "type": "string"}, "priority": {"description": "Priority, see https://pushover.net/api#priority", "type": "string"}, "retry": {"description": "How often the Pushover servers will send the same notification to the user. Must be at least 30 seconds.", "pattern": "^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$", "type": "string"}, "sendResolved": {"description": "Whether or not to notify about resolved alerts.", "type": "boolean"}, "sound": {"description": "The name of one of the sounds supported by device clients to override the user's default sound choice", "type": "string"}, "title": {"description": "Notification title.", "type": "string"}, "token": {"description": "The secret's key that contains the registered application\u2019s API token, see https://pushover.net/apps. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "url": {"description": "A supplementary URL shown alongside the message.", "type": "string"}, "urlTitle": {"description": "A title for supplementary URL, otherwise just the URL is shown", "type": "string"}, "userKey": {"description": "The secret's key that contains the recipient user\u2019s user key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "type": "array"}, "slackConfigs": {"description": "List of Slack configurations.", "items": {"description": "SlackConfig configures notifications via Slack. See https://prometheus.io/docs/alerting/latest/configuration/#slack_config", "properties": {"actions": {"description": "A list of Slack actions that are sent with each notification.", "items": {"description": "SlackAction configures a single Slack action that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons for more information.", "properties": {"confirm": {"description": "SlackConfirmationField protect users from destructive actions or particularly distinguished decisions by asking them to confirm their button click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information.", "properties": {"dismissText": {"type": "string"}, "okText": {"type": "string"}, "text": {"minLength": 1, "type": "string"}, "title": {"type": "string"}}, "required": ["text"], "type": "object"}, "name": {"type": "string"}, "style": {"type": "string"}, "text": {"minLength": 1, "type": "string"}, "type": {"minLength": 1, "type": "string"}, "url": {"type": "string"}, "value": {"type": "string"}}, "required": ["text", "type"], "type": "object"}, "type": "array"}, "apiURL": {"description": "The secret's key that contains the Slack webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "callbackId": {"type": "string"}, "channel": {"description": "The channel or user to send notifications to.", "type": "string"}, "color": {"type": "string"}, "fallback": {"type": "string"}, "fields": {"description": "A list of Slack fields that are sent with each notification.", "items": {"description": "SlackField configures a single Slack field that is sent with each notification. Each field must contain a title, value, and optionally, a boolean value to indicate if the field is short enough to be displayed next to other fields designated as short. See https://api.slack.com/docs/message-attachments#fields for more information.", "properties": {"short": {"type": "boolean"}, "title": {"minLength": 1, "type": "string"}, "value": {"minLength": 1, "type": "string"}}, "required": ["title", "value"], "type": "object"}, "type": "array"}, "footer": {"type": "string"}, "httpConfig": {"description": "HTTP client configuration.", "properties": {"authorization": {"description": "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "followRedirects": {"description": "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.", "type": "boolean"}, "oauth2": {"description": "OAuth2 client credentials used to fetch a token for the targets.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "proxyURL": {"description": "Optional proxy URL.", "type": "string"}, "tlsConfig": {"description": "TLS configuration for the client.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}, "iconEmoji": {"type": "string"}, "iconURL": {"type": "string"}, "imageURL": {"type": "string"}, "linkNames": {"type": "boolean"}, "mrkdwnIn": {"items": {"type": "string"}, "type": "array"}, "pretext": {"type": "string"}, "sendResolved": {"description": "Whether or not to notify about resolved alerts.", "type": "boolean"}, "shortFields": {"type": "boolean"}, "text": {"type": "string"}, "thumbURL": {"type": "string"}, "title": {"type": "string"}, "titleLink": {"type": "string"}, "username": {"type": "string"}}, "type": "object"}, "type": "array"}, "snsConfigs": {"description": "List of SNS configurations", "items": {"description": "SNSConfig configures notifications via AWS SNS. See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs", "properties": {"apiURL": {"description": "The SNS API URL i.e. https://sns.us-east-2.amazonaws.com. If not specified, the SNS API URL from the SNS SDK will be used.", "type": "string"}, "attributes": {"additionalProperties": {"type": "string"}, "description": "SNS message attributes.", "type": "object"}, "httpConfig": {"description": "HTTP client configuration.", "properties": {"authorization": {"description": "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "followRedirects": {"description": "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.", "type": "boolean"}, "oauth2": {"description": "OAuth2 client credentials used to fetch a token for the targets.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "proxyURL": {"description": "Optional proxy URL.", "type": "string"}, "tlsConfig": {"description": "TLS configuration for the client.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}, "message": {"description": "The message content of the SNS notification.", "type": "string"}, "phoneNumber": {"description": "Phone number if message is delivered via SMS in E.164 format. If you don't specify this value, you must specify a value for the TopicARN or TargetARN.", "type": "string"}, "sendResolved": {"description": "Whether or not to notify about resolved alerts.", "type": "boolean"}, "sigv4": {"description": "Configures AWS's Signature Verification 4 signing process to sign requests.", "properties": {"accessKey": {"description": "AccessKey is the AWS API key. If blank, the environment variable `AWS_ACCESS_KEY_ID` is used.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "profile": {"description": "Profile is the named AWS profile used to authenticate.", "type": "string"}, "region": {"description": "Region is the AWS region. If blank, the region from the default credentials chain used.", "type": "string"}, "roleArn": {"description": "RoleArn is the named AWS profile used to authenticate.", "type": "string"}, "secretKey": {"description": "SecretKey is the AWS API secret. If blank, the environment variable `AWS_SECRET_ACCESS_KEY` is used.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "subject": {"description": "Subject line when the message is delivered to email endpoints.", "type": "string"}, "targetARN": {"description": "The mobile platform endpoint ARN if message is delivered via mobile notifications. If you don't specify this value, you must specify a value for the topic_arn or PhoneNumber.", "type": "string"}, "topicARN": {"description": "SNS topic ARN, i.e. arn:aws:sns:us-east-2:698519295917:My-Topic If you don't specify this value, you must specify a value for the PhoneNumber or TargetARN.", "type": "string"}}, "type": "object"}, "type": "array"}, "victoropsConfigs": {"description": "List of VictorOps configurations.", "items": {"description": "VictorOpsConfig configures notifications via VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config", "properties": {"apiKey": {"description": "The secret's key that contains the API key to use when talking to the VictorOps API. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "apiUrl": {"description": "The VictorOps API URL.", "type": "string"}, "customFields": {"description": "Additional custom fields for notification.", "items": {"description": "KeyValue defines a (key, value) tuple.", "properties": {"key": {"description": "Key of the tuple.", "minLength": 1, "type": "string"}, "value": {"description": "Value of the tuple.", "type": "string"}}, "required": ["key", "value"], "type": "object"}, "type": "array"}, "entityDisplayName": {"description": "Contains summary of the alerted problem.", "type": "string"}, "httpConfig": {"description": "The HTTP client's configuration.", "properties": {"authorization": {"description": "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "followRedirects": {"description": "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.", "type": "boolean"}, "oauth2": {"description": "OAuth2 client credentials used to fetch a token for the targets.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "proxyURL": {"description": "Optional proxy URL.", "type": "string"}, "tlsConfig": {"description": "TLS configuration for the client.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}, "messageType": {"description": "Describes the behavior of the alert (CRITICAL, WARNING, INFO).", "type": "string"}, "monitoringTool": {"description": "The monitoring tool the state message is from.", "type": "string"}, "routingKey": {"description": "A key used to map the alert to a team.", "type": "string"}, "sendResolved": {"description": "Whether or not to notify about resolved alerts.", "type": "boolean"}, "stateMessage": {"description": "Contains long explanation of the alerted problem.", "type": "string"}}, "type": "object"}, "type": "array"}, "webhookConfigs": {"description": "List of webhook configurations.", "items": {"description": "WebhookConfig configures notifications via a generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config", "properties": {"httpConfig": {"description": "HTTP client configuration.", "properties": {"authorization": {"description": "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "followRedirects": {"description": "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.", "type": "boolean"}, "oauth2": {"description": "OAuth2 client credentials used to fetch a token for the targets.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "proxyURL": {"description": "Optional proxy URL.", "type": "string"}, "tlsConfig": {"description": "TLS configuration for the client.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}, "maxAlerts": {"description": "Maximum number of alerts to be sent per webhook message. When 0, all alerts are included.", "format": "int32", "minimum": 0, "type": "integer"}, "sendResolved": {"description": "Whether or not to notify about resolved alerts.", "type": "boolean"}, "url": {"description": "The URL to send HTTP POST requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined.", "type": "string"}, "urlSecret": {"description": "The secret's key that contains the webhook URL to send HTTP requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "type": "array"}, "wechatConfigs": {"description": "List of WeChat configurations.", "items": {"description": "WeChatConfig configures notifications via WeChat. See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config", "properties": {"agentID": {"type": "string"}, "apiSecret": {"description": "The secret's key that contains the WeChat API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "apiURL": {"description": "The WeChat API URL.", "type": "string"}, "corpID": {"description": "The corp id for authentication.", "type": "string"}, "httpConfig": {"description": "HTTP client configuration.", "properties": {"authorization": {"description": "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "followRedirects": {"description": "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.", "type": "boolean"}, "oauth2": {"description": "OAuth2 client credentials used to fetch a token for the targets.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "proxyURL": {"description": "Optional proxy URL.", "type": "string"}, "tlsConfig": {"description": "TLS configuration for the client.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}, "message": {"description": "API request data as defined by the WeChat API.", "type": "string"}, "messageType": {"type": "string"}, "sendResolved": {"description": "Whether or not to notify about resolved alerts.", "type": "boolean"}, "toParty": {"type": "string"}, "toTag": {"type": "string"}, "toUser": {"type": "string"}}, "type": "object"}, "type": "array"}}, "required": ["name"], "type": "object"}, "type": "array"}, "route": {"description": "The Alertmanager route definition for alerts matching the resource\u2019s namespace. If present, it will be added to the generated Alertmanager configuration as a first-level route.", "properties": {"continue": {"description": "Boolean indicating whether an alert should continue matching subsequent sibling nodes. It will always be overridden to true for the first-level route by the Prometheus operator.", "type": "boolean"}, "groupBy": {"description": "List of labels to group by. Labels must not be repeated (unique list). Special label \"...\" (aggregate by all possible labels), if provided, must be the only element in the list.", "items": {"type": "string"}, "type": "array"}, "groupInterval": {"description": "How long to wait before sending an updated notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: \"5m\"", "type": "string"}, "groupWait": {"description": "How long to wait before sending the initial notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: \"30s\"", "type": "string"}, "matchers": {"description": "List of matchers that the alert\u2019s labels should match. For the first level route, the operator removes any existing equality and regexp matcher on the `namespace` label and adds a `namespace: ` matcher.", "items": {"description": "Matcher defines how to match on alert's labels.", "properties": {"matchType": {"description": "Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.", "enum": ["!=", "=", "=~", "!~"], "type": "string"}, "name": {"description": "Label to match.", "minLength": 1, "type": "string"}, "regex": {"description": "Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead.", "type": "boolean"}, "value": {"description": "Label value to match.", "type": "string"}}, "required": ["name"], "type": "object"}, "type": "array"}, "muteTimeIntervals": {"description": "Note: this comment applies to the field definition above but appears below otherwise it gets included in the generated manifest. CRD schema doesn't support self-referential types for now (see https://github.com/kubernetes/kubernetes/issues/62872). We have to use an alternative type to circumvent the limitation. The downside is that the Kube API can't validate the data beyond the fact that it is a valid JSON representation. MuteTimeIntervals is a list of MuteTimeInterval names that will mute this route when matched,", "items": {"type": "string"}, "type": "array"}, "receiver": {"description": "Name of the receiver for this route. If not empty, it should be listed in the `receivers` field.", "type": "string"}, "repeatInterval": {"description": "How long to wait before repeating the last notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: \"4h\"", "type": "string"}, "routes": {"description": "Child routes.", "items": {"x-kubernetes-preserve-unknown-fields": true}, "type": "array"}}, "type": "object"}}, "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/application-argoproj-v1alpha1.json b/schemas/v1.22.0/application-argoproj-v1alpha1.json deleted file mode 100644 index 03a6b474..00000000 --- a/schemas/v1.22.0/application-argoproj-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "Application is a definition of Application resource.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "operation": {"description": "Operation contains information about a requested or running operation", "properties": {"info": {"description": "Info is a list of informational items for this operation", "items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "initiatedBy": {"description": "InitiatedBy contains information about who initiated the operations", "properties": {"automated": {"description": "Automated is set to true if operation was initiated automatically by the application controller.", "type": "boolean"}, "username": {"description": "Username contains the name of a user who started operation", "type": "string"}}, "type": "object"}, "retry": {"description": "Retry controls the strategy to apply if a sync fails", "properties": {"backoff": {"description": "Backoff controls how to backoff on subsequent retries of failed syncs", "properties": {"duration": {"description": "Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. \"2m\", \"1h\")", "type": "string"}, "factor": {"description": "Factor is a factor to multiply the base duration after each failed retry", "format": "int64", "type": "integer"}, "maxDuration": {"description": "MaxDuration is the maximum amount of time allowed for the backoff strategy", "type": "string"}}, "type": "object"}, "limit": {"description": "Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.", "format": "int64", "type": "integer"}}, "type": "object"}, "sync": {"description": "Sync contains parameters for the operation", "properties": {"dryRun": {"description": "DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync", "type": "boolean"}, "manifests": {"description": "Manifests is an optional field that overrides sync source with a local directory for development", "items": {"type": "string"}, "type": "array"}, "prune": {"description": "Prune specifies to delete resources from the cluster that are no longer tracked in git", "type": "boolean"}, "resources": {"description": "Resources describes which resources shall be part of the sync", "items": {"description": "SyncOperationResource contains resources to sync.", "properties": {"group": {"type": "string"}, "kind": {"type": "string"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind", "name"], "type": "object"}, "type": "array"}, "revision": {"description": "Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec.", "type": "string"}, "source": {"description": "Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation", "properties": {"chart": {"description": "Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.", "type": "string"}, "directory": {"description": "Directory holds path/directory specific options", "properties": {"exclude": {"description": "Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation", "type": "string"}, "include": {"description": "Include contains a glob pattern to match paths against that should be explicitly included during manifest generation", "type": "string"}, "jsonnet": {"description": "Jsonnet holds options specific to Jsonnet", "properties": {"extVars": {"description": "ExtVars is a list of Jsonnet External Variables", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"description": "Additional library search dirs", "items": {"type": "string"}, "type": "array"}, "tlas": {"description": "TLAS is a list of Jsonnet Top-level Arguments", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"description": "Recurse specifies whether to scan a directory recursively for manifests", "type": "boolean"}}, "type": "object"}, "helm": {"description": "Helm holds helm specific options", "properties": {"fileParameters": {"description": "FileParameters are file parameters to the helm template", "items": {"description": "HelmFileParameter is a file parameter that's passed to helm template during manifest generation", "properties": {"name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "path": {"description": "Path is the path to the file containing the values for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"description": "IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values", "type": "boolean"}, "parameters": {"description": "Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation", "items": {"description": "HelmParameter is a parameter that's passed to helm template during manifest generation", "properties": {"forceString": {"description": "ForceString determines whether to tell Helm to interpret booleans and numbers as strings", "type": "boolean"}, "name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "value": {"description": "Value is the value for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"description": "PassCredentials pass credentials to all domains (Helm's --pass-credentials)", "type": "boolean"}, "releaseName": {"description": "ReleaseName is the Helm release name to use. If omitted it will use the application name", "type": "string"}, "skipCrds": {"description": "SkipCrds skips custom resource definition installation step (Helm's --skip-crds)", "type": "boolean"}, "valueFiles": {"description": "ValuesFiles is a list of Helm value files to use when generating a template", "items": {"type": "string"}, "type": "array"}, "values": {"description": "Values specifies Helm values to be passed to helm template, typically defined as a block", "type": "string"}, "version": {"description": "Version is the Helm version to use for templating (\"3\")", "type": "string"}}, "type": "object"}, "kustomize": {"description": "Kustomize holds kustomize specific options", "properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "description": "CommonAnnotations is a list of additional annotations to add to rendered manifests", "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "description": "CommonLabels is a list of additional labels to add to rendered manifests", "type": "object"}, "forceCommonAnnotations": {"description": "ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps", "type": "boolean"}, "forceCommonLabels": {"description": "ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps", "type": "boolean"}, "images": {"description": "Images is a list of Kustomize image override specifications", "items": {"description": "KustomizeImage represents a Kustomize image definition in the format [old_image_name=]:", "type": "string"}, "type": "array"}, "namePrefix": {"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "type": "string"}, "nameSuffix": {"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "type": "string"}, "version": {"description": "Version controls which version of Kustomize to use for rendering manifests", "type": "string"}}, "type": "object"}, "path": {"description": "Path is a directory path within the Git repository, and is only valid for applications sourced from Git.", "type": "string"}, "plugin": {"description": "Plugin holds config management plugin specific options", "properties": {"env": {"description": "Env is a list of environment variable entries", "items": {"description": "EnvEntry represents an entry in the application's environment", "properties": {"name": {"description": "Name is the name of the variable, usually expressed in uppercase", "type": "string"}, "value": {"description": "Value is the value of the variable", "type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"description": "RepoURL is the URL to the repository (Git or Helm) that contains the application manifests", "type": "string"}, "targetRevision": {"description": "TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.", "type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncOptions": {"description": "SyncOptions provide per-sync sync-options, e.g. Validate=false", "items": {"type": "string"}, "type": "array"}, "syncStrategy": {"description": "SyncStrategy describes how to perform the sync", "properties": {"apply": {"description": "Apply will perform a `kubectl apply` to perform the sync.", "properties": {"force": {"description": "Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.", "type": "boolean"}}, "type": "object"}, "hook": {"description": "Hook will submit any referenced resources to perform the sync. This is the default strategy", "properties": {"force": {"description": "Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.", "type": "boolean"}}, "type": "object"}}, "type": "object"}}, "type": "object"}}, "type": "object"}, "spec": {"description": "ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision.", "properties": {"destination": {"description": "Destination is a reference to the target Kubernetes server and namespace", "properties": {"name": {"description": "Name is an alternate way of specifying the target cluster by its symbolic name", "type": "string"}, "namespace": {"description": "Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace", "type": "string"}, "server": {"description": "Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API", "type": "string"}}, "type": "object"}, "ignoreDifferences": {"description": "IgnoreDifferences is a list of resources and their fields which should be ignored during comparison", "items": {"description": "ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state.", "properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"description": "ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the desired state defined in the SCM and won't be displayed in diffs", "items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"description": "Info contains a list of information (URLs, email addresses, and plain text) that relates to the application", "items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"description": "Project is a reference to the project this application belongs to. The empty string means that application belongs to the 'default' project.", "type": "string"}, "revisionHistoryLimit": {"description": "RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.", "format": "int64", "type": "integer"}, "source": {"description": "Source is a reference to the location of the application's manifests or chart", "properties": {"chart": {"description": "Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.", "type": "string"}, "directory": {"description": "Directory holds path/directory specific options", "properties": {"exclude": {"description": "Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation", "type": "string"}, "include": {"description": "Include contains a glob pattern to match paths against that should be explicitly included during manifest generation", "type": "string"}, "jsonnet": {"description": "Jsonnet holds options specific to Jsonnet", "properties": {"extVars": {"description": "ExtVars is a list of Jsonnet External Variables", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"description": "Additional library search dirs", "items": {"type": "string"}, "type": "array"}, "tlas": {"description": "TLAS is a list of Jsonnet Top-level Arguments", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"description": "Recurse specifies whether to scan a directory recursively for manifests", "type": "boolean"}}, "type": "object"}, "helm": {"description": "Helm holds helm specific options", "properties": {"fileParameters": {"description": "FileParameters are file parameters to the helm template", "items": {"description": "HelmFileParameter is a file parameter that's passed to helm template during manifest generation", "properties": {"name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "path": {"description": "Path is the path to the file containing the values for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"description": "IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values", "type": "boolean"}, "parameters": {"description": "Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation", "items": {"description": "HelmParameter is a parameter that's passed to helm template during manifest generation", "properties": {"forceString": {"description": "ForceString determines whether to tell Helm to interpret booleans and numbers as strings", "type": "boolean"}, "name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "value": {"description": "Value is the value for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"description": "PassCredentials pass credentials to all domains (Helm's --pass-credentials)", "type": "boolean"}, "releaseName": {"description": "ReleaseName is the Helm release name to use. If omitted it will use the application name", "type": "string"}, "skipCrds": {"description": "SkipCrds skips custom resource definition installation step (Helm's --skip-crds)", "type": "boolean"}, "valueFiles": {"description": "ValuesFiles is a list of Helm value files to use when generating a template", "items": {"type": "string"}, "type": "array"}, "values": {"description": "Values specifies Helm values to be passed to helm template, typically defined as a block", "type": "string"}, "version": {"description": "Version is the Helm version to use for templating (\"3\")", "type": "string"}}, "type": "object"}, "kustomize": {"description": "Kustomize holds kustomize specific options", "properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "description": "CommonAnnotations is a list of additional annotations to add to rendered manifests", "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "description": "CommonLabels is a list of additional labels to add to rendered manifests", "type": "object"}, "forceCommonAnnotations": {"description": "ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps", "type": "boolean"}, "forceCommonLabels": {"description": "ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps", "type": "boolean"}, "images": {"description": "Images is a list of Kustomize image override specifications", "items": {"description": "KustomizeImage represents a Kustomize image definition in the format [old_image_name=]:", "type": "string"}, "type": "array"}, "namePrefix": {"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "type": "string"}, "nameSuffix": {"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "type": "string"}, "version": {"description": "Version controls which version of Kustomize to use for rendering manifests", "type": "string"}}, "type": "object"}, "path": {"description": "Path is a directory path within the Git repository, and is only valid for applications sourced from Git.", "type": "string"}, "plugin": {"description": "Plugin holds config management plugin specific options", "properties": {"env": {"description": "Env is a list of environment variable entries", "items": {"description": "EnvEntry represents an entry in the application's environment", "properties": {"name": {"description": "Name is the name of the variable, usually expressed in uppercase", "type": "string"}, "value": {"description": "Value is the value of the variable", "type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"description": "RepoURL is the URL to the repository (Git or Helm) that contains the application manifests", "type": "string"}, "targetRevision": {"description": "TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.", "type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"description": "SyncPolicy controls when and how a sync will be performed", "properties": {"automated": {"description": "Automated will keep an application synced to the target revision", "properties": {"allowEmpty": {"description": "AllowEmpty allows apps have zero live resources (default: false)", "type": "boolean"}, "prune": {"description": "Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false)", "type": "boolean"}, "selfHeal": {"description": "SelfHeal specifes whether to revert resources back to their desired state upon modification in the cluster (default: false)", "type": "boolean"}}, "type": "object"}, "retry": {"description": "Retry controls failed sync retry behavior", "properties": {"backoff": {"description": "Backoff controls how to backoff on subsequent retries of failed syncs", "properties": {"duration": {"description": "Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. \"2m\", \"1h\")", "type": "string"}, "factor": {"description": "Factor is a factor to multiply the base duration after each failed retry", "format": "int64", "type": "integer"}, "maxDuration": {"description": "MaxDuration is the maximum amount of time allowed for the backoff strategy", "type": "string"}}, "type": "object"}, "limit": {"description": "Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.", "format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"description": "Options allow you to specify whole app sync-options", "items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}, "status": {"description": "ApplicationStatus contains status information for the application", "properties": {"conditions": {"description": "Conditions is a list of currently observed application conditions", "items": {"description": "ApplicationCondition contains details about an application condition, which is usally an error or warning", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the time the condition was last observed", "format": "date-time", "type": "string"}, "message": {"description": "Message contains human-readable message indicating details about condition", "type": "string"}, "type": {"description": "Type is an application condition type", "type": "string"}}, "required": ["message", "type"], "type": "object"}, "type": "array"}, "health": {"description": "Health contains information about the application's current health status", "properties": {"message": {"description": "Message is a human-readable informational message describing the health status", "type": "string"}, "status": {"description": "Status holds the status code of the application or resource", "type": "string"}}, "type": "object"}, "history": {"description": "History contains information about the application's sync history", "items": {"description": "RevisionHistory contains history information about a previous sync", "properties": {"deployStartedAt": {"description": "DeployStartedAt holds the time the sync operation started", "format": "date-time", "type": "string"}, "deployedAt": {"description": "DeployedAt holds the time the sync operation completed", "format": "date-time", "type": "string"}, "id": {"description": "ID is an auto incrementing identifier of the RevisionHistory", "format": "int64", "type": "integer"}, "revision": {"description": "Revision holds the revision the sync was performed against", "type": "string"}, "source": {"description": "Source is a reference to the application source used for the sync operation", "properties": {"chart": {"description": "Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.", "type": "string"}, "directory": {"description": "Directory holds path/directory specific options", "properties": {"exclude": {"description": "Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation", "type": "string"}, "include": {"description": "Include contains a glob pattern to match paths against that should be explicitly included during manifest generation", "type": "string"}, "jsonnet": {"description": "Jsonnet holds options specific to Jsonnet", "properties": {"extVars": {"description": "ExtVars is a list of Jsonnet External Variables", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"description": "Additional library search dirs", "items": {"type": "string"}, "type": "array"}, "tlas": {"description": "TLAS is a list of Jsonnet Top-level Arguments", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"description": "Recurse specifies whether to scan a directory recursively for manifests", "type": "boolean"}}, "type": "object"}, "helm": {"description": "Helm holds helm specific options", "properties": {"fileParameters": {"description": "FileParameters are file parameters to the helm template", "items": {"description": "HelmFileParameter is a file parameter that's passed to helm template during manifest generation", "properties": {"name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "path": {"description": "Path is the path to the file containing the values for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"description": "IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values", "type": "boolean"}, "parameters": {"description": "Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation", "items": {"description": "HelmParameter is a parameter that's passed to helm template during manifest generation", "properties": {"forceString": {"description": "ForceString determines whether to tell Helm to interpret booleans and numbers as strings", "type": "boolean"}, "name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "value": {"description": "Value is the value for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"description": "PassCredentials pass credentials to all domains (Helm's --pass-credentials)", "type": "boolean"}, "releaseName": {"description": "ReleaseName is the Helm release name to use. If omitted it will use the application name", "type": "string"}, "skipCrds": {"description": "SkipCrds skips custom resource definition installation step (Helm's --skip-crds)", "type": "boolean"}, "valueFiles": {"description": "ValuesFiles is a list of Helm value files to use when generating a template", "items": {"type": "string"}, "type": "array"}, "values": {"description": "Values specifies Helm values to be passed to helm template, typically defined as a block", "type": "string"}, "version": {"description": "Version is the Helm version to use for templating (\"3\")", "type": "string"}}, "type": "object"}, "kustomize": {"description": "Kustomize holds kustomize specific options", "properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "description": "CommonAnnotations is a list of additional annotations to add to rendered manifests", "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "description": "CommonLabels is a list of additional labels to add to rendered manifests", "type": "object"}, "forceCommonAnnotations": {"description": "ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps", "type": "boolean"}, "forceCommonLabels": {"description": "ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps", "type": "boolean"}, "images": {"description": "Images is a list of Kustomize image override specifications", "items": {"description": "KustomizeImage represents a Kustomize image definition in the format [old_image_name=]:", "type": "string"}, "type": "array"}, "namePrefix": {"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "type": "string"}, "nameSuffix": {"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "type": "string"}, "version": {"description": "Version controls which version of Kustomize to use for rendering manifests", "type": "string"}}, "type": "object"}, "path": {"description": "Path is a directory path within the Git repository, and is only valid for applications sourced from Git.", "type": "string"}, "plugin": {"description": "Plugin holds config management plugin specific options", "properties": {"env": {"description": "Env is a list of environment variable entries", "items": {"description": "EnvEntry represents an entry in the application's environment", "properties": {"name": {"description": "Name is the name of the variable, usually expressed in uppercase", "type": "string"}, "value": {"description": "Value is the value of the variable", "type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"description": "RepoURL is the URL to the repository (Git or Helm) that contains the application manifests", "type": "string"}, "targetRevision": {"description": "TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.", "type": "string"}}, "required": ["repoURL"], "type": "object"}}, "required": ["deployedAt", "id", "revision"], "type": "object"}, "type": "array"}, "observedAt": {"description": "ObservedAt indicates when the application state was updated without querying latest git state Deprecated: controller no longer updates ObservedAt field", "format": "date-time", "type": "string"}, "operationState": {"description": "OperationState contains information about any ongoing operations, such as a sync", "properties": {"finishedAt": {"description": "FinishedAt contains time of operation completion", "format": "date-time", "type": "string"}, "message": {"description": "Message holds any pertinent messages when attempting to perform operation (typically errors).", "type": "string"}, "operation": {"description": "Operation is the original requested operation", "properties": {"info": {"description": "Info is a list of informational items for this operation", "items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "initiatedBy": {"description": "InitiatedBy contains information about who initiated the operations", "properties": {"automated": {"description": "Automated is set to true if operation was initiated automatically by the application controller.", "type": "boolean"}, "username": {"description": "Username contains the name of a user who started operation", "type": "string"}}, "type": "object"}, "retry": {"description": "Retry controls the strategy to apply if a sync fails", "properties": {"backoff": {"description": "Backoff controls how to backoff on subsequent retries of failed syncs", "properties": {"duration": {"description": "Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. \"2m\", \"1h\")", "type": "string"}, "factor": {"description": "Factor is a factor to multiply the base duration after each failed retry", "format": "int64", "type": "integer"}, "maxDuration": {"description": "MaxDuration is the maximum amount of time allowed for the backoff strategy", "type": "string"}}, "type": "object"}, "limit": {"description": "Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.", "format": "int64", "type": "integer"}}, "type": "object"}, "sync": {"description": "Sync contains parameters for the operation", "properties": {"dryRun": {"description": "DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync", "type": "boolean"}, "manifests": {"description": "Manifests is an optional field that overrides sync source with a local directory for development", "items": {"type": "string"}, "type": "array"}, "prune": {"description": "Prune specifies to delete resources from the cluster that are no longer tracked in git", "type": "boolean"}, "resources": {"description": "Resources describes which resources shall be part of the sync", "items": {"description": "SyncOperationResource contains resources to sync.", "properties": {"group": {"type": "string"}, "kind": {"type": "string"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind", "name"], "type": "object"}, "type": "array"}, "revision": {"description": "Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec.", "type": "string"}, "source": {"description": "Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation", "properties": {"chart": {"description": "Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.", "type": "string"}, "directory": {"description": "Directory holds path/directory specific options", "properties": {"exclude": {"description": "Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation", "type": "string"}, "include": {"description": "Include contains a glob pattern to match paths against that should be explicitly included during manifest generation", "type": "string"}, "jsonnet": {"description": "Jsonnet holds options specific to Jsonnet", "properties": {"extVars": {"description": "ExtVars is a list of Jsonnet External Variables", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"description": "Additional library search dirs", "items": {"type": "string"}, "type": "array"}, "tlas": {"description": "TLAS is a list of Jsonnet Top-level Arguments", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"description": "Recurse specifies whether to scan a directory recursively for manifests", "type": "boolean"}}, "type": "object"}, "helm": {"description": "Helm holds helm specific options", "properties": {"fileParameters": {"description": "FileParameters are file parameters to the helm template", "items": {"description": "HelmFileParameter is a file parameter that's passed to helm template during manifest generation", "properties": {"name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "path": {"description": "Path is the path to the file containing the values for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"description": "IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values", "type": "boolean"}, "parameters": {"description": "Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation", "items": {"description": "HelmParameter is a parameter that's passed to helm template during manifest generation", "properties": {"forceString": {"description": "ForceString determines whether to tell Helm to interpret booleans and numbers as strings", "type": "boolean"}, "name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "value": {"description": "Value is the value for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"description": "PassCredentials pass credentials to all domains (Helm's --pass-credentials)", "type": "boolean"}, "releaseName": {"description": "ReleaseName is the Helm release name to use. If omitted it will use the application name", "type": "string"}, "skipCrds": {"description": "SkipCrds skips custom resource definition installation step (Helm's --skip-crds)", "type": "boolean"}, "valueFiles": {"description": "ValuesFiles is a list of Helm value files to use when generating a template", "items": {"type": "string"}, "type": "array"}, "values": {"description": "Values specifies Helm values to be passed to helm template, typically defined as a block", "type": "string"}, "version": {"description": "Version is the Helm version to use for templating (\"3\")", "type": "string"}}, "type": "object"}, "kustomize": {"description": "Kustomize holds kustomize specific options", "properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "description": "CommonAnnotations is a list of additional annotations to add to rendered manifests", "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "description": "CommonLabels is a list of additional labels to add to rendered manifests", "type": "object"}, "forceCommonAnnotations": {"description": "ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps", "type": "boolean"}, "forceCommonLabels": {"description": "ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps", "type": "boolean"}, "images": {"description": "Images is a list of Kustomize image override specifications", "items": {"description": "KustomizeImage represents a Kustomize image definition in the format [old_image_name=]:", "type": "string"}, "type": "array"}, "namePrefix": {"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "type": "string"}, "nameSuffix": {"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "type": "string"}, "version": {"description": "Version controls which version of Kustomize to use for rendering manifests", "type": "string"}}, "type": "object"}, "path": {"description": "Path is a directory path within the Git repository, and is only valid for applications sourced from Git.", "type": "string"}, "plugin": {"description": "Plugin holds config management plugin specific options", "properties": {"env": {"description": "Env is a list of environment variable entries", "items": {"description": "EnvEntry represents an entry in the application's environment", "properties": {"name": {"description": "Name is the name of the variable, usually expressed in uppercase", "type": "string"}, "value": {"description": "Value is the value of the variable", "type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"description": "RepoURL is the URL to the repository (Git or Helm) that contains the application manifests", "type": "string"}, "targetRevision": {"description": "TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.", "type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncOptions": {"description": "SyncOptions provide per-sync sync-options, e.g. Validate=false", "items": {"type": "string"}, "type": "array"}, "syncStrategy": {"description": "SyncStrategy describes how to perform the sync", "properties": {"apply": {"description": "Apply will perform a `kubectl apply` to perform the sync.", "properties": {"force": {"description": "Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.", "type": "boolean"}}, "type": "object"}, "hook": {"description": "Hook will submit any referenced resources to perform the sync. This is the default strategy", "properties": {"force": {"description": "Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.", "type": "boolean"}}, "type": "object"}}, "type": "object"}}, "type": "object"}}, "type": "object"}, "phase": {"description": "Phase is the current phase of the operation", "type": "string"}, "retryCount": {"description": "RetryCount contains time of operation retries", "format": "int64", "type": "integer"}, "startedAt": {"description": "StartedAt contains time of operation start", "format": "date-time", "type": "string"}, "syncResult": {"description": "SyncResult is the result of a Sync operation", "properties": {"resources": {"description": "Resources contains a list of sync result items for each individual resource in a sync operation", "items": {"description": "ResourceResult holds the operation result details of a specific resource", "properties": {"group": {"description": "Group specifies the API group of the resource", "type": "string"}, "hookPhase": {"description": "HookPhase contains the state of any operation associated with this resource OR hook This can also contain values for non-hook resources.", "type": "string"}, "hookType": {"description": "HookType specifies the type of the hook. Empty for non-hook resources", "type": "string"}, "kind": {"description": "Kind specifies the API kind of the resource", "type": "string"}, "message": {"description": "Message contains an informational or error message for the last sync OR operation", "type": "string"}, "name": {"description": "Name specifies the name of the resource", "type": "string"}, "namespace": {"description": "Namespace specifies the target namespace of the resource", "type": "string"}, "status": {"description": "Status holds the final result of the sync. Will be empty if the resources is yet to be applied/pruned and is always zero-value for hooks", "type": "string"}, "syncPhase": {"description": "SyncPhase indicates the particular phase of the sync that this result was acquired in", "type": "string"}, "version": {"description": "Version specifies the API version of the resource", "type": "string"}}, "required": ["group", "kind", "name", "namespace", "version"], "type": "object"}, "type": "array"}, "revision": {"description": "Revision holds the revision this sync operation was performed to", "type": "string"}, "source": {"description": "Source records the application source information of the sync, used for comparing auto-sync", "properties": {"chart": {"description": "Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.", "type": "string"}, "directory": {"description": "Directory holds path/directory specific options", "properties": {"exclude": {"description": "Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation", "type": "string"}, "include": {"description": "Include contains a glob pattern to match paths against that should be explicitly included during manifest generation", "type": "string"}, "jsonnet": {"description": "Jsonnet holds options specific to Jsonnet", "properties": {"extVars": {"description": "ExtVars is a list of Jsonnet External Variables", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"description": "Additional library search dirs", "items": {"type": "string"}, "type": "array"}, "tlas": {"description": "TLAS is a list of Jsonnet Top-level Arguments", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"description": "Recurse specifies whether to scan a directory recursively for manifests", "type": "boolean"}}, "type": "object"}, "helm": {"description": "Helm holds helm specific options", "properties": {"fileParameters": {"description": "FileParameters are file parameters to the helm template", "items": {"description": "HelmFileParameter is a file parameter that's passed to helm template during manifest generation", "properties": {"name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "path": {"description": "Path is the path to the file containing the values for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"description": "IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values", "type": "boolean"}, "parameters": {"description": "Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation", "items": {"description": "HelmParameter is a parameter that's passed to helm template during manifest generation", "properties": {"forceString": {"description": "ForceString determines whether to tell Helm to interpret booleans and numbers as strings", "type": "boolean"}, "name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "value": {"description": "Value is the value for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"description": "PassCredentials pass credentials to all domains (Helm's --pass-credentials)", "type": "boolean"}, "releaseName": {"description": "ReleaseName is the Helm release name to use. If omitted it will use the application name", "type": "string"}, "skipCrds": {"description": "SkipCrds skips custom resource definition installation step (Helm's --skip-crds)", "type": "boolean"}, "valueFiles": {"description": "ValuesFiles is a list of Helm value files to use when generating a template", "items": {"type": "string"}, "type": "array"}, "values": {"description": "Values specifies Helm values to be passed to helm template, typically defined as a block", "type": "string"}, "version": {"description": "Version is the Helm version to use for templating (\"3\")", "type": "string"}}, "type": "object"}, "kustomize": {"description": "Kustomize holds kustomize specific options", "properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "description": "CommonAnnotations is a list of additional annotations to add to rendered manifests", "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "description": "CommonLabels is a list of additional labels to add to rendered manifests", "type": "object"}, "forceCommonAnnotations": {"description": "ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps", "type": "boolean"}, "forceCommonLabels": {"description": "ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps", "type": "boolean"}, "images": {"description": "Images is a list of Kustomize image override specifications", "items": {"description": "KustomizeImage represents a Kustomize image definition in the format [old_image_name=]:", "type": "string"}, "type": "array"}, "namePrefix": {"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "type": "string"}, "nameSuffix": {"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "type": "string"}, "version": {"description": "Version controls which version of Kustomize to use for rendering manifests", "type": "string"}}, "type": "object"}, "path": {"description": "Path is a directory path within the Git repository, and is only valid for applications sourced from Git.", "type": "string"}, "plugin": {"description": "Plugin holds config management plugin specific options", "properties": {"env": {"description": "Env is a list of environment variable entries", "items": {"description": "EnvEntry represents an entry in the application's environment", "properties": {"name": {"description": "Name is the name of the variable, usually expressed in uppercase", "type": "string"}, "value": {"description": "Value is the value of the variable", "type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"description": "RepoURL is the URL to the repository (Git or Helm) that contains the application manifests", "type": "string"}, "targetRevision": {"description": "TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.", "type": "string"}}, "required": ["repoURL"], "type": "object"}}, "required": ["revision"], "type": "object"}}, "required": ["operation", "phase", "startedAt"], "type": "object"}, "reconciledAt": {"description": "ReconciledAt indicates when the application state was reconciled using the latest git version", "format": "date-time", "type": "string"}, "resourceHealthSource": {"description": "ResourceHealthSource indicates where the resource health status is stored: inline if not set or appTree", "type": "string"}, "resources": {"description": "Resources is a list of Kubernetes resources managed by this application", "items": {"description": "ResourceStatus holds the current sync and health status of a resource TODO: describe members of this type", "properties": {"group": {"type": "string"}, "health": {"description": "HealthStatus contains information about the currently observed health state of an application or resource", "properties": {"message": {"description": "Message is a human-readable informational message describing the health status", "type": "string"}, "status": {"description": "Status holds the status code of the application or resource", "type": "string"}}, "type": "object"}, "hook": {"type": "boolean"}, "kind": {"type": "string"}, "name": {"type": "string"}, "namespace": {"type": "string"}, "requiresPruning": {"type": "boolean"}, "status": {"description": "SyncStatusCode is a type which represents possible comparison results", "type": "string"}, "syncWave": {"format": "int64", "type": "integer"}, "version": {"type": "string"}}, "type": "object"}, "type": "array"}, "sourceType": {"description": "SourceType specifies the type of this application", "type": "string"}, "summary": {"description": "Summary contains a list of URLs and container images used by this application", "properties": {"externalURLs": {"description": "ExternalURLs holds all external URLs of application child resources.", "items": {"type": "string"}, "type": "array"}, "images": {"description": "Images holds all images of application child resources.", "items": {"type": "string"}, "type": "array"}}, "type": "object"}, "sync": {"description": "Sync contains information about the application's current sync status", "properties": {"comparedTo": {"description": "ComparedTo contains information about what has been compared", "properties": {"destination": {"description": "Destination is a reference to the application's destination used for comparison", "properties": {"name": {"description": "Name is an alternate way of specifying the target cluster by its symbolic name", "type": "string"}, "namespace": {"description": "Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace", "type": "string"}, "server": {"description": "Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API", "type": "string"}}, "type": "object"}, "source": {"description": "Source is a reference to the application's source used for comparison", "properties": {"chart": {"description": "Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.", "type": "string"}, "directory": {"description": "Directory holds path/directory specific options", "properties": {"exclude": {"description": "Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation", "type": "string"}, "include": {"description": "Include contains a glob pattern to match paths against that should be explicitly included during manifest generation", "type": "string"}, "jsonnet": {"description": "Jsonnet holds options specific to Jsonnet", "properties": {"extVars": {"description": "ExtVars is a list of Jsonnet External Variables", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"description": "Additional library search dirs", "items": {"type": "string"}, "type": "array"}, "tlas": {"description": "TLAS is a list of Jsonnet Top-level Arguments", "items": {"description": "JsonnetVar represents a variable to be passed to jsonnet during manifest generation", "properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"description": "Recurse specifies whether to scan a directory recursively for manifests", "type": "boolean"}}, "type": "object"}, "helm": {"description": "Helm holds helm specific options", "properties": {"fileParameters": {"description": "FileParameters are file parameters to the helm template", "items": {"description": "HelmFileParameter is a file parameter that's passed to helm template during manifest generation", "properties": {"name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "path": {"description": "Path is the path to the file containing the values for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"description": "IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values", "type": "boolean"}, "parameters": {"description": "Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation", "items": {"description": "HelmParameter is a parameter that's passed to helm template during manifest generation", "properties": {"forceString": {"description": "ForceString determines whether to tell Helm to interpret booleans and numbers as strings", "type": "boolean"}, "name": {"description": "Name is the name of the Helm parameter", "type": "string"}, "value": {"description": "Value is the value for the Helm parameter", "type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"description": "PassCredentials pass credentials to all domains (Helm's --pass-credentials)", "type": "boolean"}, "releaseName": {"description": "ReleaseName is the Helm release name to use. If omitted it will use the application name", "type": "string"}, "skipCrds": {"description": "SkipCrds skips custom resource definition installation step (Helm's --skip-crds)", "type": "boolean"}, "valueFiles": {"description": "ValuesFiles is a list of Helm value files to use when generating a template", "items": {"type": "string"}, "type": "array"}, "values": {"description": "Values specifies Helm values to be passed to helm template, typically defined as a block", "type": "string"}, "version": {"description": "Version is the Helm version to use for templating (\"3\")", "type": "string"}}, "type": "object"}, "kustomize": {"description": "Kustomize holds kustomize specific options", "properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "description": "CommonAnnotations is a list of additional annotations to add to rendered manifests", "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "description": "CommonLabels is a list of additional labels to add to rendered manifests", "type": "object"}, "forceCommonAnnotations": {"description": "ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps", "type": "boolean"}, "forceCommonLabels": {"description": "ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps", "type": "boolean"}, "images": {"description": "Images is a list of Kustomize image override specifications", "items": {"description": "KustomizeImage represents a Kustomize image definition in the format [old_image_name=]:", "type": "string"}, "type": "array"}, "namePrefix": {"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "type": "string"}, "nameSuffix": {"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "type": "string"}, "version": {"description": "Version controls which version of Kustomize to use for rendering manifests", "type": "string"}}, "type": "object"}, "path": {"description": "Path is a directory path within the Git repository, and is only valid for applications sourced from Git.", "type": "string"}, "plugin": {"description": "Plugin holds config management plugin specific options", "properties": {"env": {"description": "Env is a list of environment variable entries", "items": {"description": "EnvEntry represents an entry in the application's environment", "properties": {"name": {"description": "Name is the name of the variable, usually expressed in uppercase", "type": "string"}, "value": {"description": "Value is the value of the variable", "type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"description": "RepoURL is the URL to the repository (Git or Helm) that contains the application manifests", "type": "string"}, "targetRevision": {"description": "TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.", "type": "string"}}, "required": ["repoURL"], "type": "object"}}, "required": ["destination", "source"], "type": "object"}, "revision": {"description": "Revision contains information about the revision the comparison has been performed to", "type": "string"}, "status": {"description": "Status is the sync state of the comparison", "type": "string"}}, "required": ["status"], "type": "object"}}, "type": "object"}}, "required": ["metadata", "spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/applicationconfiguration-core-v1alpha2.json b/schemas/v1.22.0/applicationconfiguration-core-v1alpha2.json deleted file mode 100644 index ad519d6b..00000000 --- a/schemas/v1.22.0/applicationconfiguration-core-v1alpha2.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "An ApplicationConfiguration represents an OAM application.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "An ApplicationConfigurationSpec defines the desired state of a ApplicationConfiguration.", "properties": {"components": {"description": "Components of which this ApplicationConfiguration consists. Each component will be used to instantiate a workload.", "items": {"description": "An ApplicationConfigurationComponent specifies a component of an ApplicationConfiguration. Each component is used to instantiate a workload.", "properties": {"componentName": {"description": "ComponentName specifies a component whose latest revision will be bind with ApplicationConfiguration. When the spec of the referenced component changes, ApplicationConfiguration will automatically migrate all trait affect from the prior revision to the new one. This is mutually exclusive with RevisionName.", "type": "string"}, "dataInputs": {"description": "DataInputs specify the data input sinks into this component.", "items": {"description": "DataInput specifies a data input sink to an object. If input is array, it will be appended to the target field paths.", "properties": {"toFieldPaths": {"description": "ToFieldPaths specifies the field paths of an object to fill passed value.", "items": {"type": "string"}, "type": "array"}, "valueFrom": {"description": "ValueFrom specifies the value source.", "properties": {"dataOutputName": {"description": "DataOutputName matches a name of a DataOutput in the same AppConfig.", "type": "string"}}, "required": ["dataOutputName"], "type": "object"}}, "type": "object"}, "type": "array"}, "dataOutputs": {"description": "DataOutputs specify the data output sources from this component.", "items": {"description": "DataOutput specifies a data output source from an object.", "properties": {"conditions": {"description": "Conditions specify the conditions that should be satisfied before emitting a data output. Different conditions are AND-ed together. If no conditions is specified, it is by default to check output value not empty.", "items": {"description": "ConditionRequirement specifies the requirement to match a value.", "properties": {"fieldPath": {"description": "FieldPath specifies got value from workload/trait object", "type": "string"}, "op": {"description": "ConditionOperator specifies the operator to match a value.", "type": "string"}, "value": {"description": "Value specifies an expected value This is mutually exclusive with ValueFrom", "type": "string"}, "valueFrom": {"description": "ValueFrom specifies expected value from AppConfig This is mutually exclusive with Value", "properties": {"fieldPath": {"type": "string"}}, "required": ["fieldPath"], "type": "object"}}, "required": ["op"], "type": "object"}, "type": "array"}, "fieldPath": {"description": "FieldPath refers to the value of an object's field.", "type": "string"}, "name": {"description": "Name is the unique name of a DataOutput in an ApplicationConfiguration.", "type": "string"}}, "type": "object"}, "type": "array"}, "parameterValues": {"description": "ParameterValues specify values for the the specified component's parameters. Any parameter required by the component must be specified.", "items": {"description": "A ComponentParameterValue specifies a value for a named parameter. The associated component must publish a parameter with this name.", "properties": {"name": {"description": "Name of the component parameter to set.", "type": "string"}, "value": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Value to set.", "x-kubernetes-int-or-string": true}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "revisionName": {"description": "RevisionName of a specific component revision to which to bind ApplicationConfiguration. This is mutually exclusive with componentName.", "type": "string"}, "scopes": {"description": "Scopes in which the specified component should exist.", "items": {"description": "A ComponentScope specifies a scope in which a component should exist.", "properties": {"scopeRef": {"description": "A ScopeReference must refer to an OAM scope resource.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}}, "required": ["scopeRef"], "type": "object"}, "type": "array"}, "traits": {"description": "Traits of the specified component.", "items": {"description": "A ComponentTrait specifies a trait that should be applied to a component.", "properties": {"dataInputs": {"description": "DataInputs specify the data input sinks into this trait.", "items": {"description": "DataInput specifies a data input sink to an object. If input is array, it will be appended to the target field paths.", "properties": {"toFieldPaths": {"description": "ToFieldPaths specifies the field paths of an object to fill passed value.", "items": {"type": "string"}, "type": "array"}, "valueFrom": {"description": "ValueFrom specifies the value source.", "properties": {"dataOutputName": {"description": "DataOutputName matches a name of a DataOutput in the same AppConfig.", "type": "string"}}, "required": ["dataOutputName"], "type": "object"}}, "type": "object"}, "type": "array"}, "dataOutputs": {"description": "DataOutputs specify the data output sources from this trait.", "items": {"description": "DataOutput specifies a data output source from an object.", "properties": {"conditions": {"description": "Conditions specify the conditions that should be satisfied before emitting a data output. Different conditions are AND-ed together. If no conditions is specified, it is by default to check output value not empty.", "items": {"description": "ConditionRequirement specifies the requirement to match a value.", "properties": {"fieldPath": {"description": "FieldPath specifies got value from workload/trait object", "type": "string"}, "op": {"description": "ConditionOperator specifies the operator to match a value.", "type": "string"}, "value": {"description": "Value specifies an expected value This is mutually exclusive with ValueFrom", "type": "string"}, "valueFrom": {"description": "ValueFrom specifies expected value from AppConfig This is mutually exclusive with Value", "properties": {"fieldPath": {"type": "string"}}, "required": ["fieldPath"], "type": "object"}}, "required": ["op"], "type": "object"}, "type": "array"}, "fieldPath": {"description": "FieldPath refers to the value of an object's field.", "type": "string"}, "name": {"description": "Name is the unique name of a DataOutput in an ApplicationConfiguration.", "type": "string"}}, "type": "object"}, "type": "array"}, "trait": {"description": "A Trait that will be created for the component", "type": "object", "x-kubernetes-embedded-resource": true, "x-kubernetes-preserve-unknown-fields": true}}, "required": ["trait"], "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}}, "required": ["components"], "type": "object"}, "status": {"description": "An ApplicationConfigurationStatus represents the observed state of a ApplicationConfiguration.", "properties": {"conditions": {"description": "Conditions of the resource.", "items": {"description": "A Condition that may apply to a resource.", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the last time this condition transitioned from one status to another.", "format": "date-time", "type": "string"}, "message": {"description": "A Message containing details about this condition's last transition from one status to another, if any.", "type": "string"}, "reason": {"description": "A Reason for this condition's last transition from one status to another.", "type": "string"}, "status": {"description": "Status of this condition; is it currently True, False, or Unknown?", "type": "string"}, "type": {"description": "Type of this condition. At most one of each condition type may apply to a resource at any point in time.", "type": "string"}}, "required": ["lastTransitionTime", "reason", "status", "type"], "type": "object"}, "type": "array"}, "dependency": {"description": "DependencyStatus represents the observed state of the dependency of an ApplicationConfiguration.", "properties": {"unsatisfied": {"items": {"description": "UnstaifiedDependency describes unsatisfied dependency flow between one pair of objects.", "properties": {"from": {"description": "DependencyFromObject represents the object that dependency data comes from.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "fieldPath": {"type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}, "reason": {"type": "string"}, "to": {"description": "DependencyToObject represents the object that dependency data goes to.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "fieldPaths": {"items": {"type": "string"}, "type": "array"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}}, "required": ["from", "reason", "to"], "type": "object"}, "type": "array"}}, "type": "object"}, "historyWorkloads": {"description": "HistoryWorkloads will record history but still working revision workloads.", "items": {"description": "HistoryWorkload contain the old component revision that are still running", "properties": {"revision": {"description": "component revision of this workload", "type": "string"}, "workloadRef": {"description": "Reference to running workload.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}}, "type": "object"}, "type": "array"}, "observedGeneration": {"description": "The generation observed by the appConfig controller.", "format": "int64", "type": "integer"}, "status": {"description": "Status is a place holder for a customized controller to fill if it needs a single place to summarize the status of the entire application", "type": "string"}, "workloads": {"description": "Workloads created by this ApplicationConfiguration.", "items": {"description": "A WorkloadStatus represents the status of a workload.", "properties": {"componentName": {"description": "ComponentName that produced this workload.", "type": "string"}, "componentRevisionName": {"description": "ComponentRevisionName of current component", "type": "string"}, "scopes": {"description": "Scopes associated with this workload.", "items": {"description": "A WorkloadScope represents a scope associated with a workload and its status", "properties": {"scopeRef": {"description": "Reference to a scope created by an ApplicationConfiguration.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}, "status": {"description": "Status is a place holder for a customized controller to fill if it needs a single place to summarize the status of the scope", "type": "string"}}, "required": ["scopeRef"], "type": "object"}, "type": "array"}, "status": {"description": "Status is a place holder for a customized controller to fill if it needs a single place to summarize the entire status of the workload", "type": "string"}, "traits": {"description": "Traits associated with this workload.", "items": {"description": "A WorkloadTrait represents a trait associated with a workload and its status", "properties": {"status": {"description": "Status is a place holder for a customized controller to fill if it needs a single place to summarize the status of the trait", "type": "string"}, "traitRef": {"description": "Reference to a trait created by an ApplicationConfiguration.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}}, "required": ["traitRef"], "type": "object"}, "type": "array"}, "workloadRef": {"description": "Reference to a workload created by an ApplicationConfiguration.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}}, "type": "object"}, "type": "array"}}, "required": ["historyWorkloads"], "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/applicationset-argoproj-v1alpha1.json b/schemas/v1.22.0/applicationset-argoproj-v1alpha1.json deleted file mode 100644 index a8e74d62..00000000 --- a/schemas/v1.22.0/applicationset-argoproj-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"apiVersion": {"type": "string"}, "kind": {"type": "string"}, "metadata": {"type": "object"}, "spec": {"properties": {"generators": {"items": {"properties": {"clusterDecisionResource": {"properties": {"configMapRef": {"type": "string"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "name": {"type": "string"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}, "values": {"additionalProperties": {"type": "string"}, "type": "object"}}, "required": ["configMapRef"], "type": "object"}, "clusters": {"properties": {"selector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}, "values": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "git": {"properties": {"directories": {"items": {"properties": {"exclude": {"type": "boolean"}, "path": {"type": "string"}}, "required": ["path"], "type": "object"}, "type": "array"}, "files": {"items": {"properties": {"path": {"type": "string"}}, "required": ["path"], "type": "object"}, "type": "array"}, "repoURL": {"type": "string"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "revision": {"type": "string"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "required": ["repoURL", "revision"], "type": "object"}, "list": {"properties": {"elements": {"items": {"x-kubernetes-preserve-unknown-fields": true}, "type": "array"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "required": ["elements"], "type": "object"}, "matrix": {"properties": {"generators": {"items": {"properties": {"clusterDecisionResource": {"properties": {"configMapRef": {"type": "string"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "name": {"type": "string"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}, "values": {"additionalProperties": {"type": "string"}, "type": "object"}}, "required": ["configMapRef"], "type": "object"}, "clusters": {"properties": {"selector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}, "values": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "git": {"properties": {"directories": {"items": {"properties": {"exclude": {"type": "boolean"}, "path": {"type": "string"}}, "required": ["path"], "type": "object"}, "type": "array"}, "files": {"items": {"properties": {"path": {"type": "string"}}, "required": ["path"], "type": "object"}, "type": "array"}, "repoURL": {"type": "string"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "revision": {"type": "string"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "required": ["repoURL", "revision"], "type": "object"}, "list": {"properties": {"elements": {"items": {"x-kubernetes-preserve-unknown-fields": true}, "type": "array"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "required": ["elements"], "type": "object"}, "matrix": {"x-kubernetes-preserve-unknown-fields": true}, "merge": {"x-kubernetes-preserve-unknown-fields": true}, "pullRequest": {"properties": {"bitbucketServer": {"properties": {"api": {"type": "string"}, "basicAuth": {"properties": {"passwordRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "username": {"type": "string"}}, "required": ["passwordRef", "username"], "type": "object"}, "project": {"type": "string"}, "repo": {"type": "string"}}, "required": ["api", "project", "repo"], "type": "object"}, "filters": {"items": {"properties": {"branchMatch": {"type": "string"}}, "type": "object"}, "type": "array"}, "gitea": {"properties": {"api": {"type": "string"}, "insecure": {"type": "boolean"}, "owner": {"type": "string"}, "repo": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["api", "owner", "repo"], "type": "object"}, "github": {"properties": {"api": {"type": "string"}, "appSecretName": {"type": "string"}, "labels": {"items": {"type": "string"}, "type": "array"}, "owner": {"type": "string"}, "repo": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["owner", "repo"], "type": "object"}, "gitlab": {"properties": {"api": {"type": "string"}, "labels": {"items": {"type": "string"}, "type": "array"}, "project": {"type": "string"}, "pullRequestState": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["project"], "type": "object"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "type": "object"}, "scmProvider": {"properties": {"azureDevOps": {"properties": {"accessTokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "allBranches": {"type": "boolean"}, "api": {"type": "string"}, "organization": {"type": "string"}, "teamProject": {"type": "string"}}, "required": ["accessTokenRef", "organization", "teamProject"], "type": "object"}, "bitbucket": {"properties": {"allBranches": {"type": "boolean"}, "appPasswordRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "owner": {"type": "string"}, "user": {"type": "string"}}, "required": ["appPasswordRef", "owner", "user"], "type": "object"}, "bitbucketServer": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "basicAuth": {"properties": {"passwordRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "username": {"type": "string"}}, "required": ["passwordRef", "username"], "type": "object"}, "project": {"type": "string"}}, "required": ["api", "project"], "type": "object"}, "cloneProtocol": {"type": "string"}, "filters": {"items": {"properties": {"branchMatch": {"type": "string"}, "labelMatch": {"type": "string"}, "pathsDoNotExist": {"items": {"type": "string"}, "type": "array"}, "pathsExist": {"items": {"type": "string"}, "type": "array"}, "repositoryMatch": {"type": "string"}}, "type": "object"}, "type": "array"}, "gitea": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "insecure": {"type": "boolean"}, "owner": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["api", "owner"], "type": "object"}, "github": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "appSecretName": {"type": "string"}, "organization": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["organization"], "type": "object"}, "gitlab": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "group": {"type": "string"}, "includeSubgroups": {"type": "boolean"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["group"], "type": "object"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "type": "object"}, "selector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}}, "type": "object"}, "type": "array"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "required": ["generators"], "type": "object"}, "merge": {"properties": {"generators": {"items": {"properties": {"clusterDecisionResource": {"properties": {"configMapRef": {"type": "string"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "name": {"type": "string"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}, "values": {"additionalProperties": {"type": "string"}, "type": "object"}}, "required": ["configMapRef"], "type": "object"}, "clusters": {"properties": {"selector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}, "values": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "git": {"properties": {"directories": {"items": {"properties": {"exclude": {"type": "boolean"}, "path": {"type": "string"}}, "required": ["path"], "type": "object"}, "type": "array"}, "files": {"items": {"properties": {"path": {"type": "string"}}, "required": ["path"], "type": "object"}, "type": "array"}, "repoURL": {"type": "string"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "revision": {"type": "string"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "required": ["repoURL", "revision"], "type": "object"}, "list": {"properties": {"elements": {"items": {"x-kubernetes-preserve-unknown-fields": true}, "type": "array"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "required": ["elements"], "type": "object"}, "matrix": {"x-kubernetes-preserve-unknown-fields": true}, "merge": {"x-kubernetes-preserve-unknown-fields": true}, "pullRequest": {"properties": {"bitbucketServer": {"properties": {"api": {"type": "string"}, "basicAuth": {"properties": {"passwordRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "username": {"type": "string"}}, "required": ["passwordRef", "username"], "type": "object"}, "project": {"type": "string"}, "repo": {"type": "string"}}, "required": ["api", "project", "repo"], "type": "object"}, "filters": {"items": {"properties": {"branchMatch": {"type": "string"}}, "type": "object"}, "type": "array"}, "gitea": {"properties": {"api": {"type": "string"}, "insecure": {"type": "boolean"}, "owner": {"type": "string"}, "repo": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["api", "owner", "repo"], "type": "object"}, "github": {"properties": {"api": {"type": "string"}, "appSecretName": {"type": "string"}, "labels": {"items": {"type": "string"}, "type": "array"}, "owner": {"type": "string"}, "repo": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["owner", "repo"], "type": "object"}, "gitlab": {"properties": {"api": {"type": "string"}, "labels": {"items": {"type": "string"}, "type": "array"}, "project": {"type": "string"}, "pullRequestState": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["project"], "type": "object"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "type": "object"}, "scmProvider": {"properties": {"azureDevOps": {"properties": {"accessTokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "allBranches": {"type": "boolean"}, "api": {"type": "string"}, "organization": {"type": "string"}, "teamProject": {"type": "string"}}, "required": ["accessTokenRef", "organization", "teamProject"], "type": "object"}, "bitbucket": {"properties": {"allBranches": {"type": "boolean"}, "appPasswordRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "owner": {"type": "string"}, "user": {"type": "string"}}, "required": ["appPasswordRef", "owner", "user"], "type": "object"}, "bitbucketServer": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "basicAuth": {"properties": {"passwordRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "username": {"type": "string"}}, "required": ["passwordRef", "username"], "type": "object"}, "project": {"type": "string"}}, "required": ["api", "project"], "type": "object"}, "cloneProtocol": {"type": "string"}, "filters": {"items": {"properties": {"branchMatch": {"type": "string"}, "labelMatch": {"type": "string"}, "pathsDoNotExist": {"items": {"type": "string"}, "type": "array"}, "pathsExist": {"items": {"type": "string"}, "type": "array"}, "repositoryMatch": {"type": "string"}}, "type": "object"}, "type": "array"}, "gitea": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "insecure": {"type": "boolean"}, "owner": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["api", "owner"], "type": "object"}, "github": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "appSecretName": {"type": "string"}, "organization": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["organization"], "type": "object"}, "gitlab": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "group": {"type": "string"}, "includeSubgroups": {"type": "boolean"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["group"], "type": "object"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "type": "object"}, "selector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}}, "type": "object"}, "type": "array"}, "mergeKeys": {"items": {"type": "string"}, "type": "array"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "required": ["generators", "mergeKeys"], "type": "object"}, "pullRequest": {"properties": {"bitbucketServer": {"properties": {"api": {"type": "string"}, "basicAuth": {"properties": {"passwordRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "username": {"type": "string"}}, "required": ["passwordRef", "username"], "type": "object"}, "project": {"type": "string"}, "repo": {"type": "string"}}, "required": ["api", "project", "repo"], "type": "object"}, "filters": {"items": {"properties": {"branchMatch": {"type": "string"}}, "type": "object"}, "type": "array"}, "gitea": {"properties": {"api": {"type": "string"}, "insecure": {"type": "boolean"}, "owner": {"type": "string"}, "repo": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["api", "owner", "repo"], "type": "object"}, "github": {"properties": {"api": {"type": "string"}, "appSecretName": {"type": "string"}, "labels": {"items": {"type": "string"}, "type": "array"}, "owner": {"type": "string"}, "repo": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["owner", "repo"], "type": "object"}, "gitlab": {"properties": {"api": {"type": "string"}, "labels": {"items": {"type": "string"}, "type": "array"}, "project": {"type": "string"}, "pullRequestState": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["project"], "type": "object"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "type": "object"}, "scmProvider": {"properties": {"azureDevOps": {"properties": {"accessTokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "allBranches": {"type": "boolean"}, "api": {"type": "string"}, "organization": {"type": "string"}, "teamProject": {"type": "string"}}, "required": ["accessTokenRef", "organization", "teamProject"], "type": "object"}, "bitbucket": {"properties": {"allBranches": {"type": "boolean"}, "appPasswordRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "owner": {"type": "string"}, "user": {"type": "string"}}, "required": ["appPasswordRef", "owner", "user"], "type": "object"}, "bitbucketServer": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "basicAuth": {"properties": {"passwordRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}, "username": {"type": "string"}}, "required": ["passwordRef", "username"], "type": "object"}, "project": {"type": "string"}}, "required": ["api", "project"], "type": "object"}, "cloneProtocol": {"type": "string"}, "filters": {"items": {"properties": {"branchMatch": {"type": "string"}, "labelMatch": {"type": "string"}, "pathsDoNotExist": {"items": {"type": "string"}, "type": "array"}, "pathsExist": {"items": {"type": "string"}, "type": "array"}, "repositoryMatch": {"type": "string"}}, "type": "object"}, "type": "array"}, "gitea": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "insecure": {"type": "boolean"}, "owner": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["api", "owner"], "type": "object"}, "github": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "appSecretName": {"type": "string"}, "organization": {"type": "string"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["organization"], "type": "object"}, "gitlab": {"properties": {"allBranches": {"type": "boolean"}, "api": {"type": "string"}, "group": {"type": "string"}, "includeSubgroups": {"type": "boolean"}, "tokenRef": {"properties": {"key": {"type": "string"}, "secretName": {"type": "string"}}, "required": ["key", "secretName"], "type": "object"}}, "required": ["group"], "type": "object"}, "requeueAfterSeconds": {"format": "int64", "type": "integer"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "type": "object"}, "selector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}}, "type": "object"}, "type": "array"}, "goTemplate": {"type": "boolean"}, "syncPolicy": {"properties": {"preserveResourcesOnDeletion": {"type": "boolean"}}, "type": "object"}, "template": {"properties": {"metadata": {"properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "finalizers": {"items": {"type": "string"}, "type": "array"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "type": "object"}, "spec": {"properties": {"destination": {"properties": {"name": {"type": "string"}, "namespace": {"type": "string"}, "server": {"type": "string"}}, "type": "object"}, "ignoreDifferences": {"items": {"properties": {"group": {"type": "string"}, "jqPathExpressions": {"items": {"type": "string"}, "type": "array"}, "jsonPointers": {"items": {"type": "string"}, "type": "array"}, "kind": {"type": "string"}, "managedFieldsManagers": {"items": {"type": "string"}, "type": "array"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["kind"], "type": "object"}, "type": "array"}, "info": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "project": {"type": "string"}, "revisionHistoryLimit": {"format": "int64", "type": "integer"}, "source": {"properties": {"chart": {"type": "string"}, "directory": {"properties": {"exclude": {"type": "string"}, "include": {"type": "string"}, "jsonnet": {"properties": {"extVars": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "libs": {"items": {"type": "string"}, "type": "array"}, "tlas": {"items": {"properties": {"code": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}}, "type": "object"}, "recurse": {"type": "boolean"}}, "type": "object"}, "helm": {"properties": {"fileParameters": {"items": {"properties": {"name": {"type": "string"}, "path": {"type": "string"}}, "type": "object"}, "type": "array"}, "ignoreMissingValueFiles": {"type": "boolean"}, "parameters": {"items": {"properties": {"forceString": {"type": "boolean"}, "name": {"type": "string"}, "value": {"type": "string"}}, "type": "object"}, "type": "array"}, "passCredentials": {"type": "boolean"}, "releaseName": {"type": "string"}, "skipCrds": {"type": "boolean"}, "valueFiles": {"items": {"type": "string"}, "type": "array"}, "values": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "kustomize": {"properties": {"commonAnnotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "commonLabels": {"additionalProperties": {"type": "string"}, "type": "object"}, "forceCommonAnnotations": {"type": "boolean"}, "forceCommonLabels": {"type": "boolean"}, "images": {"items": {"type": "string"}, "type": "array"}, "namePrefix": {"type": "string"}, "nameSuffix": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "path": {"type": "string"}, "plugin": {"properties": {"env": {"items": {"properties": {"name": {"type": "string"}, "value": {"type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "type": "object"}, "repoURL": {"type": "string"}, "targetRevision": {"type": "string"}}, "required": ["repoURL"], "type": "object"}, "syncPolicy": {"properties": {"automated": {"properties": {"allowEmpty": {"type": "boolean"}, "prune": {"type": "boolean"}, "selfHeal": {"type": "boolean"}}, "type": "object"}, "retry": {"properties": {"backoff": {"properties": {"duration": {"type": "string"}, "factor": {"format": "int64", "type": "integer"}, "maxDuration": {"type": "string"}}, "type": "object"}, "limit": {"format": "int64", "type": "integer"}}, "type": "object"}, "syncOptions": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "required": ["destination", "project", "source"], "type": "object"}}, "required": ["metadata", "spec"], "type": "object"}}, "required": ["generators", "template"], "type": "object"}, "status": {"properties": {"conditions": {"items": {"properties": {"lastTransitionTime": {"format": "date-time", "type": "string"}, "message": {"type": "string"}, "reason": {"type": "string"}, "status": {"type": "string"}, "type": {"type": "string"}}, "required": ["message", "reason", "status", "type"], "type": "object"}, "type": "array"}}, "type": "object"}}, "required": ["metadata", "spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/appproject-argoproj-v1alpha1.json b/schemas/v1.22.0/appproject-argoproj-v1alpha1.json deleted file mode 100644 index 965f969d..00000000 --- a/schemas/v1.22.0/appproject-argoproj-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "AppProject provides a logical grouping of applications, providing controls for: * where the apps may deploy to (cluster whitelist) * what may be deployed (repository whitelist, resource whitelist/blacklist) * who can access these applications (roles, OIDC group claims bindings) * and what they can do (RBAC policies) * automation access to these roles (JWT tokens)", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "AppProjectSpec is the specification of an AppProject", "properties": {"clusterResourceBlacklist": {"description": "ClusterResourceBlacklist contains list of blacklisted cluster level resources", "items": {"description": "GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types", "properties": {"group": {"type": "string"}, "kind": {"type": "string"}}, "required": ["group", "kind"], "type": "object"}, "type": "array"}, "clusterResourceWhitelist": {"description": "ClusterResourceWhitelist contains list of whitelisted cluster level resources", "items": {"description": "GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types", "properties": {"group": {"type": "string"}, "kind": {"type": "string"}}, "required": ["group", "kind"], "type": "object"}, "type": "array"}, "description": {"description": "Description contains optional project description", "type": "string"}, "destinations": {"description": "Destinations contains list of destinations available for deployment", "items": {"description": "ApplicationDestination holds information about the application's destination", "properties": {"name": {"description": "Name is an alternate way of specifying the target cluster by its symbolic name", "type": "string"}, "namespace": {"description": "Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace", "type": "string"}, "server": {"description": "Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API", "type": "string"}}, "type": "object"}, "type": "array"}, "namespaceResourceBlacklist": {"description": "NamespaceResourceBlacklist contains list of blacklisted namespace level resources", "items": {"description": "GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types", "properties": {"group": {"type": "string"}, "kind": {"type": "string"}}, "required": ["group", "kind"], "type": "object"}, "type": "array"}, "namespaceResourceWhitelist": {"description": "NamespaceResourceWhitelist contains list of whitelisted namespace level resources", "items": {"description": "GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types", "properties": {"group": {"type": "string"}, "kind": {"type": "string"}}, "required": ["group", "kind"], "type": "object"}, "type": "array"}, "orphanedResources": {"description": "OrphanedResources specifies if controller should monitor orphaned resources of apps in this project", "properties": {"ignore": {"description": "Ignore contains a list of resources that are to be excluded from orphaned resources monitoring", "items": {"description": "OrphanedResourceKey is a reference to a resource to be ignored from", "properties": {"group": {"type": "string"}, "kind": {"type": "string"}, "name": {"type": "string"}}, "type": "object"}, "type": "array"}, "warn": {"description": "Warn indicates if warning condition should be created for apps which have orphaned resources", "type": "boolean"}}, "type": "object"}, "permitOnlyProjectScopedClusters": {"description": "PermitOnlyProjectScopedClusters determines whether destinations can only reference clusters which are project-scoped", "type": "boolean"}, "roles": {"description": "Roles are user defined RBAC roles associated with this project", "items": {"description": "ProjectRole represents a role that has access to a project", "properties": {"description": {"description": "Description is a description of the role", "type": "string"}, "groups": {"description": "Groups are a list of OIDC group claims bound to this role", "items": {"type": "string"}, "type": "array"}, "jwtTokens": {"description": "JWTTokens are a list of generated JWT tokens bound to this role", "items": {"description": "JWTToken holds the issuedAt and expiresAt values of a token", "properties": {"exp": {"format": "int64", "type": "integer"}, "iat": {"format": "int64", "type": "integer"}, "id": {"type": "string"}}, "required": ["iat"], "type": "object"}, "type": "array"}, "name": {"description": "Name is a name for this role", "type": "string"}, "policies": {"description": "Policies Stores a list of casbin formatted strings that define access policies for the role in the project", "items": {"type": "string"}, "type": "array"}}, "required": ["name"], "type": "object"}, "type": "array"}, "signatureKeys": {"description": "SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync", "items": {"description": "SignatureKey is the specification of a key required to verify commit signatures with", "properties": {"keyID": {"description": "The ID of the key in hexadecimal notation", "type": "string"}}, "required": ["keyID"], "type": "object"}, "type": "array"}, "sourceNamespaces": {"description": "SourceNamespaces defines the namespaces application resources are allowed to be created in", "items": {"type": "string"}, "type": "array"}, "sourceRepos": {"description": "SourceRepos contains list of repository URLs which can be used for deployment", "items": {"type": "string"}, "type": "array"}, "syncWindows": {"description": "SyncWindows controls when syncs can be run for apps in this project", "items": {"description": "SyncWindow contains the kind, time, duration and attributes that are used to assign the syncWindows to apps", "properties": {"applications": {"description": "Applications contains a list of applications that the window will apply to", "items": {"type": "string"}, "type": "array"}, "clusters": {"description": "Clusters contains a list of clusters that the window will apply to", "items": {"type": "string"}, "type": "array"}, "duration": {"description": "Duration is the amount of time the sync window will be open", "type": "string"}, "kind": {"description": "Kind defines if the window allows or blocks syncs", "type": "string"}, "manualSync": {"description": "ManualSync enables manual syncs when they would otherwise be blocked", "type": "boolean"}, "namespaces": {"description": "Namespaces contains a list of namespaces that the window will apply to", "items": {"type": "string"}, "type": "array"}, "schedule": {"description": "Schedule is the time the window will begin, specified in cron format", "type": "string"}, "timeZone": {"description": "TimeZone of the sync that will be applied to the schedule", "type": "string"}}, "type": "object"}, "type": "array"}}, "type": "object"}, "status": {"description": "AppProjectStatus contains status information for AppProject CRs", "properties": {"jwtTokensByRole": {"additionalProperties": {"description": "JWTTokens represents a list of JWT tokens", "properties": {"items": {"items": {"description": "JWTToken holds the issuedAt and expiresAt values of a token", "properties": {"exp": {"format": "int64", "type": "integer"}, "iat": {"format": "int64", "type": "integer"}, "id": {"type": "string"}}, "required": ["iat"], "type": "object"}, "type": "array"}}, "type": "object"}, "description": "JWTTokensByRole contains a list of JWT tokens issued for a given role", "type": "object"}}, "type": "object"}}, "required": ["metadata", "spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/authcode-dex-v1.json b/schemas/v1.22.0/authcode-dex-v1.json deleted file mode 100644 index e94e2e3e..00000000 --- a/schemas/v1.22.0/authcode-dex-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "object", "x-kubernetes-preserve-unknown-fields": true} \ No newline at end of file diff --git a/schemas/v1.22.0/authrequest-dex-v1.json b/schemas/v1.22.0/authrequest-dex-v1.json deleted file mode 100644 index e94e2e3e..00000000 --- a/schemas/v1.22.0/authrequest-dex-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "object", "x-kubernetes-preserve-unknown-fields": true} \ No newline at end of file diff --git a/schemas/v1.22.0/awschaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/awschaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index 404589be..00000000 --- a/schemas/v1.22.0/awschaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "description": "AWSChaos is the Schema for the awschaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "AWSChaosSpec is the content of the specification for an AWSChaos", - "properties": { - "action": { - "description": "Action defines the specific aws chaos action. Supported action: ec2-stop / ec2-restart / detach-volume Default action: ec2-stop", - "enum": [ - "ec2-stop", - "ec2-restart", - "detach-volume" - ], - "type": "string" - }, - "awsRegion": { - "description": "AWSRegion defines the region of aws.", - "type": "string" - }, - "deviceName": { - "description": "DeviceName indicates the name of the device. Needed in detach-volume.", - "type": "string" - }, - "duration": { - "description": "Duration represents the duration of the chaos action.", - "type": "string" - }, - "ec2Instance": { - "description": "Ec2Instance indicates the ID of the ec2 instance.", - "type": "string" - }, - "endpoint": { - "description": "Endpoint indicates the endpoint of the aws server. Just used it in test now.", - "type": "string" - }, - "secretName": { - "description": "SecretName defines the name of kubernetes secret.", - "type": "string" - }, - "volumeID": { - "description": "EbsVolume indicates the ID of the EBS volume. Needed in detach-volume.", - "type": "string" - } - }, - "required": [ - "action", - "awsRegion", - "ec2Instance" - ], - "type": "object" - }, - "status": { - "description": "AWSChaosStatus represents the status of an AWSChaos", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/awsnodetemplate-karpenter-v1alpha1.json b/schemas/v1.22.0/awsnodetemplate-karpenter-v1alpha1.json deleted file mode 100644 index 22a7ac8b..00000000 --- a/schemas/v1.22.0/awsnodetemplate-karpenter-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "AWSNodeTemplate is the Schema for the AWSNodeTemplate API", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "AWSNodeTemplateSpec is the top level specification for the AWS Karpenter Provider. This will contain configuration necessary to launch instances in AWS.", "properties": {"amiFamily": {"description": "AMIFamily is the AMI family that instances use.", "type": "string"}, "amiSelector": {"additionalProperties": {"type": "string"}, "description": "AMISelector discovers AMIs to be used by Amazon EC2 tags.", "type": "object"}, "apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "blockDeviceMappings": {"description": "BlockDeviceMappings to be applied to provisioned nodes.", "items": {"properties": {"deviceName": {"description": "The device name (for example, /dev/sdh or xvdh).", "type": "string"}, "ebs": {"description": "EBS contains parameters used to automatically set up EBS volumes when an instance is launched.", "properties": {"deleteOnTermination": {"description": "DeleteOnTermination indicates whether the EBS volume is deleted on instance termination.", "type": "boolean"}, "encrypted": {"description": "Encrypted indicates whether the EBS volume is encrypted. Encrypted volumes can only be attached to instances that support Amazon EBS encryption. If you are creating a volume from a snapshot, you can't specify an encryption value.", "type": "boolean"}, "iops": {"description": "IOPS is the number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes, this represents the number of IOPS that are provisioned for the volume. For gp2 volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting. \n The following are the supported values for each volume type: \n * gp3: 3,000-16,000 IOPS \n * io1: 100-64,000 IOPS \n * io2: 100-64,000 IOPS \n For io1 and io2 volumes, we guarantee 64,000 IOPS only for Instances built on the Nitro System (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). Other instance families guarantee performance up to 32,000 IOPS. \n This parameter is supported for io1, io2, and gp3 volumes only. This parameter is not supported for gp2, st1, sc1, or standard volumes.", "format": "int64", "type": "integer"}, "kmsKeyID": {"description": "KMSKeyID (ARN) of the symmetric Key Management Service (KMS) CMK used for encryption.", "type": "string"}, "snapshotID": {"description": "SnapshotID is the ID of an EBS snapshot", "type": "string"}, "throughput": {"description": "Throughput to provision for a gp3 volume, with a maximum of 1,000 MiB/s. Valid Range: Minimum value of 125. Maximum value of 1000.", "format": "int64", "type": "integer"}, "volumeSize": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "VolumeSize in GiBs. You must specify either a snapshot ID or a volume size. The following are the supported volumes sizes for each volume type: \n * gp2 and gp3: 1-16,384 \n * io1 and io2: 4-16,384 \n * st1 and sc1: 125-16,384 \n * standard: 1-1,024", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "volumeType": {"description": "VolumeType of the block device. For more information, see Amazon EBS volume types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) in the Amazon Elastic Compute Cloud User Guide.", "type": "string"}}, "type": "object"}}, "type": "object"}, "type": "array"}, "context": {"description": "Context is a Reserved field in EC2 APIs https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html", "type": "string"}, "instanceProfile": {"description": "InstanceProfile is the AWS identity that instances use.", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "launchTemplate": {"description": "LaunchTemplateName for the node. If not specified, a launch template will be generated. NOTE: This field is for specifying a custom launch template and is exposed in the Spec as `launchTemplate` for backwards compatibility.", "type": "string"}, "metadataOptions": {"description": "MetadataOptions for the generated launch template of provisioned nodes. \n This specifies the exposure of the Instance Metadata Service to provisioned EC2 nodes. For more information, see Instance Metadata and User Data (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) in the Amazon Elastic Compute Cloud User Guide. \n Refer to recommended, security best practices (https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node) for limiting exposure of Instance Metadata and User Data to pods. If omitted, defaults to httpEndpoint enabled, with httpProtocolIPv6 disabled, with httpPutResponseLimit of 2, and with httpTokens required.", "properties": {"httpEndpoint": {"description": "HTTPEndpoint enables or disables the HTTP metadata endpoint on provisioned nodes. If metadata options is non-nil, but this parameter is not specified, the default state is \"enabled\". \n If you specify a value of \"disabled\", instance metadata will not be accessible on the node.", "type": "string"}, "httpProtocolIPv6": {"description": "HTTPProtocolIPv6 enables or disables the IPv6 endpoint for the instance metadata service on provisioned nodes. If metadata options is non-nil, but this parameter is not specified, the default state is \"disabled\".", "type": "string"}, "httpPutResponseHopLimit": {"description": "HTTPPutResponseHopLimit is the desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further instance metadata requests can travel. Possible values are integers from 1 to 64. If metadata options is non-nil, but this parameter is not specified, the default value is 1.", "format": "int64", "type": "integer"}, "httpTokens": {"description": "HTTPTokens determines the state of token usage for instance metadata requests. If metadata options is non-nil, but this parameter is not specified, the default state is \"optional\". \n If the state is optional, one can choose to retrieve instance metadata with or without a signed token header on the request. If one retrieves the IAM role credentials without a token, the version 1.0 role credentials are returned. If one retrieves the IAM role credentials using a valid signed token, the version 2.0 role credentials are returned. \n If the state is \"required\", one must send a signed token header with any instance metadata retrieval requests. In this state, retrieving the IAM role credentials always returns the version 2.0 credentials; the version 1.0 credentials are not available.", "type": "string"}}, "type": "object"}, "securityGroupSelector": {"additionalProperties": {"type": "string"}, "description": "SecurityGroups specify the names of the security groups.", "type": "object"}, "subnetSelector": {"additionalProperties": {"type": "string"}, "description": "SubnetSelector discovers subnets by tags. A value of \"\" is a wildcard.", "type": "object"}, "tags": {"additionalProperties": {"type": "string"}, "description": "Tags to be applied on ec2 resources like instances and launch templates.", "type": "object"}, "userData": {"description": "UserData to be applied to the provisioned nodes. It must be in the appropriate format based on the AMIFamily in use. Karpenter will merge certain fields into this UserData to ensure nodes are being provisioned with the correct configuration.", "type": "string"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/azurechaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/azurechaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index ab7cc675..00000000 --- a/schemas/v1.22.0/azurechaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,177 +0,0 @@ -{ - "description": "AzureChaos is the Schema for the azurechaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "AzureChaosSpec is the content of the specification for an AzureChaos", - "properties": { - "action": { - "description": "Action defines the specific azure chaos action. Supported action: vm-stop / vm-restart / disk-detach Default action: vm-stop", - "enum": [ - "vm-stop", - "vm-restart", - "disk-detach" - ], - "type": "string" - }, - "diskName": { - "description": "DiskName indicates the name of the disk. Needed in disk-detach.", - "type": "string" - }, - "duration": { - "description": "Duration represents the duration of the chaos action.", - "type": "string" - }, - "lun": { - "description": "LUN indicates the Logical Unit Number of the data disk. Needed in disk-detach.", - "type": "integer" - }, - "resourceGroupName": { - "description": "ResourceGroupName defines the name of ResourceGroup", - "type": "string" - }, - "secretName": { - "description": "SecretName defines the name of kubernetes secret. It is used for Azure credentials.", - "type": "string" - }, - "subscriptionID": { - "description": "SubscriptionID defines the id of Azure subscription.", - "type": "string" - }, - "vmName": { - "description": "VMName defines the name of Virtual Machine", - "type": "string" - } - }, - "required": [ - "action", - "resourceGroupName", - "subscriptionID", - "vmName" - ], - "type": "object" - }, - "status": { - "description": "AzureChaosStatus represents the status of an AzureChaos", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/backup-velero-v1.json b/schemas/v1.22.0/backup-velero-v1.json deleted file mode 100644 index a57cfae8..00000000 --- a/schemas/v1.22.0/backup-velero-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "Backup is a Velero resource that represents the capture of Kubernetes cluster state at a point in time (API objects and associated volume state).", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "BackupSpec defines the specification for a Velero backup.", "properties": {"defaultVolumesToRestic": {"description": "DefaultVolumesToRestic specifies whether restic should be used to take a backup of all pod volumes by default.", "type": "boolean"}, "excludedNamespaces": {"description": "ExcludedNamespaces contains a list of namespaces that are not included in the backup.", "items": {"type": "string"}, "nullable": true, "type": "array"}, "excludedResources": {"description": "ExcludedResources is a slice of resource names that are not included in the backup.", "items": {"type": "string"}, "nullable": true, "type": "array"}, "hooks": {"description": "Hooks represent custom behaviors that should be executed at different phases of the backup.", "properties": {"resources": {"description": "Resources are hooks that should be executed when backing up individual instances of a resource.", "items": {"description": "BackupResourceHookSpec defines one or more BackupResourceHooks that should be executed based on the rules defined for namespaces, resources, and label selector.", "properties": {"excludedNamespaces": {"description": "ExcludedNamespaces specifies the namespaces to which this hook spec does not apply.", "items": {"type": "string"}, "nullable": true, "type": "array"}, "excludedResources": {"description": "ExcludedResources specifies the resources to which this hook spec does not apply.", "items": {"type": "string"}, "nullable": true, "type": "array"}, "includedNamespaces": {"description": "IncludedNamespaces specifies the namespaces to which this hook spec applies. If empty, it applies to all namespaces.", "items": {"type": "string"}, "nullable": true, "type": "array"}, "includedResources": {"description": "IncludedResources specifies the resources to which this hook spec applies. If empty, it applies to all resources.", "items": {"type": "string"}, "nullable": true, "type": "array"}, "labelSelector": {"description": "LabelSelector, if specified, filters the resources to which this hook spec applies.", "nullable": true, "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "name": {"description": "Name is the name of this hook.", "type": "string"}, "post": {"description": "PostHooks is a list of BackupResourceHooks to execute after storing the item in the backup. These are executed after all \"additional items\" from item actions are processed.", "items": {"description": "BackupResourceHook defines a hook for a resource.", "properties": {"exec": {"description": "Exec defines an exec hook.", "properties": {"command": {"description": "Command is the command and arguments to execute.", "items": {"type": "string"}, "minItems": 1, "type": "array"}, "container": {"description": "Container is the container in the pod where the command should be executed. If not specified, the pod's first container is used.", "type": "string"}, "onError": {"description": "OnError specifies how Velero should behave if it encounters an error executing this hook.", "enum": ["Continue", "Fail"], "type": "string"}, "timeout": {"description": "Timeout defines the maximum amount of time Velero should wait for the hook to complete before considering the execution a failure.", "type": "string"}}, "required": ["command"], "type": "object"}}, "required": ["exec"], "type": "object"}, "type": "array"}, "pre": {"description": "PreHooks is a list of BackupResourceHooks to execute prior to storing the item in the backup. These are executed before any \"additional items\" from item actions are processed.", "items": {"description": "BackupResourceHook defines a hook for a resource.", "properties": {"exec": {"description": "Exec defines an exec hook.", "properties": {"command": {"description": "Command is the command and arguments to execute.", "items": {"type": "string"}, "minItems": 1, "type": "array"}, "container": {"description": "Container is the container in the pod where the command should be executed. If not specified, the pod's first container is used.", "type": "string"}, "onError": {"description": "OnError specifies how Velero should behave if it encounters an error executing this hook.", "enum": ["Continue", "Fail"], "type": "string"}, "timeout": {"description": "Timeout defines the maximum amount of time Velero should wait for the hook to complete before considering the execution a failure.", "type": "string"}}, "required": ["command"], "type": "object"}}, "required": ["exec"], "type": "object"}, "type": "array"}}, "required": ["name"], "type": "object"}, "nullable": true, "type": "array"}}, "type": "object"}, "includeClusterResources": {"description": "IncludeClusterResources specifies whether cluster-scoped resources should be included for consideration in the backup.", "nullable": true, "type": "boolean"}, "includedNamespaces": {"description": "IncludedNamespaces is a slice of namespace names to include objects from. If empty, all namespaces are included.", "items": {"type": "string"}, "nullable": true, "type": "array"}, "includedResources": {"description": "IncludedResources is a slice of resource names to include in the backup. If empty, all resources are included.", "items": {"type": "string"}, "nullable": true, "type": "array"}, "labelSelector": {"description": "LabelSelector is a metav1.LabelSelector to filter with when adding individual objects to the backup. If empty or nil, all objects are included. Optional.", "nullable": true, "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "metadata": {"properties": {"labels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "orderedResources": {"additionalProperties": {"type": "string"}, "description": "OrderedResources specifies the backup order of resources of specific Kind. The map key is the Kind name and value is a list of resource names separated by commas. Each resource name has format \"namespace/resourcename\". For cluster resources, simply use \"resourcename\".", "nullable": true, "type": "object"}, "snapshotVolumes": {"description": "SnapshotVolumes specifies whether to take cloud snapshots of any PV's referenced in the set of objects included in the Backup.", "nullable": true, "type": "boolean"}, "storageLocation": {"description": "StorageLocation is a string containing the name of a BackupStorageLocation where the backup should be stored.", "type": "string"}, "ttl": {"description": "TTL is a time.Duration-parseable string describing how long the Backup should be retained for.", "type": "string"}, "volumeSnapshotLocations": {"description": "VolumeSnapshotLocations is a list containing names of VolumeSnapshotLocations associated with this backup.", "items": {"type": "string"}, "type": "array"}}, "type": "object"}, "status": {"description": "BackupStatus captures the current status of a Velero backup.", "properties": {"completionTimestamp": {"description": "CompletionTimestamp records the time a backup was completed. Completion time is recorded even on failed backups. Completion time is recorded before uploading the backup object. The server's time is used for CompletionTimestamps", "format": "date-time", "nullable": true, "type": "string"}, "errors": {"description": "Errors is a count of all error messages that were generated during execution of the backup. The actual errors are in the backup's log file in object storage.", "type": "integer"}, "expiration": {"description": "Expiration is when this Backup is eligible for garbage-collection.", "format": "date-time", "nullable": true, "type": "string"}, "formatVersion": {"description": "FormatVersion is the backup format version, including major, minor, and patch version.", "type": "string"}, "phase": {"description": "Phase is the current state of the Backup.", "enum": ["New", "FailedValidation", "InProgress", "Completed", "PartiallyFailed", "Failed", "Deleting"], "type": "string"}, "progress": {"description": "Progress contains information about the backup's execution progress. Note that this information is best-effort only -- if Velero fails to update it during a backup for any reason, it may be inaccurate/stale.", "nullable": true, "properties": {"itemsBackedUp": {"description": "ItemsBackedUp is the number of items that have actually been written to the backup tarball so far.", "type": "integer"}, "totalItems": {"description": "TotalItems is the total number of items to be backed up. This number may change throughout the execution of the backup due to plugins that return additional related items to back up, the velero.io/exclude-from-backup label, and various other filters that happen as items are processed.", "type": "integer"}}, "type": "object"}, "startTimestamp": {"description": "StartTimestamp records the time a backup was started. Separate from CreationTimestamp, since that value changes on restores. The server's time is used for StartTimestamps", "format": "date-time", "nullable": true, "type": "string"}, "validationErrors": {"description": "ValidationErrors is a slice of all validation errors (if applicable).", "items": {"type": "string"}, "nullable": true, "type": "array"}, "version": {"description": "Version is the backup format major version. Deprecated: Please see FormatVersion", "type": "integer"}, "volumeSnapshotsAttempted": {"description": "VolumeSnapshotsAttempted is the total number of attempted volume snapshots for this backup.", "type": "integer"}, "volumeSnapshotsCompleted": {"description": "VolumeSnapshotsCompleted is the total number of successfully completed volume snapshots for this backup.", "type": "integer"}, "warnings": {"description": "Warnings is a count of all warning messages that were generated during execution of the backup. The actual warnings are in the backup's log file in object storage.", "type": "integer"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/backupstoragelocation-velero-v1.json b/schemas/v1.22.0/backupstoragelocation-velero-v1.json deleted file mode 100644 index 2aa9a395..00000000 --- a/schemas/v1.22.0/backupstoragelocation-velero-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "BackupStorageLocation is a location where Velero stores backup objects", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "BackupStorageLocationSpec defines the desired state of a Velero BackupStorageLocation", "properties": {"accessMode": {"description": "AccessMode defines the permissions for the backup storage location.", "enum": ["ReadOnly", "ReadWrite"], "type": "string"}, "backupSyncPeriod": {"description": "BackupSyncPeriod defines how frequently to sync backup API objects from object storage. A value of 0 disables sync.", "nullable": true, "type": "string"}, "config": {"additionalProperties": {"type": "string"}, "description": "Config is for provider-specific configuration fields.", "type": "object"}, "credential": {"description": "Credential contains the credential information intended to be used with this location", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "default": {"description": "Default indicates this location is the default backup storage location.", "type": "boolean"}, "objectStorage": {"description": "ObjectStorageLocation specifies the settings necessary to connect to a provider's object storage.", "properties": {"bucket": {"description": "Bucket is the bucket to use for object storage.", "type": "string"}, "caCert": {"description": "CACert defines a CA bundle to use when verifying TLS connections to the provider.", "format": "byte", "type": "string"}, "prefix": {"description": "Prefix is the path inside a bucket to use for Velero storage. Optional.", "type": "string"}}, "required": ["bucket"], "type": "object"}, "provider": {"description": "Provider is the provider of the backup storage.", "type": "string"}, "validationFrequency": {"description": "ValidationFrequency defines how frequently to validate the corresponding object storage. A value of 0 disables validation.", "nullable": true, "type": "string"}}, "required": ["objectStorage", "provider"], "type": "object"}, "status": {"description": "BackupStorageLocationStatus defines the observed state of BackupStorageLocation", "properties": {"accessMode": {"description": "AccessMode is an unused field. \n Deprecated: there is now an AccessMode field on the Spec and this field will be removed entirely as of v2.0.", "enum": ["ReadOnly", "ReadWrite"], "type": "string"}, "lastSyncedRevision": {"description": "LastSyncedRevision is the value of the `metadata/revision` file in the backup storage location the last time the BSL's contents were synced into the cluster. \n Deprecated: this field is no longer updated or used for detecting changes to the location's contents and will be removed entirely in v2.0.", "type": "string"}, "lastSyncedTime": {"description": "LastSyncedTime is the last time the contents of the location were synced into the cluster.", "format": "date-time", "nullable": true, "type": "string"}, "lastValidationTime": {"description": "LastValidationTime is the last time the backup store location was validated the cluster.", "format": "date-time", "nullable": true, "type": "string"}, "phase": {"description": "Phase is the current state of the BackupStorageLocation.", "enum": ["Available", "Unavailable"], "type": "string"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/blockchaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/blockchaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index ff547fbe..00000000 --- a/schemas/v1.22.0/blockchaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "description": "BlockChaos is the Schema for the blockchaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "BlockChaosSpec is the content of the specification for a BlockChaos", - "properties": { - "action": { - "description": "Action defines the specific block chaos action. Supported action: delay", - "enum": [ - "delay" - ], - "type": "string" - }, - "containerNames": { - "description": "ContainerNames indicates list of the name of affected container. If not set, the first container will be injected", - "items": { - "type": "string" - }, - "type": "array" - }, - "delay": { - "description": "Delay defines the delay distribution.", - "properties": { - "correlation": { - "type": "string" - }, - "jitter": { - "type": "string" - }, - "latency": { - "description": "Latency defines the latency of every io request.", - "type": "string" - } - }, - "type": "object" - }, - "duration": { - "description": "Duration represents the duration of the chaos action.", - "type": "string" - }, - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "selector": { - "description": "Selector is used to select pods that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "nodeSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select nodes. Selector which must match a node's labels, and objects must belong to these selected nodes.", - "type": "object" - }, - "nodes": { - "description": "Nodes is a set of node name and objects must belong to these nodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "podPhaseSelectors": { - "description": "PodPhaseSelectors is a set of condition of a pod at the current time. supported value: Pending / Running / Succeeded / Failed / Unknown", - "items": { - "type": "string" - }, - "type": "array" - }, - "pods": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Pods is a map of string keys and a set values that used to select pods. The key defines the namespace which pods belong, and the each values is a set of pod names.", - "type": "object" - } - }, - "type": "object" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of pods to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - }, - "volumeName": { - "type": "string" - } - }, - "required": [ - "action", - "mode", - "selector", - "volumeName" - ], - "type": "object" - }, - "status": { - "description": "BlockChaosStatus represents the status of a BlockChaos", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - }, - "ids": { - "additionalProperties": { - "type": "integer" - }, - "description": "InjectionIds always specifies the number of injected chaos action", - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/certificate-cert-manager-v1.json b/schemas/v1.22.0/certificate-cert-manager-v1.json deleted file mode 100644 index ddbc53ab..00000000 --- a/schemas/v1.22.0/certificate-cert-manager-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "A Certificate resource should be created to ensure an up to date and signed x509 certificate is stored in the Kubernetes Secret resource named in `spec.secretName`. \n The stored certificate will be renewed before it expires (as configured by `spec.renewBefore`).", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "Desired state of the Certificate resource.", "properties": {"additionalOutputFormats": {"description": "AdditionalOutputFormats defines extra output formats of the private key and signed certificate chain to be written to this Certificate's target Secret. This is an Alpha Feature and is only enabled with the `--feature-gates=AdditionalCertificateOutputFormats=true` option on both the controller and webhook components.", "items": {"description": "CertificateAdditionalOutputFormat defines an additional output format of a Certificate resource. These contain supplementary data formats of the signed certificate chain and paired private key.", "properties": {"type": {"description": "Type is the name of the format type that should be written to the Certificate's target Secret.", "enum": ["DER", "CombinedPEM"], "type": "string"}}, "required": ["type"], "type": "object"}, "type": "array"}, "commonName": {"description": "CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. This value is ignored by TLS clients when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4", "type": "string"}, "dnsNames": {"description": "DNSNames is a list of DNS subjectAltNames to be set on the Certificate.", "items": {"type": "string"}, "type": "array"}, "duration": {"description": "The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If unset this defaults to 90 days. Certificate will be renewed either 2/3 through its duration or `renewBefore` period before its expiry, whichever is later. Minimum accepted duration is 1 hour. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration", "type": "string"}, "emailAddresses": {"description": "EmailAddresses is a list of email subjectAltNames to be set on the Certificate.", "items": {"type": "string"}, "type": "array"}, "encodeUsagesInRequest": {"description": "EncodeUsagesInRequest controls whether key usages should be present in the CertificateRequest", "type": "boolean"}, "ipAddresses": {"description": "IPAddresses is a list of IP address subjectAltNames to be set on the Certificate.", "items": {"type": "string"}, "type": "array"}, "isCA": {"description": "IsCA will mark this Certificate as valid for certificate signing. This will automatically add the `cert sign` usage to the list of `usages`.", "type": "boolean"}, "issuerRef": {"description": "IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.", "properties": {"group": {"description": "Group of the resource being referred to.", "type": "string"}, "kind": {"description": "Kind of the resource being referred to.", "type": "string"}, "name": {"description": "Name of the resource being referred to.", "type": "string"}}, "required": ["name"], "type": "object"}, "keystores": {"description": "Keystores configures additional keystore output formats stored in the `secretName` Secret resource.", "properties": {"jks": {"description": "JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.", "properties": {"create": {"description": "Create enables JKS keystore creation for the Certificate. If true, a file named `keystore.jks` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance. A file named `truststore.jks` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority", "type": "boolean"}, "passwordSecretRef": {"description": "PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["create", "passwordSecretRef"], "type": "object"}, "pkcs12": {"description": "PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.", "properties": {"create": {"description": "Create enables PKCS12 keystore creation for the Certificate. If true, a file named `keystore.p12` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance. A file named `truststore.p12` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority", "type": "boolean"}, "passwordSecretRef": {"description": "PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["create", "passwordSecretRef"], "type": "object"}}, "type": "object"}, "privateKey": {"description": "Options to control private keys used for the Certificate.", "properties": {"algorithm": {"description": "Algorithm is the private key algorithm of the corresponding private key for this certificate. If provided, allowed values are either `RSA`,`Ed25519` or `ECDSA` If `algorithm` is specified and `size` is not provided, key size of 256 will be used for `ECDSA` key algorithm and key size of 2048 will be used for `RSA` key algorithm. key size is ignored when using the `Ed25519` key algorithm.", "enum": ["RSA", "ECDSA", "Ed25519"], "type": "string"}, "encoding": {"description": "The private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and PKCS#8, respectively. Defaults to `PKCS1` if not specified.", "enum": ["PKCS1", "PKCS8"], "type": "string"}, "rotationPolicy": {"description": "RotationPolicy controls how private keys should be regenerated when a re-issuance is being processed. If set to Never, a private key will only be generated if one does not already exist in the target `spec.secretName`. If one does exists but it does not have the correct algorithm or size, a warning will be raised to await user intervention. If set to Always, a private key matching the specified requirements will be generated whenever a re-issuance occurs. Default is 'Never' for backward compatibility.", "enum": ["Never", "Always"], "type": "string"}, "size": {"description": "Size is the key bit size of the corresponding private key for this certificate. If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`, and will default to `2048` if not specified. If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`, and will default to `256` if not specified. If `algorithm` is set to `Ed25519`, Size is ignored. No other values are allowed.", "type": "integer"}}, "type": "object"}, "renewBefore": {"description": "How long before the currently issued certificate's expiry cert-manager should renew the certificate. The default is 2/3 of the issued certificate's duration. Minimum accepted value is 5 minutes. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration", "type": "string"}, "revisionHistoryLimit": {"description": "revisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history. Each revision represents a single `CertificateRequest` created by this Certificate, either when it was created, renewed, or Spec was changed. Revisions will be removed by oldest first if the number of revisions exceeds this number. If set, revisionHistoryLimit must be a value of `1` or greater. If unset (`nil`), revisions will not be garbage collected. Default value is `nil`.", "format": "int32", "type": "integer"}, "secretName": {"description": "SecretName is the name of the secret resource that will be automatically created and managed by this Certificate resource. It will be populated with a private key and certificate, signed by the denoted issuer.", "type": "string"}, "secretTemplate": {"description": "SecretTemplate defines annotations and labels to be copied to the Certificate's Secret. Labels and annotations on the Secret will be changed as they appear on the SecretTemplate when added or removed. SecretTemplate annotations are added in conjunction with, and cannot overwrite, the base set of annotations cert-manager sets on the Certificate's Secret.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "description": "Annotations is a key value map to be copied to the target Kubernetes Secret.", "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "description": "Labels is a key value map to be copied to the target Kubernetes Secret.", "type": "object"}}, "type": "object"}, "subject": {"description": "Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).", "properties": {"countries": {"description": "Countries to be used on the Certificate.", "items": {"type": "string"}, "type": "array"}, "localities": {"description": "Cities to be used on the Certificate.", "items": {"type": "string"}, "type": "array"}, "organizationalUnits": {"description": "Organizational Units to be used on the Certificate.", "items": {"type": "string"}, "type": "array"}, "organizations": {"description": "Organizations to be used on the Certificate.", "items": {"type": "string"}, "type": "array"}, "postalCodes": {"description": "Postal codes to be used on the Certificate.", "items": {"type": "string"}, "type": "array"}, "provinces": {"description": "State/Provinces to be used on the Certificate.", "items": {"type": "string"}, "type": "array"}, "serialNumber": {"description": "Serial number to be used on the Certificate.", "type": "string"}, "streetAddresses": {"description": "Street addresses to be used on the Certificate.", "items": {"type": "string"}, "type": "array"}}, "type": "object"}, "uris": {"description": "URIs is a list of URI subjectAltNames to be set on the Certificate.", "items": {"type": "string"}, "type": "array"}, "usages": {"description": "Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.", "items": {"description": "KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 Valid KeyUsage values are as follows: \"signing\", \"digital signature\", \"content commitment\", \"key encipherment\", \"key agreement\", \"data encipherment\", \"cert sign\", \"crl sign\", \"encipher only\", \"decipher only\", \"any\", \"server auth\", \"client auth\", \"code signing\", \"email protection\", \"s/mime\", \"ipsec end system\", \"ipsec tunnel\", \"ipsec user\", \"timestamping\", \"ocsp signing\", \"microsoft sgc\", \"netscape sgc\"", "enum": ["signing", "digital signature", "content commitment", "key encipherment", "key agreement", "data encipherment", "cert sign", "crl sign", "encipher only", "decipher only", "any", "server auth", "client auth", "code signing", "email protection", "s/mime", "ipsec end system", "ipsec tunnel", "ipsec user", "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"], "type": "string"}, "type": "array"}}, "required": ["issuerRef", "secretName"], "type": "object"}, "status": {"description": "Status of the Certificate. This is set and managed automatically.", "properties": {"conditions": {"description": "List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`.", "items": {"description": "CertificateCondition contains condition information for an Certificate.", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the timestamp corresponding to the last status change of this condition.", "format": "date-time", "type": "string"}, "message": {"description": "Message is a human readable description of the details of the last transition, complementing reason.", "type": "string"}, "observedGeneration": {"description": "If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Certificate.", "format": "int64", "type": "integer"}, "reason": {"description": "Reason is a brief machine readable explanation for the condition's last transition.", "type": "string"}, "status": {"description": "Status of the condition, one of (`True`, `False`, `Unknown`).", "enum": ["True", "False", "Unknown"], "type": "string"}, "type": {"description": "Type of the condition, known values are (`Ready`, `Issuing`).", "type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array", "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map"}, "failedIssuanceAttempts": {"description": "The number of continuous failed issuance attempts up till now. This field gets removed (if set) on a successful issuance and gets set to 1 if unset and an issuance has failed. If an issuance has failed, the delay till the next issuance will be calculated using formula time.Hour * 2 ^ (failedIssuanceAttempts - 1).", "type": "integer"}, "lastFailureTime": {"description": "LastFailureTime is the time as recorded by the Certificate controller of the most recent failure to complete a CertificateRequest for this Certificate resource. If set, cert-manager will not re-request another Certificate until 1 hour has elapsed from this time.", "format": "date-time", "type": "string"}, "nextPrivateKeySecretName": {"description": "The name of the Secret resource containing the private key to be used for the next certificate iteration. The keymanager controller will automatically set this field if the `Issuing` condition is set to `True`. It will automatically unset this field when the Issuing condition is not set or False.", "type": "string"}, "notAfter": {"description": "The expiration time of the certificate stored in the secret named by this resource in `spec.secretName`.", "format": "date-time", "type": "string"}, "notBefore": {"description": "The time after which the certificate stored in the secret named by this resource in spec.secretName is valid.", "format": "date-time", "type": "string"}, "renewalTime": {"description": "RenewalTime is the time at which the certificate will be next renewed. If not set, no upcoming renewal is scheduled.", "format": "date-time", "type": "string"}, "revision": {"description": "The current 'revision' of the certificate as issued. \n When a CertificateRequest resource is created, it will have the `cert-manager.io/certificate-revision` set to one greater than the current value of this field. \n Upon issuance, this field will be set to the value of the annotation on the CertificateRequest resource used to issue the certificate. \n Persisting the value on the CertificateRequest resource allows the certificates controller to know whether a request is part of an old issuance or if it is part of the ongoing revision's issuance by checking if the revision value in the annotation is greater than this field.", "type": "integer"}}, "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/certificaterequest-cert-manager-v1.json b/schemas/v1.22.0/certificaterequest-cert-manager-v1.json deleted file mode 100644 index c2cfe36b..00000000 --- a/schemas/v1.22.0/certificaterequest-cert-manager-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "A CertificateRequest is used to request a signed certificate from one of the configured issuers. \n All fields within the CertificateRequest's `spec` are immutable after creation. A CertificateRequest will either succeed or fail, as denoted by its `status.state` field. \n A CertificateRequest is a one-shot resource, meaning it represents a single point in time request for a certificate and cannot be re-used.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "Desired state of the CertificateRequest resource.", "properties": {"duration": {"description": "The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types.", "type": "string"}, "extra": {"additionalProperties": {"items": {"type": "string"}, "type": "array"}, "description": "Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.", "type": "object"}, "groups": {"description": "Groups contains group membership of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.", "items": {"type": "string"}, "type": "array", "x-kubernetes-list-type": "atomic"}, "isCA": {"description": "IsCA will request to mark the certificate as valid for certificate signing when submitting to the issuer. This will automatically add the `cert sign` usage to the list of `usages`.", "type": "boolean"}, "issuerRef": {"description": "IssuerRef is a reference to the issuer for this CertificateRequest. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.", "properties": {"group": {"description": "Group of the resource being referred to.", "type": "string"}, "kind": {"description": "Kind of the resource being referred to.", "type": "string"}, "name": {"description": "Name of the resource being referred to.", "type": "string"}}, "required": ["name"], "type": "object"}, "request": {"description": "The PEM-encoded x509 certificate signing request to be submitted to the CA for signing.", "format": "byte", "type": "string"}, "uid": {"description": "UID contains the uid of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.", "type": "string"}, "usages": {"description": "Usages is the set of x509 usages that are requested for the certificate. If usages are set they SHOULD be encoded inside the CSR spec Defaults to `digital signature` and `key encipherment` if not specified.", "items": {"description": "KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 Valid KeyUsage values are as follows: \"signing\", \"digital signature\", \"content commitment\", \"key encipherment\", \"key agreement\", \"data encipherment\", \"cert sign\", \"crl sign\", \"encipher only\", \"decipher only\", \"any\", \"server auth\", \"client auth\", \"code signing\", \"email protection\", \"s/mime\", \"ipsec end system\", \"ipsec tunnel\", \"ipsec user\", \"timestamping\", \"ocsp signing\", \"microsoft sgc\", \"netscape sgc\"", "enum": ["signing", "digital signature", "content commitment", "key encipherment", "key agreement", "data encipherment", "cert sign", "crl sign", "encipher only", "decipher only", "any", "server auth", "client auth", "code signing", "email protection", "s/mime", "ipsec end system", "ipsec tunnel", "ipsec user", "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"], "type": "string"}, "type": "array"}, "username": {"description": "Username contains the name of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.", "type": "string"}}, "required": ["issuerRef", "request"], "type": "object"}, "status": {"description": "Status of the CertificateRequest. This is set and managed automatically.", "properties": {"ca": {"description": "The PEM encoded x509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available.", "format": "byte", "type": "string"}, "certificate": {"description": "The PEM encoded x509 certificate resulting from the certificate signing request. If not set, the CertificateRequest has either not been completed or has failed. More information on failure can be found by checking the `conditions` field.", "format": "byte", "type": "string"}, "conditions": {"description": "List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready` and `InvalidRequest`.", "items": {"description": "CertificateRequestCondition contains condition information for a CertificateRequest.", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the timestamp corresponding to the last status change of this condition.", "format": "date-time", "type": "string"}, "message": {"description": "Message is a human readable description of the details of the last transition, complementing reason.", "type": "string"}, "reason": {"description": "Reason is a brief machine readable explanation for the condition's last transition.", "type": "string"}, "status": {"description": "Status of the condition, one of (`True`, `False`, `Unknown`).", "enum": ["True", "False", "Unknown"], "type": "string"}, "type": {"description": "Type of the condition, known values are (`Ready`, `InvalidRequest`, `Approved`, `Denied`).", "type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array", "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map"}, "failureTime": {"description": "FailureTime stores the time that this CertificateRequest failed. This is used to influence garbage collection and back-off.", "format": "date-time", "type": "string"}}, "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/challenge-acme-v1.json b/schemas/v1.22.0/challenge-acme-v1.json deleted file mode 100644 index aa9168f2..00000000 --- a/schemas/v1.22.0/challenge-acme-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "Challenge is a type to represent a Challenge request with an ACME server", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"properties": {"authorizationURL": {"description": "The URL to the ACME Authorization resource that this challenge is a part of.", "type": "string"}, "dnsName": {"description": "dnsName is the identifier that this challenge is for, e.g. example.com. If the requested DNSName is a 'wildcard', this field MUST be set to the non-wildcard domain, e.g. for `*.example.com`, it must be `example.com`.", "type": "string"}, "issuerRef": {"description": "References a properly configured ACME-type Issuer which should be used to create this Challenge. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Challenge will be marked as failed.", "properties": {"group": {"description": "Group of the resource being referred to.", "type": "string"}, "kind": {"description": "Kind of the resource being referred to.", "type": "string"}, "name": {"description": "Name of the resource being referred to.", "type": "string"}}, "required": ["name"], "type": "object"}, "key": {"description": "The ACME challenge key for this challenge For HTTP01 challenges, this is the value that must be responded with to complete the HTTP01 challenge in the format: `.`. For DNS01 challenges, this is the base64 encoded SHA256 sum of the `.` text that must be set as the TXT record content.", "type": "string"}, "solver": {"description": "Contains the domain solving configuration that should be used to solve this challenge resource.", "properties": {"dns01": {"description": "Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.", "properties": {"acmeDNS": {"description": "Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.", "properties": {"accountSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "host": {"type": "string"}}, "required": ["accountSecretRef", "host"], "type": "object"}, "akamai": {"description": "Use the Akamai DNS zone management API to manage DNS01 challenge records.", "properties": {"accessTokenSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "clientSecretSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "clientTokenSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "serviceConsumerDomain": {"type": "string"}}, "required": ["accessTokenSecretRef", "clientSecretSecretRef", "clientTokenSecretRef", "serviceConsumerDomain"], "type": "object"}, "azureDNS": {"description": "Use the Microsoft Azure DNS API to manage DNS01 challenge records.", "properties": {"clientID": {"description": "if both this and ClientSecret are left unset MSI will be used", "type": "string"}, "clientSecretSecretRef": {"description": "if both this and ClientID are left unset MSI will be used", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "environment": {"description": "name of the Azure environment (default AzurePublicCloud)", "enum": ["AzurePublicCloud", "AzureChinaCloud", "AzureGermanCloud", "AzureUSGovernmentCloud"], "type": "string"}, "hostedZoneName": {"description": "name of the DNS zone that should be used", "type": "string"}, "managedIdentity": {"description": "managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID", "properties": {"clientID": {"description": "client ID of the managed identity, can not be used at the same time as resourceID", "type": "string"}, "resourceID": {"description": "resource ID of the managed identity, can not be used at the same time as clientID", "type": "string"}}, "type": "object"}, "resourceGroupName": {"description": "resource group the DNS zone is located in", "type": "string"}, "subscriptionID": {"description": "ID of the Azure subscription", "type": "string"}, "tenantID": {"description": "when specifying ClientID and ClientSecret then this field is also needed", "type": "string"}}, "required": ["resourceGroupName", "subscriptionID"], "type": "object"}, "cloudDNS": {"description": "Use the Google Cloud DNS API to manage DNS01 challenge records.", "properties": {"hostedZoneName": {"description": "HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.", "type": "string"}, "project": {"type": "string"}, "serviceAccountSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["project"], "type": "object"}, "cloudflare": {"description": "Use the Cloudflare API to manage DNS01 challenge records.", "properties": {"apiKeySecretRef": {"description": "API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "apiTokenSecretRef": {"description": "API token used to authenticate with Cloudflare.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "email": {"description": "Email of the account, only required when using API key based authentication.", "type": "string"}}, "type": "object"}, "cnameStrategy": {"description": "CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.", "enum": ["None", "Follow"], "type": "string"}, "digitalocean": {"description": "Use the DigitalOcean DNS API to manage DNS01 challenge records.", "properties": {"tokenSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["tokenSecretRef"], "type": "object"}, "rfc2136": {"description": "Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.", "properties": {"nameserver": {"description": "The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1])\u00a0; port is optional. This field is required.", "type": "string"}, "tsigAlgorithm": {"description": "The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.", "type": "string"}, "tsigKeyName": {"description": "The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.", "type": "string"}, "tsigSecretSecretRef": {"description": "The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["nameserver"], "type": "object"}, "route53": {"description": "Use the AWS Route53 API to manage DNS01 challenge records.", "properties": {"accessKeyID": {"description": "The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials", "type": "string"}, "hostedZoneID": {"description": "If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.", "type": "string"}, "region": {"description": "Always set the region when using AccessKeyID and SecretAccessKey", "type": "string"}, "role": {"description": "Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata", "type": "string"}, "secretAccessKeySecretRef": {"description": "The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["region"], "type": "object"}, "webhook": {"description": "Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.", "properties": {"config": {"description": "Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.", "x-kubernetes-preserve-unknown-fields": true}, "groupName": {"description": "The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.", "type": "string"}, "solverName": {"description": "The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.", "type": "string"}}, "required": ["groupName", "solverName"], "type": "object"}}, "type": "object"}, "http01": {"description": "Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.", "properties": {"gatewayHTTPRoute": {"description": "The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.", "properties": {"labels": {"additionalProperties": {"type": "string"}, "description": "Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.", "type": "object"}, "parentRefs": {"description": "When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways", "items": {"description": "ParentRef identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \"Core\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid. \n References to objects with invalid Group and Kind are not valid, and must be rejected by the implementation, with appropriate Conditions set on the containing object.", "properties": {"group": {"default": "gateway.networking.k8s.io", "description": "Group is the group of the referent. \n Support: Core", "maxLength": 253, "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", "type": "string"}, "kind": {"default": "Gateway", "description": "Kind is kind of the referent. \n Support: Core (Gateway) Support: Custom (Other Resources)", "maxLength": 63, "minLength": 1, "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", "type": "string"}, "name": {"description": "Name is the name of the referent. \n Support: Core", "maxLength": 253, "minLength": 1, "type": "string"}, "namespace": {"description": "Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \n Support: Core", "maxLength": 63, "minLength": 1, "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", "type": "string"}, "sectionName": {"description": "SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \n * Gateway: Listener Name \n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \n Support: Core", "maxLength": 253, "minLength": 1, "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", "type": "string"}}, "required": ["name"], "type": "object"}, "type": "array"}, "serviceType": {"description": "Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.", "type": "string"}}, "type": "object"}, "ingress": {"description": "The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.", "properties": {"class": {"description": "The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.", "type": "string"}, "ingressTemplate": {"description": "Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.", "properties": {"metadata": {"description": "ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "description": "Annotations that should be added to the created ACME HTTP01 solver ingress.", "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "description": "Labels that should be added to the created ACME HTTP01 solver ingress.", "type": "object"}}, "type": "object"}}, "type": "object"}, "name": {"description": "The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.", "type": "string"}, "podTemplate": {"description": "Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.", "properties": {"metadata": {"description": "ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "description": "Annotations that should be added to the create ACME HTTP01 solver pods.", "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "description": "Labels that should be added to the created ACME HTTP01 solver pods.", "type": "object"}}, "type": "object"}, "spec": {"description": "PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.", "properties": {"affinity": {"description": "If specified, the pod's scheduling constraints", "properties": {"nodeAffinity": {"description": "Describes node affinity scheduling rules for the pod.", "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": {"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": {"description": "A node selector term, associated with the corresponding weight.", "properties": {"matchExpressions": {"description": "A list of node selector requirements by node's labels.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "weight": {"description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["preference", "weight"], "type": "object"}, "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 an update), the system may or may not try to eventually evict the pod from its node.", "properties": {"nodeSelectorTerms": {"description": "Required. A list of node selector terms. The terms are ORed.", "items": {"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": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}}, "required": ["nodeSelectorTerms"], "type": "object"}}, "type": "object"}, "podAffinity": {"description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}, "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)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "nodeSelector": {"additionalProperties": {"type": "string"}, "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", "type": "object"}, "priorityClassName": {"description": "If specified, the pod's priorityClassName.", "type": "string"}, "serviceAccountName": {"description": "If specified, the pod's service account", "type": "string"}, "tolerations": {"description": "If specified, the pod's tolerations.", "items": {"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"}, "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"}, "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"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "serviceType": {"description": "Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.", "type": "string"}}, "type": "object"}}, "type": "object"}, "selector": {"description": "Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.", "properties": {"dnsNames": {"description": "List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.", "items": {"type": "string"}, "type": "array"}, "dnsZones": {"description": "List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.", "items": {"type": "string"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "description": "A label selector that is used to refine the set of certificate's that this challenge solver will apply to.", "type": "object"}}, "type": "object"}}, "type": "object"}, "token": {"description": "The ACME challenge token for this challenge. This is the raw value returned from the ACME server.", "type": "string"}, "type": {"description": "The type of ACME challenge this resource represents. One of \"HTTP-01\" or \"DNS-01\".", "enum": ["HTTP-01", "DNS-01"], "type": "string"}, "url": {"description": "The URL of the ACME Challenge resource for this challenge. This can be used to lookup details about the status of this challenge.", "type": "string"}, "wildcard": {"description": "wildcard will be true if this challenge is for a wildcard identifier, for example '*.example.com'.", "type": "boolean"}}, "required": ["authorizationURL", "dnsName", "issuerRef", "key", "solver", "token", "type", "url"], "type": "object"}, "status": {"properties": {"presented": {"description": "presented will be set to true if the challenge values for this challenge are currently 'presented'. This *does not* imply the self check is passing. Only that the values have been 'submitted' for the appropriate challenge mechanism (i.e. the DNS01 TXT record has been presented, or the HTTP01 configuration has been configured).", "type": "boolean"}, "processing": {"description": "Used to denote whether this challenge should be processed or not. This field will only be set to true by the 'scheduling' component. It will only be set to false by the 'challenges' controller, after the challenge has reached a final state or timed out. If this field is set to false, the challenge controller will not take any more action.", "type": "boolean"}, "reason": {"description": "Contains human readable information on why the Challenge is in the current state.", "type": "string"}, "state": {"description": "Contains the current 'state' of the challenge. If not set, the state of the challenge is unknown.", "enum": ["valid", "ready", "pending", "processing", "invalid", "expired", "errored"], "type": "string"}}, "type": "object"}}, "required": ["metadata", "spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/clusterexternalsecret-external-secrets-v1beta1.json b/schemas/v1.22.0/clusterexternalsecret-external-secrets-v1beta1.json deleted file mode 100644 index 1a366594..00000000 --- a/schemas/v1.22.0/clusterexternalsecret-external-secrets-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "ClusterExternalSecret is the Schema for the clusterexternalsecrets API.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "ClusterExternalSecretSpec defines the desired state of ClusterExternalSecret.", "properties": {"externalSecretName": {"description": "The name of the external secrets to be created defaults to the name of the ClusterExternalSecret", "type": "string"}, "externalSecretSpec": {"description": "The spec for the ExternalSecrets to be created", "properties": {"data": {"description": "Data defines the connection between the Kubernetes Secret keys and the Provider data", "items": {"description": "ExternalSecretData defines the connection between the Kubernetes Secret key (spec.data.) and the Provider data.", "properties": {"remoteRef": {"description": "ExternalSecretDataRemoteRef defines Provider data location.", "properties": {"conversionStrategy": {"default": "Default", "description": "Used to define a conversion Strategy", "type": "string"}, "decodingStrategy": {"default": "None", "description": "Used to define a decoding Strategy", "type": "string"}, "key": {"description": "Key is the key used in the Provider, mandatory", "type": "string"}, "metadataPolicy": {"description": "Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None", "type": "string"}, "property": {"description": "Used to select a specific property of the Provider value (if a map), if supported", "type": "string"}, "version": {"description": "Used to select a specific version of the Provider value, if supported", "type": "string"}}, "required": ["key"], "type": "object"}, "secretKey": {"type": "string"}}, "required": ["remoteRef", "secretKey"], "type": "object"}, "type": "array"}, "dataFrom": {"description": "DataFrom is used to fetch all properties from a specific Provider data If multiple entries are specified, the Secret keys are merged in the specified order", "items": {"properties": {"extract": {"description": "Used to extract multiple key/value pairs from one secret", "properties": {"conversionStrategy": {"default": "Default", "description": "Used to define a conversion Strategy", "type": "string"}, "decodingStrategy": {"default": "None", "description": "Used to define a decoding Strategy", "type": "string"}, "key": {"description": "Key is the key used in the Provider, mandatory", "type": "string"}, "metadataPolicy": {"description": "Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None", "type": "string"}, "property": {"description": "Used to select a specific property of the Provider value (if a map), if supported", "type": "string"}, "version": {"description": "Used to select a specific version of the Provider value, if supported", "type": "string"}}, "required": ["key"], "type": "object"}, "find": {"description": "Used to find secrets based on tags or regular expressions", "properties": {"conversionStrategy": {"default": "Default", "description": "Used to define a conversion Strategy", "type": "string"}, "decodingStrategy": {"default": "None", "description": "Used to define a decoding Strategy", "type": "string"}, "name": {"description": "Finds secrets based on the name.", "properties": {"regexp": {"description": "Finds secrets base", "type": "string"}}, "type": "object"}, "path": {"description": "A root path to start the find operations.", "type": "string"}, "tags": {"additionalProperties": {"type": "string"}, "description": "Find secrets based on tags.", "type": "object"}}, "type": "object"}, "rewrite": {"description": "Used to rewrite secret Keys after getting them from the secret Provider Multiple Rewrite operations can be provided. They are applied in a layered order (first to last)", "items": {"properties": {"regexp": {"description": "Used to rewrite with regular expressions. The resulting key will be the output of a regexp.ReplaceAll operation.", "properties": {"source": {"description": "Used to define the regular expression of a re.Compiler.", "type": "string"}, "target": {"description": "Used to define the target pattern of a ReplaceAll operation.", "type": "string"}}, "required": ["source", "target"], "type": "object"}}, "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}, "refreshInterval": {"default": "1h", "description": "RefreshInterval is the amount of time before the values are read again from the SecretStore provider Valid time units are \"ns\", \"us\" (or \"\u00b5s\"), \"ms\", \"s\", \"m\", \"h\" May be set to zero to fetch and create it once. Defaults to 1h.", "type": "string"}, "secretStoreRef": {"description": "SecretStoreRef defines which SecretStore to fetch the ExternalSecret data.", "properties": {"kind": {"description": "Kind of the SecretStore resource (SecretStore or ClusterSecretStore) Defaults to `SecretStore`", "type": "string"}, "name": {"description": "Name of the SecretStore resource", "type": "string"}}, "required": ["name"], "type": "object"}, "target": {"default": {"creationPolicy": "Owner", "deletionPolicy": "Retain"}, "description": "ExternalSecretTarget defines the Kubernetes Secret to be created There can be only one target per ExternalSecret.", "properties": {"creationPolicy": {"default": "Owner", "description": "CreationPolicy defines rules on how to create the resulting Secret Defaults to 'Owner'", "enum": ["Owner", "Orphan", "Merge", "None"], "type": "string"}, "deletionPolicy": {"default": "Retain", "description": "DeletionPolicy defines rules on how to delete the resulting Secret Defaults to 'Retain'", "enum": ["Delete", "Merge", "Retain"], "type": "string"}, "immutable": {"description": "Immutable defines if the final secret will be immutable", "type": "boolean"}, "name": {"description": "Name defines the name of the Secret resource to be managed This field is immutable Defaults to the .metadata.name of the ExternalSecret resource", "type": "string"}, "template": {"description": "Template defines a blueprint for the created Secret resource.", "properties": {"data": {"additionalProperties": {"type": "string"}, "type": "object"}, "engineVersion": {"default": "v2", "type": "string"}, "metadata": {"description": "ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "templateFrom": {"items": {"maxProperties": 1, "minProperties": 1, "properties": {"configMap": {"properties": {"items": {"items": {"properties": {"key": {"type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "required": ["items", "name"], "type": "object"}, "secret": {"properties": {"items": {"items": {"properties": {"key": {"type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "required": ["items", "name"], "type": "object"}}, "type": "object"}, "type": "array"}, "type": {"type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["secretStoreRef"], "type": "object"}, "namespaceSelector": {"description": "The labels to select by to find the Namespaces to create the ExternalSecrets in.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object", "x-kubernetes-map-type": "atomic"}, "refreshTime": {"description": "The time in which the controller should reconcile it's objects and recheck namespaces for labels.", "type": "string"}}, "required": ["externalSecretSpec", "namespaceSelector"], "type": "object"}, "status": {"description": "ClusterExternalSecretStatus defines the observed state of ClusterExternalSecret.", "properties": {"conditions": {"items": {"properties": {"message": {"type": "string"}, "status": {"type": "string"}, "type": {"type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array"}, "failedNamespaces": {"description": "Failed namespaces are the namespaces that failed to apply an ExternalSecret", "items": {"description": "ClusterExternalSecretNamespaceFailure represents a failed namespace deployment and it's reason.", "properties": {"namespace": {"description": "Namespace is the namespace that failed when trying to apply an ExternalSecret", "type": "string"}, "reason": {"description": "Reason is why the ExternalSecret failed to apply to the namespace", "type": "string"}}, "required": ["namespace"], "type": "object"}, "type": "array"}, "provisionedNamespaces": {"description": "ProvisionedNamespaces are the namespaces where the ClusterExternalSecret has secrets", "items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/clusterissuer-cert-manager-v1.json b/schemas/v1.22.0/clusterissuer-cert-manager-v1.json deleted file mode 100644 index a313ece2..00000000 --- a/schemas/v1.22.0/clusterissuer-cert-manager-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "A ClusterIssuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is similar to an Issuer, however it is cluster-scoped and therefore can be referenced by resources that exist in *any* namespace, not just the same namespace as the referent.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "Desired state of the ClusterIssuer resource.", "properties": {"acme": {"description": "ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.", "properties": {"disableAccountKeyGeneration": {"description": "Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.", "type": "boolean"}, "email": {"description": "Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.", "type": "string"}, "enableDurationFeature": {"description": "Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.", "type": "boolean"}, "externalAccountBinding": {"description": "ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.", "properties": {"keyAlgorithm": {"description": "Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.", "enum": ["HS256", "HS384", "HS512"], "type": "string"}, "keyID": {"description": "keyID is the ID of the CA key that the External Account is bound to.", "type": "string"}, "keySecretRef": {"description": "keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["keyID", "keySecretRef"], "type": "object"}, "preferredChain": {"description": "PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: \"DST Root CA X3\" or \"ISRG Root X1\" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN", "maxLength": 64, "type": "string"}, "privateKeySecretRef": {"description": "PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "server": {"description": "Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\". Only ACME v2 endpoints (i.e. RFC 8555) are supported.", "type": "string"}, "skipTLSVerify": {"description": "Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.", "type": "boolean"}, "solvers": {"description": "Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/", "items": {"description": "An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided.", "properties": {"dns01": {"description": "Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.", "properties": {"acmeDNS": {"description": "Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.", "properties": {"accountSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "host": {"type": "string"}}, "required": ["accountSecretRef", "host"], "type": "object"}, "akamai": {"description": "Use the Akamai DNS zone management API to manage DNS01 challenge records.", "properties": {"accessTokenSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "clientSecretSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "clientTokenSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "serviceConsumerDomain": {"type": "string"}}, "required": ["accessTokenSecretRef", "clientSecretSecretRef", "clientTokenSecretRef", "serviceConsumerDomain"], "type": "object"}, "azureDNS": {"description": "Use the Microsoft Azure DNS API to manage DNS01 challenge records.", "properties": {"clientID": {"description": "if both this and ClientSecret are left unset MSI will be used", "type": "string"}, "clientSecretSecretRef": {"description": "if both this and ClientID are left unset MSI will be used", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "environment": {"description": "name of the Azure environment (default AzurePublicCloud)", "enum": ["AzurePublicCloud", "AzureChinaCloud", "AzureGermanCloud", "AzureUSGovernmentCloud"], "type": "string"}, "hostedZoneName": {"description": "name of the DNS zone that should be used", "type": "string"}, "managedIdentity": {"description": "managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID", "properties": {"clientID": {"description": "client ID of the managed identity, can not be used at the same time as resourceID", "type": "string"}, "resourceID": {"description": "resource ID of the managed identity, can not be used at the same time as clientID", "type": "string"}}, "type": "object"}, "resourceGroupName": {"description": "resource group the DNS zone is located in", "type": "string"}, "subscriptionID": {"description": "ID of the Azure subscription", "type": "string"}, "tenantID": {"description": "when specifying ClientID and ClientSecret then this field is also needed", "type": "string"}}, "required": ["resourceGroupName", "subscriptionID"], "type": "object"}, "cloudDNS": {"description": "Use the Google Cloud DNS API to manage DNS01 challenge records.", "properties": {"hostedZoneName": {"description": "HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.", "type": "string"}, "project": {"type": "string"}, "serviceAccountSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["project"], "type": "object"}, "cloudflare": {"description": "Use the Cloudflare API to manage DNS01 challenge records.", "properties": {"apiKeySecretRef": {"description": "API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "apiTokenSecretRef": {"description": "API token used to authenticate with Cloudflare.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "email": {"description": "Email of the account, only required when using API key based authentication.", "type": "string"}}, "type": "object"}, "cnameStrategy": {"description": "CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.", "enum": ["None", "Follow"], "type": "string"}, "digitalocean": {"description": "Use the DigitalOcean DNS API to manage DNS01 challenge records.", "properties": {"tokenSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["tokenSecretRef"], "type": "object"}, "rfc2136": {"description": "Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.", "properties": {"nameserver": {"description": "The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1])\u00a0; port is optional. This field is required.", "type": "string"}, "tsigAlgorithm": {"description": "The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.", "type": "string"}, "tsigKeyName": {"description": "The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.", "type": "string"}, "tsigSecretSecretRef": {"description": "The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["nameserver"], "type": "object"}, "route53": {"description": "Use the AWS Route53 API to manage DNS01 challenge records.", "properties": {"accessKeyID": {"description": "The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials", "type": "string"}, "hostedZoneID": {"description": "If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.", "type": "string"}, "region": {"description": "Always set the region when using AccessKeyID and SecretAccessKey", "type": "string"}, "role": {"description": "Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata", "type": "string"}, "secretAccessKeySecretRef": {"description": "The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["region"], "type": "object"}, "webhook": {"description": "Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.", "properties": {"config": {"description": "Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.", "x-kubernetes-preserve-unknown-fields": true}, "groupName": {"description": "The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.", "type": "string"}, "solverName": {"description": "The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.", "type": "string"}}, "required": ["groupName", "solverName"], "type": "object"}}, "type": "object"}, "http01": {"description": "Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.", "properties": {"gatewayHTTPRoute": {"description": "The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.", "properties": {"labels": {"additionalProperties": {"type": "string"}, "description": "Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.", "type": "object"}, "parentRefs": {"description": "When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways", "items": {"description": "ParentRef identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \"Core\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid. \n References to objects with invalid Group and Kind are not valid, and must be rejected by the implementation, with appropriate Conditions set on the containing object.", "properties": {"group": {"default": "gateway.networking.k8s.io", "description": "Group is the group of the referent. \n Support: Core", "maxLength": 253, "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", "type": "string"}, "kind": {"default": "Gateway", "description": "Kind is kind of the referent. \n Support: Core (Gateway) Support: Custom (Other Resources)", "maxLength": 63, "minLength": 1, "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", "type": "string"}, "name": {"description": "Name is the name of the referent. \n Support: Core", "maxLength": 253, "minLength": 1, "type": "string"}, "namespace": {"description": "Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \n Support: Core", "maxLength": 63, "minLength": 1, "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", "type": "string"}, "sectionName": {"description": "SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \n * Gateway: Listener Name \n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \n Support: Core", "maxLength": 253, "minLength": 1, "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", "type": "string"}}, "required": ["name"], "type": "object"}, "type": "array"}, "serviceType": {"description": "Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.", "type": "string"}}, "type": "object"}, "ingress": {"description": "The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.", "properties": {"class": {"description": "The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.", "type": "string"}, "ingressTemplate": {"description": "Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.", "properties": {"metadata": {"description": "ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "description": "Annotations that should be added to the created ACME HTTP01 solver ingress.", "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "description": "Labels that should be added to the created ACME HTTP01 solver ingress.", "type": "object"}}, "type": "object"}}, "type": "object"}, "name": {"description": "The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.", "type": "string"}, "podTemplate": {"description": "Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.", "properties": {"metadata": {"description": "ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "description": "Annotations that should be added to the create ACME HTTP01 solver pods.", "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "description": "Labels that should be added to the created ACME HTTP01 solver pods.", "type": "object"}}, "type": "object"}, "spec": {"description": "PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.", "properties": {"affinity": {"description": "If specified, the pod's scheduling constraints", "properties": {"nodeAffinity": {"description": "Describes node affinity scheduling rules for the pod.", "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": {"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": {"description": "A node selector term, associated with the corresponding weight.", "properties": {"matchExpressions": {"description": "A list of node selector requirements by node's labels.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "weight": {"description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["preference", "weight"], "type": "object"}, "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 an update), the system may or may not try to eventually evict the pod from its node.", "properties": {"nodeSelectorTerms": {"description": "Required. A list of node selector terms. The terms are ORed.", "items": {"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": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}}, "required": ["nodeSelectorTerms"], "type": "object"}}, "type": "object"}, "podAffinity": {"description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}, "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)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "nodeSelector": {"additionalProperties": {"type": "string"}, "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", "type": "object"}, "priorityClassName": {"description": "If specified, the pod's priorityClassName.", "type": "string"}, "serviceAccountName": {"description": "If specified, the pod's service account", "type": "string"}, "tolerations": {"description": "If specified, the pod's tolerations.", "items": {"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"}, "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"}, "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"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "serviceType": {"description": "Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.", "type": "string"}}, "type": "object"}}, "type": "object"}, "selector": {"description": "Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.", "properties": {"dnsNames": {"description": "List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.", "items": {"type": "string"}, "type": "array"}, "dnsZones": {"description": "List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.", "items": {"type": "string"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "description": "A label selector that is used to refine the set of certificate's that this challenge solver will apply to.", "type": "object"}}, "type": "object"}}, "type": "object"}, "type": "array"}}, "required": ["privateKeySecretRef", "server"], "type": "object"}, "ca": {"description": "CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.", "properties": {"crlDistributionPoints": {"description": "The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.", "items": {"type": "string"}, "type": "array"}, "ocspServers": {"description": "The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".", "items": {"type": "string"}, "type": "array"}, "secretName": {"description": "SecretName is the name of the secret used to sign Certificates issued by this Issuer.", "type": "string"}}, "required": ["secretName"], "type": "object"}, "selfSigned": {"description": "SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.", "properties": {"crlDistributionPoints": {"description": "The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.", "items": {"type": "string"}, "type": "array"}}, "type": "object"}, "vault": {"description": "Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.", "properties": {"auth": {"description": "Auth configures how cert-manager authenticates with the Vault server.", "properties": {"appRole": {"description": "AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.", "properties": {"path": {"description": "Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"", "type": "string"}, "roleId": {"description": "RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.", "type": "string"}, "secretRef": {"description": "Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["path", "roleId", "secretRef"], "type": "object"}, "kubernetes": {"description": "Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.", "properties": {"mountPath": {"description": "The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value \"/v1/auth/kubernetes\" will be used.", "type": "string"}, "role": {"description": "A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.", "type": "string"}, "secretRef": {"description": "The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["role", "secretRef"], "type": "object"}, "tokenSecretRef": {"description": "TokenSecretRef authenticates with Vault by presenting a token.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "type": "object"}, "caBundle": {"description": "PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.", "format": "byte", "type": "string"}, "namespace": {"description": "Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces", "type": "string"}, "path": {"description": "Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".", "type": "string"}, "server": {"description": "Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".", "type": "string"}}, "required": ["auth", "path", "server"], "type": "object"}, "venafi": {"description": "Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.", "properties": {"cloud": {"description": "Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.", "properties": {"apiTokenSecretRef": {"description": "APITokenSecretRef is a secret key selector for the Venafi Cloud API token.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "url": {"description": "URL is the base URL for Venafi Cloud. Defaults to \"https://api.venafi.cloud/v1\".", "type": "string"}}, "required": ["apiTokenSecretRef"], "type": "object"}, "tpp": {"description": "TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.", "properties": {"caBundle": {"description": "CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.", "format": "byte", "type": "string"}, "credentialsRef": {"description": "CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.", "properties": {"name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "url": {"description": "URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".", "type": "string"}}, "required": ["credentialsRef", "url"], "type": "object"}, "zone": {"description": "Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.", "type": "string"}}, "required": ["zone"], "type": "object"}}, "type": "object"}, "status": {"description": "Status of the ClusterIssuer. This is set and managed automatically.", "properties": {"acme": {"description": "ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.", "properties": {"lastRegisteredEmail": {"description": "LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the Issuer", "type": "string"}, "uri": {"description": "URI is the unique account identifier, which can also be used to retrieve account details from the CA", "type": "string"}}, "type": "object"}, "conditions": {"description": "List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.", "items": {"description": "IssuerCondition contains condition information for an Issuer.", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the timestamp corresponding to the last status change of this condition.", "format": "date-time", "type": "string"}, "message": {"description": "Message is a human readable description of the details of the last transition, complementing reason.", "type": "string"}, "observedGeneration": {"description": "If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.", "format": "int64", "type": "integer"}, "reason": {"description": "Reason is a brief machine readable explanation for the condition's last transition.", "type": "string"}, "status": {"description": "Status of the condition, one of (`True`, `False`, `Unknown`).", "enum": ["True", "False", "Unknown"], "type": "string"}, "type": {"description": "Type of the condition, known values are (`Ready`).", "type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array", "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map"}}, "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/clustersecretstore-external-secrets-v1alpha1.json b/schemas/v1.22.0/clustersecretstore-external-secrets-v1alpha1.json deleted file mode 100644 index 46390eff..00000000 --- a/schemas/v1.22.0/clustersecretstore-external-secrets-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "ClusterSecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "SecretStoreSpec defines the desired state of SecretStore.", "properties": {"controller": {"description": "Used to select the correct KES controller (think: ingress.ingressClassName) The KES controller is instantiated with a specific controller name and filters ES based on this property", "type": "string"}, "provider": {"description": "Used to configure the provider. Only one provider may be set", "maxProperties": 1, "minProperties": 1, "properties": {"akeyless": {"description": "Akeyless configures this store to sync secrets using Akeyless Vault provider", "properties": {"akeylessGWApiURL": {"description": "Akeyless GW API Url from which the secrets to be fetched from.", "type": "string"}, "authSecretRef": {"description": "Auth configures how the operator authenticates with Akeyless.", "properties": {"kubernetesAuth": {"description": "Kubernetes authenticates with Akeyless by passing the ServiceAccount token stored in the named Secret resource.", "properties": {"accessID": {"description": "the Akeyless Kubernetes auth-method access-id", "type": "string"}, "k8sConfName": {"description": "Kubernetes-auth configuration name in Akeyless-Gateway", "type": "string"}, "secretRef": {"description": "Optional secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Akeyless. If a name is specified without a key, `token` is the default. If one is not specified, the one bound to the controller will be used.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "serviceAccountRef": {"description": "Optional service account field containing the name of a kubernetes ServiceAccount. If the service account is specified, the service account secret token JWT will be used for authenticating with Akeyless. If the service account selector is not supplied, the secretRef will be used instead.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["accessID", "k8sConfName"], "type": "object"}, "secretRef": {"description": "Reference to a Secret that contains the details to authenticate with Akeyless.", "properties": {"accessID": {"description": "The SecretAccessID is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "accessType": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "accessTypeParam": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "type": "object"}}, "required": ["akeylessGWApiURL", "authSecretRef"], "type": "object"}, "alibaba": {"description": "Alibaba configures this store to sync secrets using Alibaba Cloud provider", "properties": {"auth": {"description": "AlibabaAuth contains a secretRef for credentials.", "properties": {"secretRef": {"description": "AlibabaAuthSecretRef holds secret references for Alibaba credentials.", "properties": {"accessKeyIDSecretRef": {"description": "The AccessKeyID is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "accessKeySecretSecretRef": {"description": "The AccessKeySecret is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["accessKeyIDSecretRef", "accessKeySecretSecretRef"], "type": "object"}}, "required": ["secretRef"], "type": "object"}, "endpoint": {"type": "string"}, "regionID": {"description": "Alibaba Region to be used for the provider", "type": "string"}}, "required": ["auth", "regionID"], "type": "object"}, "aws": {"description": "AWS configures this store to sync secrets using AWS Secret Manager provider", "properties": {"auth": {"description": "Auth defines the information necessary to authenticate against AWS if not set aws sdk will infer credentials from your environment see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials", "properties": {"jwt": {"description": "Authenticate against AWS using service account tokens.", "properties": {"serviceAccountRef": {"description": "A reference to a ServiceAccount resource.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "type": "object"}, "secretRef": {"description": "AWSAuthSecretRef holds secret references for AWS credentials both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate.", "properties": {"accessKeyIDSecretRef": {"description": "The AccessKeyID is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "secretAccessKeySecretRef": {"description": "The SecretAccessKey is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "type": "object"}, "region": {"description": "AWS Region to be used for the provider", "type": "string"}, "role": {"description": "Role is a Role ARN which the SecretManager provider will assume", "type": "string"}, "service": {"description": "Service defines which service should be used to fetch the secrets", "enum": ["SecretsManager", "ParameterStore"], "type": "string"}}, "required": ["region", "service"], "type": "object"}, "azurekv": {"description": "AzureKV configures this store to sync secrets using Azure Key Vault provider", "properties": {"authSecretRef": {"description": "Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type.", "properties": {"clientId": {"description": "The Azure clientId of the service principle used for authentication.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "clientSecret": {"description": "The Azure ClientSecret of the service principle used for authentication.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "authType": {"default": "ServicePrincipal", "description": "Auth type defines how to authenticate to the keyvault service. Valid values are: - \"ServicePrincipal\" (default): Using a service principal (tenantId, clientId, clientSecret) - \"ManagedIdentity\": Using Managed Identity assigned to the pod (see aad-pod-identity)", "enum": ["ServicePrincipal", "ManagedIdentity", "WorkloadIdentity"], "type": "string"}, "identityId": {"description": "If multiple Managed Identity is assigned to the pod, you can select the one to be used", "type": "string"}, "serviceAccountRef": {"description": "ServiceAccountRef specified the service account that should be used when authenticating with WorkloadIdentity.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}, "tenantId": {"description": "TenantID configures the Azure Tenant to send requests to. Required for ServicePrincipal auth type.", "type": "string"}, "vaultUrl": {"description": "Vault Url from which the secrets to be fetched from.", "type": "string"}}, "required": ["vaultUrl"], "type": "object"}, "fake": {"description": "Fake configures a store with static key/value pairs", "properties": {"data": {"items": {"properties": {"key": {"type": "string"}, "value": {"type": "string"}, "valueMap": {"additionalProperties": {"type": "string"}, "type": "object"}, "version": {"type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}}, "required": ["data"], "type": "object"}, "gcpsm": {"description": "GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider", "properties": {"auth": {"description": "Auth defines the information necessary to authenticate against GCP", "properties": {"secretRef": {"properties": {"secretAccessKeySecretRef": {"description": "The SecretAccessKey is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "workloadIdentity": {"properties": {"clusterLocation": {"type": "string"}, "clusterName": {"type": "string"}, "clusterProjectID": {"type": "string"}, "serviceAccountRef": {"description": "A reference to a ServiceAccount resource.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["clusterLocation", "clusterName", "serviceAccountRef"], "type": "object"}}, "type": "object"}, "projectID": {"description": "ProjectID project where secret is located", "type": "string"}}, "type": "object"}, "gitlab": {"description": "Gitlab configures this store to sync secrets using Gitlab Variables provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with a GitLab instance.", "properties": {"SecretRef": {"properties": {"accessToken": {"description": "AccessToken is used for authentication.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["SecretRef"], "type": "object"}, "projectID": {"description": "ProjectID specifies a project where secrets are located.", "type": "string"}, "url": {"description": "URL configures the GitLab instance URL. Defaults to https://gitlab.com/.", "type": "string"}}, "required": ["auth"], "type": "object"}, "ibm": {"description": "IBM configures this store to sync secrets using IBM Cloud provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with the IBM secrets manager.", "properties": {"secretRef": {"properties": {"secretApiKeySecretRef": {"description": "The SecretAccessKey is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["secretRef"], "type": "object"}, "serviceUrl": {"description": "ServiceURL is the Endpoint URL that is specific to the Secrets Manager service instance", "type": "string"}}, "required": ["auth"], "type": "object"}, "kubernetes": {"description": "Kubernetes configures this store to sync secrets using a Kubernetes cluster provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with a Kubernetes instance.", "maxProperties": 1, "minProperties": 1, "properties": {"cert": {"description": "has both clientCert and clientKey as secretKeySelector", "properties": {"clientCert": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "clientKey": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "serviceAccount": {"description": "points to a service account that should be used for authentication", "properties": {"serviceAccount": {"description": "A reference to a ServiceAccount resource.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "type": "object"}, "token": {"description": "use static token to authenticate with", "properties": {"bearerToken": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "type": "object"}, "remoteNamespace": {"default": "default", "description": "Remote namespace to fetch the secrets from", "type": "string"}, "server": {"description": "configures the Kubernetes server Address.", "properties": {"caBundle": {"description": "CABundle is a base64-encoded CA certificate", "format": "byte", "type": "string"}, "caProvider": {"description": "see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider", "properties": {"key": {"description": "The key the value inside of the provider type to use, only used with \"Secret\" type", "type": "string"}, "name": {"description": "The name of the object located at the provider type.", "type": "string"}, "namespace": {"description": "The namespace the Provider type is in.", "type": "string"}, "type": {"description": "The type of provider to use such as \"Secret\", or \"ConfigMap\".", "enum": ["Secret", "ConfigMap"], "type": "string"}}, "required": ["name", "type"], "type": "object"}, "url": {"default": "kubernetes.default", "description": "configures the Kubernetes server Address.", "type": "string"}}, "type": "object"}}, "required": ["auth"], "type": "object"}, "oracle": {"description": "Oracle configures this store to sync secrets using Oracle Vault provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with the Oracle Vault. If empty, use the instance principal, otherwise the user credentials specified in Auth.", "properties": {"secretRef": {"description": "SecretRef to pass through sensitive information.", "properties": {"fingerprint": {"description": "Fingerprint is the fingerprint of the API private key.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "privatekey": {"description": "PrivateKey is the user's API Signing Key in PEM format, used for authentication.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["fingerprint", "privatekey"], "type": "object"}, "tenancy": {"description": "Tenancy is the tenancy OCID where user is located.", "type": "string"}, "user": {"description": "User is an access OCID specific to the account.", "type": "string"}}, "required": ["secretRef", "tenancy", "user"], "type": "object"}, "region": {"description": "Region is the region where vault is located.", "type": "string"}, "vault": {"description": "Vault is the vault's OCID of the specific vault where secret is located.", "type": "string"}}, "required": ["region", "vault"], "type": "object"}, "vault": {"description": "Vault configures this store to sync secrets using Hashi provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with the Vault server.", "properties": {"appRole": {"description": "AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.", "properties": {"path": {"default": "approle", "description": "Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"", "type": "string"}, "roleId": {"description": "RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.", "type": "string"}, "secretRef": {"description": "Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["path", "roleId", "secretRef"], "type": "object"}, "cert": {"description": "Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate Cert authentication method", "properties": {"clientCert": {"description": "ClientCert is a certificate to authenticate using the Cert Vault authentication method", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "secretRef": {"description": "SecretRef to a key in a Secret resource containing client private key to authenticate with Vault using the Cert authentication method", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "jwt": {"description": "Jwt authenticates with Vault by passing role and JWT token using the JWT/OIDC authentication method", "properties": {"kubernetesServiceAccountToken": {"description": "Optional ServiceAccountToken specifies the Kubernetes service account for which to request a token for with the `TokenRequest` API.", "properties": {"audiences": {"description": "Optional audiences field that will be used to request a temporary Kubernetes service account token for the service account referenced by `serviceAccountRef`. Defaults to a single audience `vault` it not specified.", "items": {"type": "string"}, "type": "array"}, "expirationSeconds": {"description": "Optional expiration time in seconds that will be used to request a temporary Kubernetes service account token for the service account referenced by `serviceAccountRef`. Defaults to 10 minutes.", "format": "int64", "type": "integer"}, "serviceAccountRef": {"description": "Service account field containing the name of a kubernetes ServiceAccount.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["serviceAccountRef"], "type": "object"}, "path": {"default": "jwt", "description": "Path where the JWT authentication backend is mounted in Vault, e.g: \"jwt\"", "type": "string"}, "role": {"description": "Role is a JWT role to authenticate using the JWT/OIDC Vault authentication method", "type": "string"}, "secretRef": {"description": "Optional SecretRef that refers to a key in a Secret resource containing JWT token to authenticate with Vault using the JWT/OIDC authentication method.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["path"], "type": "object"}, "kubernetes": {"description": "Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.", "properties": {"mountPath": {"default": "kubernetes", "description": "Path where the Kubernetes authentication backend is mounted in Vault, e.g: \"kubernetes\"", "type": "string"}, "role": {"description": "A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.", "type": "string"}, "secretRef": {"description": "Optional secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. If a name is specified without a key, `token` is the default. If one is not specified, the one bound to the controller will be used.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "serviceAccountRef": {"description": "Optional service account field containing the name of a kubernetes ServiceAccount. If the service account is specified, the service account secret token JWT will be used for authenticating with Vault. If the service account selector is not supplied, the secretRef will be used instead.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["mountPath", "role"], "type": "object"}, "ldap": {"description": "Ldap authenticates with Vault by passing username/password pair using the LDAP authentication method", "properties": {"path": {"default": "ldap", "description": "Path where the LDAP authentication backend is mounted in Vault, e.g: \"ldap\"", "type": "string"}, "secretRef": {"description": "SecretRef to a key in a Secret resource containing password for the LDAP user used to authenticate with Vault using the LDAP authentication method", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "username": {"description": "Username is a LDAP user name used to authenticate using the LDAP Vault authentication method", "type": "string"}}, "required": ["path", "username"], "type": "object"}, "tokenSecretRef": {"description": "TokenSecretRef authenticates with Vault by presenting a token.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "caBundle": {"description": "PEM encoded CA bundle used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.", "format": "byte", "type": "string"}, "caProvider": {"description": "The provider for the CA bundle to use to validate Vault server certificate.", "properties": {"key": {"description": "The key the value inside of the provider type to use, only used with \"Secret\" type", "type": "string"}, "name": {"description": "The name of the object located at the provider type.", "type": "string"}, "namespace": {"description": "The namespace the Provider type is in.", "type": "string"}, "type": {"description": "The type of provider to use such as \"Secret\", or \"ConfigMap\".", "enum": ["Secret", "ConfigMap"], "type": "string"}}, "required": ["name", "type"], "type": "object"}, "forwardInconsistent": {"description": "ForwardInconsistent tells Vault to forward read-after-write requests to the Vault leader instead of simply retrying within a loop. This can increase performance if the option is enabled serverside. https://www.vaultproject.io/docs/configuration/replication#allow_forwarding_via_header", "type": "boolean"}, "namespace": {"description": "Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\". More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces", "type": "string"}, "path": {"description": "Path is the mount path of the Vault KV backend endpoint, e.g: \"secret\". The v2 KV secret engine version specific \"/data\" path suffix for fetching secrets from Vault is optional and will be appended if not present in specified path.", "type": "string"}, "readYourWrites": {"description": "ReadYourWrites ensures isolated read-after-write semantics by providing discovered cluster replication states in each request. More information about eventual consistency in Vault can be found here https://www.vaultproject.io/docs/enterprise/consistency", "type": "boolean"}, "server": {"description": "Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".", "type": "string"}, "version": {"default": "v2", "description": "Version is the Vault KV secret engine version. This can be either \"v1\" or \"v2\". Version defaults to \"v2\".", "enum": ["v1", "v2"], "type": "string"}}, "required": ["auth", "server"], "type": "object"}, "webhook": {"description": "Webhook configures this store to sync secrets using a generic templated webhook", "properties": {"body": {"description": "Body", "type": "string"}, "caBundle": {"description": "PEM encoded CA bundle used to validate webhook server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.", "format": "byte", "type": "string"}, "caProvider": {"description": "The provider for the CA bundle to use to validate webhook server certificate.", "properties": {"key": {"description": "The key the value inside of the provider type to use, only used with \"Secret\" type", "type": "string"}, "name": {"description": "The name of the object located at the provider type.", "type": "string"}, "namespace": {"description": "The namespace the Provider type is in.", "type": "string"}, "type": {"description": "The type of provider to use such as \"Secret\", or \"ConfigMap\".", "enum": ["Secret", "ConfigMap"], "type": "string"}}, "required": ["name", "type"], "type": "object"}, "headers": {"additionalProperties": {"type": "string"}, "description": "Headers", "type": "object"}, "method": {"description": "Webhook Method", "type": "string"}, "result": {"description": "Result formatting", "properties": {"jsonPath": {"description": "Json path of return value", "type": "string"}}, "type": "object"}, "secrets": {"description": "Secrets to fill in templates These secrets will be passed to the templating function as key value pairs under the given name", "items": {"properties": {"name": {"description": "Name of this secret in templates", "type": "string"}, "secretRef": {"description": "Secret ref to fill in credentials", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["name", "secretRef"], "type": "object"}, "type": "array"}, "timeout": {"description": "Timeout", "type": "string"}, "url": {"description": "Webhook url to call", "type": "string"}}, "required": ["result", "url"], "type": "object"}, "yandexlockbox": {"description": "YandexLockbox configures this store to sync secrets using Yandex Lockbox provider", "properties": {"apiEndpoint": {"description": "Yandex.Cloud API endpoint (e.g. 'api.cloud.yandex.net:443')", "type": "string"}, "auth": {"description": "Auth defines the information necessary to authenticate against Yandex Lockbox", "properties": {"authorizedKeySecretRef": {"description": "The authorized key used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "caProvider": {"description": "The provider for the CA bundle to use to validate Yandex.Cloud server certificate.", "properties": {"certSecretRef": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["auth"], "type": "object"}}, "type": "object"}, "retrySettings": {"description": "Used to configure http retries if failed", "properties": {"maxRetries": {"format": "int32", "type": "integer"}, "retryInterval": {"type": "string"}}, "type": "object"}}, "required": ["provider"], "type": "object"}, "status": {"description": "SecretStoreStatus defines the observed state of the SecretStore.", "properties": {"conditions": {"items": {"properties": {"lastTransitionTime": {"format": "date-time", "type": "string"}, "message": {"type": "string"}, "reason": {"type": "string"}, "status": {"type": "string"}, "type": {"type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/clustersecretstore-external-secrets-v1beta1.json b/schemas/v1.22.0/clustersecretstore-external-secrets-v1beta1.json deleted file mode 100644 index dd589283..00000000 --- a/schemas/v1.22.0/clustersecretstore-external-secrets-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "ClusterSecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "SecretStoreSpec defines the desired state of SecretStore.", "properties": {"conditions": {"description": "Used to constraint a ClusterSecretStore to specific namespaces. Relevant only to ClusterSecretStore", "items": {"description": "ClusterSecretStoreCondition describes a condition by which to choose namespaces to process ExternalSecrets in for a ClusterSecretStore instance.", "properties": {"namespaceSelector": {"description": "Choose namespace using a labelSelector", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object", "x-kubernetes-map-type": "atomic"}, "namespaces": {"description": "Choose namespaces by name", "items": {"type": "string"}, "type": "array"}}, "type": "object"}, "type": "array"}, "controller": {"description": "Used to select the correct KES controller (think: ingress.ingressClassName) The KES controller is instantiated with a specific controller name and filters ES based on this property", "type": "string"}, "provider": {"description": "Used to configure the provider. Only one provider may be set", "maxProperties": 1, "minProperties": 1, "properties": {"akeyless": {"description": "Akeyless configures this store to sync secrets using Akeyless Vault provider", "properties": {"akeylessGWApiURL": {"description": "Akeyless GW API Url from which the secrets to be fetched from.", "type": "string"}, "authSecretRef": {"description": "Auth configures how the operator authenticates with Akeyless.", "properties": {"kubernetesAuth": {"description": "Kubernetes authenticates with Akeyless by passing the ServiceAccount token stored in the named Secret resource.", "properties": {"accessID": {"description": "the Akeyless Kubernetes auth-method access-id", "type": "string"}, "k8sConfName": {"description": "Kubernetes-auth configuration name in Akeyless-Gateway", "type": "string"}, "secretRef": {"description": "Optional secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Akeyless. If a name is specified without a key, `token` is the default. If one is not specified, the one bound to the controller will be used.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "serviceAccountRef": {"description": "Optional service account field containing the name of a kubernetes ServiceAccount. If the service account is specified, the service account secret token JWT will be used for authenticating with Akeyless. If the service account selector is not supplied, the secretRef will be used instead.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["accessID", "k8sConfName"], "type": "object"}, "secretRef": {"description": "Reference to a Secret that contains the details to authenticate with Akeyless.", "properties": {"accessID": {"description": "The SecretAccessID is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "accessType": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "accessTypeParam": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "type": "object"}}, "required": ["akeylessGWApiURL", "authSecretRef"], "type": "object"}, "alibaba": {"description": "Alibaba configures this store to sync secrets using Alibaba Cloud provider", "properties": {"auth": {"description": "AlibabaAuth contains a secretRef for credentials.", "properties": {"secretRef": {"description": "AlibabaAuthSecretRef holds secret references for Alibaba credentials.", "properties": {"accessKeyIDSecretRef": {"description": "The AccessKeyID is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "accessKeySecretSecretRef": {"description": "The AccessKeySecret is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["accessKeyIDSecretRef", "accessKeySecretSecretRef"], "type": "object"}}, "required": ["secretRef"], "type": "object"}, "endpoint": {"type": "string"}, "regionID": {"description": "Alibaba Region to be used for the provider", "type": "string"}}, "required": ["auth", "regionID"], "type": "object"}, "aws": {"description": "AWS configures this store to sync secrets using AWS Secret Manager provider", "properties": {"auth": {"description": "Auth defines the information necessary to authenticate against AWS if not set aws sdk will infer credentials from your environment see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials", "properties": {"jwt": {"description": "Authenticate against AWS using service account tokens.", "properties": {"serviceAccountRef": {"description": "A reference to a ServiceAccount resource.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "type": "object"}, "secretRef": {"description": "AWSAuthSecretRef holds secret references for AWS credentials both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate.", "properties": {"accessKeyIDSecretRef": {"description": "The AccessKeyID is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "secretAccessKeySecretRef": {"description": "The SecretAccessKey is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "type": "object"}, "region": {"description": "AWS Region to be used for the provider", "type": "string"}, "role": {"description": "Role is a Role ARN which the SecretManager provider will assume", "type": "string"}, "service": {"description": "Service defines which service should be used to fetch the secrets", "enum": ["SecretsManager", "ParameterStore"], "type": "string"}}, "required": ["region", "service"], "type": "object"}, "azurekv": {"description": "AzureKV configures this store to sync secrets using Azure Key Vault provider", "properties": {"authSecretRef": {"description": "Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type.", "properties": {"clientId": {"description": "The Azure clientId of the service principle used for authentication.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "clientSecret": {"description": "The Azure ClientSecret of the service principle used for authentication.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "authType": {"default": "ServicePrincipal", "description": "Auth type defines how to authenticate to the keyvault service. Valid values are: - \"ServicePrincipal\" (default): Using a service principal (tenantId, clientId, clientSecret) - \"ManagedIdentity\": Using Managed Identity assigned to the pod (see aad-pod-identity)", "enum": ["ServicePrincipal", "ManagedIdentity", "WorkloadIdentity"], "type": "string"}, "environmentType": {"default": "PublicCloud", "description": "EnvironmentType specifies the Azure cloud environment endpoints to use for connecting and authenticating with Azure. By default it points to the public cloud AAD endpoint. The following endpoints are available, also see here: https://github.com/Azure/go-autorest/blob/main/autorest/azure/environments.go#L152 PublicCloud, USGovernmentCloud, ChinaCloud, GermanCloud", "enum": ["PublicCloud", "USGovernmentCloud", "ChinaCloud", "GermanCloud"], "type": "string"}, "identityId": {"description": "If multiple Managed Identity is assigned to the pod, you can select the one to be used", "type": "string"}, "serviceAccountRef": {"description": "ServiceAccountRef specified the service account that should be used when authenticating with WorkloadIdentity.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}, "tenantId": {"description": "TenantID configures the Azure Tenant to send requests to. Required for ServicePrincipal auth type.", "type": "string"}, "vaultUrl": {"description": "Vault Url from which the secrets to be fetched from.", "type": "string"}}, "required": ["vaultUrl"], "type": "object"}, "doppler": {"description": "Doppler configures this store to sync secrets using the Doppler provider", "properties": {"auth": {"description": "Auth configures how the Operator authenticates with the Doppler API", "properties": {"secretRef": {"properties": {"dopplerToken": {"description": "The DopplerToken is used for authentication. See https://docs.doppler.com/reference/api#authentication for auth token types. The Key attribute defaults to dopplerToken if not specified.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["dopplerToken"], "type": "object"}}, "required": ["secretRef"], "type": "object"}, "config": {"description": "Doppler config (required if not using a Service Token)", "type": "string"}, "format": {"description": "Format enables the downloading of secrets as a file (string)", "enum": ["json", "dotnet-json", "env", "yaml", "docker"], "type": "string"}, "nameTransformer": {"description": "Environment variable compatible name transforms that change secret names to a different format", "enum": ["upper-camel", "camel", "lower-snake", "tf-var", "dotnet-env"], "type": "string"}, "project": {"description": "Doppler project (required if not using a Service Token)", "type": "string"}}, "required": ["auth"], "type": "object"}, "fake": {"description": "Fake configures a store with static key/value pairs", "properties": {"data": {"items": {"properties": {"key": {"type": "string"}, "value": {"type": "string"}, "valueMap": {"additionalProperties": {"type": "string"}, "type": "object"}, "version": {"type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}}, "required": ["data"], "type": "object"}, "gcpsm": {"description": "GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider", "properties": {"auth": {"description": "Auth defines the information necessary to authenticate against GCP", "properties": {"secretRef": {"properties": {"secretAccessKeySecretRef": {"description": "The SecretAccessKey is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "workloadIdentity": {"properties": {"clusterLocation": {"type": "string"}, "clusterName": {"type": "string"}, "clusterProjectID": {"type": "string"}, "serviceAccountRef": {"description": "A reference to a ServiceAccount resource.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["clusterLocation", "clusterName", "serviceAccountRef"], "type": "object"}}, "type": "object"}, "projectID": {"description": "ProjectID project where secret is located", "type": "string"}}, "type": "object"}, "gitlab": {"description": "Gitlab configures this store to sync secrets using Gitlab Variables provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with a GitLab instance.", "properties": {"SecretRef": {"properties": {"accessToken": {"description": "AccessToken is used for authentication.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["SecretRef"], "type": "object"}, "environment": {"description": "Environment environment_scope of gitlab CI/CD variables (Please see https://docs.gitlab.com/ee/ci/environments/#create-a-static-environment on how to create environments)", "type": "string"}, "projectID": {"description": "ProjectID specifies a project where secrets are located.", "type": "string"}, "url": {"description": "URL configures the GitLab instance URL. Defaults to https://gitlab.com/.", "type": "string"}}, "required": ["auth"], "type": "object"}, "ibm": {"description": "IBM configures this store to sync secrets using IBM Cloud provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with the IBM secrets manager.", "maxProperties": 1, "minProperties": 1, "properties": {"containerAuth": {"description": "IBM Container-based auth with IAM Trusted Profile.", "properties": {"iamEndpoint": {"type": "string"}, "profile": {"description": "the IBM Trusted Profile", "type": "string"}, "tokenLocation": {"description": "Location the token is mounted on the pod", "type": "string"}}, "required": ["profile"], "type": "object"}, "secretRef": {"properties": {"secretApiKeySecretRef": {"description": "The SecretAccessKey is used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "type": "object"}, "serviceUrl": {"description": "ServiceURL is the Endpoint URL that is specific to the Secrets Manager service instance", "type": "string"}}, "required": ["auth"], "type": "object"}, "kubernetes": {"description": "Kubernetes configures this store to sync secrets using a Kubernetes cluster provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with a Kubernetes instance.", "maxProperties": 1, "minProperties": 1, "properties": {"cert": {"description": "has both clientCert and clientKey as secretKeySelector", "properties": {"clientCert": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "clientKey": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "serviceAccount": {"description": "points to a service account that should be used for authentication", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}, "token": {"description": "use static token to authenticate with", "properties": {"bearerToken": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "type": "object"}, "remoteNamespace": {"default": "default", "description": "Remote namespace to fetch the secrets from", "type": "string"}, "server": {"description": "configures the Kubernetes server Address.", "properties": {"caBundle": {"description": "CABundle is a base64-encoded CA certificate", "format": "byte", "type": "string"}, "caProvider": {"description": "see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider", "properties": {"key": {"description": "The key where the CA certificate can be found in the Secret or ConfigMap.", "type": "string"}, "name": {"description": "The name of the object located at the provider type.", "type": "string"}, "namespace": {"description": "The namespace the Provider type is in. Can only be defined when used in a ClusterSecretStore.", "type": "string"}, "type": {"description": "The type of provider to use such as \"Secret\", or \"ConfigMap\".", "enum": ["Secret", "ConfigMap"], "type": "string"}}, "required": ["name", "type"], "type": "object"}, "url": {"default": "kubernetes.default", "description": "configures the Kubernetes server Address.", "type": "string"}}, "type": "object"}}, "required": ["auth"], "type": "object"}, "onepassword": {"description": "OnePassword configures this store to sync secrets using the 1Password Cloud provider", "properties": {"auth": {"description": "Auth defines the information necessary to authenticate against OnePassword Connect Server", "properties": {"secretRef": {"description": "OnePasswordAuthSecretRef holds secret references for 1Password credentials.", "properties": {"connectTokenSecretRef": {"description": "The ConnectToken is used for authentication to a 1Password Connect Server.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["connectTokenSecretRef"], "type": "object"}}, "required": ["secretRef"], "type": "object"}, "connectHost": {"description": "ConnectHost defines the OnePassword Connect Server to connect to", "type": "string"}, "vaults": {"additionalProperties": {"type": "integer"}, "description": "Vaults defines which OnePassword vaults to search in which order", "type": "object"}}, "required": ["auth", "connectHost", "vaults"], "type": "object"}, "oracle": {"description": "Oracle configures this store to sync secrets using Oracle Vault provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with the Oracle Vault. If empty, use the instance principal, otherwise the user credentials specified in Auth.", "properties": {"secretRef": {"description": "SecretRef to pass through sensitive information.", "properties": {"fingerprint": {"description": "Fingerprint is the fingerprint of the API private key.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "privatekey": {"description": "PrivateKey is the user's API Signing Key in PEM format, used for authentication.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["fingerprint", "privatekey"], "type": "object"}, "tenancy": {"description": "Tenancy is the tenancy OCID where user is located.", "type": "string"}, "user": {"description": "User is an access OCID specific to the account.", "type": "string"}}, "required": ["secretRef", "tenancy", "user"], "type": "object"}, "region": {"description": "Region is the region where vault is located.", "type": "string"}, "vault": {"description": "Vault is the vault's OCID of the specific vault where secret is located.", "type": "string"}}, "required": ["region", "vault"], "type": "object"}, "senhasegura": {"description": "Senhasegura configures this store to sync secrets using senhasegura provider", "properties": {"auth": {"description": "Auth defines parameters to authenticate in senhasegura", "properties": {"clientId": {"type": "string"}, "clientSecretSecretRef": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["clientId", "clientSecretSecretRef"], "type": "object"}, "ignoreSslCertificate": {"default": false, "description": "IgnoreSslCertificate defines if SSL certificate must be ignored", "type": "boolean"}, "module": {"description": "Module defines which senhasegura module should be used to get secrets", "type": "string"}, "url": {"description": "URL of senhasegura", "type": "string"}}, "required": ["auth", "module", "url"], "type": "object"}, "vault": {"description": "Vault configures this store to sync secrets using Hashi provider", "properties": {"auth": {"description": "Auth configures how secret-manager authenticates with the Vault server.", "properties": {"appRole": {"description": "AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.", "properties": {"path": {"default": "approle", "description": "Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"", "type": "string"}, "roleId": {"description": "RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.", "type": "string"}, "secretRef": {"description": "Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["path", "roleId", "secretRef"], "type": "object"}, "cert": {"description": "Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate Cert authentication method", "properties": {"clientCert": {"description": "ClientCert is a certificate to authenticate using the Cert Vault authentication method", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "secretRef": {"description": "SecretRef to a key in a Secret resource containing client private key to authenticate with Vault using the Cert authentication method", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "jwt": {"description": "Jwt authenticates with Vault by passing role and JWT token using the JWT/OIDC authentication method", "properties": {"kubernetesServiceAccountToken": {"description": "Optional ServiceAccountToken specifies the Kubernetes service account for which to request a token for with the `TokenRequest` API.", "properties": {"audiences": {"description": "Optional audiences field that will be used to request a temporary Kubernetes service account token for the service account referenced by `serviceAccountRef`. Defaults to a single audience `vault` it not specified. Deprecated: use serviceAccountRef.Audiences instead", "items": {"type": "string"}, "type": "array"}, "expirationSeconds": {"description": "Optional expiration time in seconds that will be used to request a temporary Kubernetes service account token for the service account referenced by `serviceAccountRef`. Deprecated: this will be removed in the future. Defaults to 10 minutes.", "format": "int64", "type": "integer"}, "serviceAccountRef": {"description": "Service account field containing the name of a kubernetes ServiceAccount.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["serviceAccountRef"], "type": "object"}, "path": {"default": "jwt", "description": "Path where the JWT authentication backend is mounted in Vault, e.g: \"jwt\"", "type": "string"}, "role": {"description": "Role is a JWT role to authenticate using the JWT/OIDC Vault authentication method", "type": "string"}, "secretRef": {"description": "Optional SecretRef that refers to a key in a Secret resource containing JWT token to authenticate with Vault using the JWT/OIDC authentication method.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["path"], "type": "object"}, "kubernetes": {"description": "Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.", "properties": {"mountPath": {"default": "kubernetes", "description": "Path where the Kubernetes authentication backend is mounted in Vault, e.g: \"kubernetes\"", "type": "string"}, "role": {"description": "A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.", "type": "string"}, "secretRef": {"description": "Optional secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. If a name is specified without a key, `token` is the default. If one is not specified, the one bound to the controller will be used.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "serviceAccountRef": {"description": "Optional service account field containing the name of a kubernetes ServiceAccount. If the service account is specified, the service account secret token JWT will be used for authenticating with Vault. If the service account selector is not supplied, the secretRef will be used instead.", "properties": {"audiences": {"description": "Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list", "items": {"type": "string"}, "type": "array"}, "name": {"description": "The name of the ServiceAccount resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["mountPath", "role"], "type": "object"}, "ldap": {"description": "Ldap authenticates with Vault by passing username/password pair using the LDAP authentication method", "properties": {"path": {"default": "ldap", "description": "Path where the LDAP authentication backend is mounted in Vault, e.g: \"ldap\"", "type": "string"}, "secretRef": {"description": "SecretRef to a key in a Secret resource containing password for the LDAP user used to authenticate with Vault using the LDAP authentication method", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}, "username": {"description": "Username is a LDAP user name used to authenticate using the LDAP Vault authentication method", "type": "string"}}, "required": ["path", "username"], "type": "object"}, "tokenSecretRef": {"description": "TokenSecretRef authenticates with Vault by presenting a token.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "caBundle": {"description": "PEM encoded CA bundle used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.", "format": "byte", "type": "string"}, "caProvider": {"description": "The provider for the CA bundle to use to validate Vault server certificate.", "properties": {"key": {"description": "The key where the CA certificate can be found in the Secret or ConfigMap.", "type": "string"}, "name": {"description": "The name of the object located at the provider type.", "type": "string"}, "namespace": {"description": "The namespace the Provider type is in. Can only be defined when used in a ClusterSecretStore.", "type": "string"}, "type": {"description": "The type of provider to use such as \"Secret\", or \"ConfigMap\".", "enum": ["Secret", "ConfigMap"], "type": "string"}}, "required": ["name", "type"], "type": "object"}, "forwardInconsistent": {"description": "ForwardInconsistent tells Vault to forward read-after-write requests to the Vault leader instead of simply retrying within a loop. This can increase performance if the option is enabled serverside. https://www.vaultproject.io/docs/configuration/replication#allow_forwarding_via_header", "type": "boolean"}, "namespace": {"description": "Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\". More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces", "type": "string"}, "path": {"description": "Path is the mount path of the Vault KV backend endpoint, e.g: \"secret\". The v2 KV secret engine version specific \"/data\" path suffix for fetching secrets from Vault is optional and will be appended if not present in specified path.", "type": "string"}, "readYourWrites": {"description": "ReadYourWrites ensures isolated read-after-write semantics by providing discovered cluster replication states in each request. More information about eventual consistency in Vault can be found here https://www.vaultproject.io/docs/enterprise/consistency", "type": "boolean"}, "server": {"description": "Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".", "type": "string"}, "version": {"default": "v2", "description": "Version is the Vault KV secret engine version. This can be either \"v1\" or \"v2\". Version defaults to \"v2\".", "enum": ["v1", "v2"], "type": "string"}}, "required": ["auth", "server"], "type": "object"}, "webhook": {"description": "Webhook configures this store to sync secrets using a generic templated webhook", "properties": {"body": {"description": "Body", "type": "string"}, "caBundle": {"description": "PEM encoded CA bundle used to validate webhook server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.", "format": "byte", "type": "string"}, "caProvider": {"description": "The provider for the CA bundle to use to validate webhook server certificate.", "properties": {"key": {"description": "The key the value inside of the provider type to use, only used with \"Secret\" type", "type": "string"}, "name": {"description": "The name of the object located at the provider type.", "type": "string"}, "namespace": {"description": "The namespace the Provider type is in.", "type": "string"}, "type": {"description": "The type of provider to use such as \"Secret\", or \"ConfigMap\".", "enum": ["Secret", "ConfigMap"], "type": "string"}}, "required": ["name", "type"], "type": "object"}, "headers": {"additionalProperties": {"type": "string"}, "description": "Headers", "type": "object"}, "method": {"description": "Webhook Method", "type": "string"}, "result": {"description": "Result formatting", "properties": {"jsonPath": {"description": "Json path of return value", "type": "string"}}, "type": "object"}, "secrets": {"description": "Secrets to fill in templates These secrets will be passed to the templating function as key value pairs under the given name", "items": {"properties": {"name": {"description": "Name of this secret in templates", "type": "string"}, "secretRef": {"description": "Secret ref to fill in credentials", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "required": ["name", "secretRef"], "type": "object"}, "type": "array"}, "timeout": {"description": "Timeout", "type": "string"}, "url": {"description": "Webhook url to call", "type": "string"}}, "required": ["result", "url"], "type": "object"}, "yandexcertificatemanager": {"description": "YandexCertificateManager configures this store to sync secrets using Yandex Certificate Manager provider", "properties": {"apiEndpoint": {"description": "Yandex.Cloud API endpoint (e.g. 'api.cloud.yandex.net:443')", "type": "string"}, "auth": {"description": "Auth defines the information necessary to authenticate against Yandex Certificate Manager", "properties": {"authorizedKeySecretRef": {"description": "The authorized key used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "caProvider": {"description": "The provider for the CA bundle to use to validate Yandex.Cloud server certificate.", "properties": {"certSecretRef": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["auth"], "type": "object"}, "yandexlockbox": {"description": "YandexLockbox configures this store to sync secrets using Yandex Lockbox provider", "properties": {"apiEndpoint": {"description": "Yandex.Cloud API endpoint (e.g. 'api.cloud.yandex.net:443')", "type": "string"}, "auth": {"description": "Auth defines the information necessary to authenticate against Yandex Lockbox", "properties": {"authorizedKeySecretRef": {"description": "The authorized key used for authentication", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}, "caProvider": {"description": "The provider for the CA bundle to use to validate Yandex.Cloud server certificate.", "properties": {"certSecretRef": {"description": "A reference to a specific 'key' within a Secret resource, In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "The name of the Secret resource being referred to.", "type": "string"}, "namespace": {"description": "Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["auth"], "type": "object"}}, "type": "object"}, "refreshInterval": {"description": "Used to configure store refresh interval in seconds. Empty or 0 will default to the controller config.", "type": "integer"}, "retrySettings": {"description": "Used to configure http retries if failed", "properties": {"maxRetries": {"format": "int32", "type": "integer"}, "retryInterval": {"type": "string"}}, "type": "object"}}, "required": ["provider"], "type": "object"}, "status": {"description": "SecretStoreStatus defines the observed state of the SecretStore.", "properties": {"conditions": {"items": {"properties": {"lastTransitionTime": {"format": "date-time", "type": "string"}, "message": {"type": "string"}, "reason": {"type": "string"}, "status": {"type": "string"}, "type": {"type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/clustertriggerauthentication-keda-v1alpha1.json b/schemas/v1.22.0/clustertriggerauthentication-keda-v1alpha1.json deleted file mode 100644 index da938b5c..00000000 --- a/schemas/v1.22.0/clustertriggerauthentication-keda-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "ClusterTriggerAuthentication defines how a trigger can authenticate globally", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "TriggerAuthenticationSpec defines the various ways to authenticate", "properties": {"env": {"items": {"description": "AuthEnvironment is used to authenticate using environment variables in the destination ScaleTarget spec", "properties": {"containerName": {"type": "string"}, "name": {"type": "string"}, "parameter": {"type": "string"}}, "required": ["name", "parameter"], "type": "object"}, "type": "array"}, "hashiCorpVault": {"description": "HashiCorpVault is used to authenticate using Hashicorp Vault", "properties": {"address": {"type": "string"}, "authentication": {"description": "VaultAuthentication contains the list of Hashicorp Vault authentication methods", "type": "string"}, "credential": {"description": "Credential defines the Hashicorp Vault credentials depending on the authentication method", "properties": {"serviceAccount": {"type": "string"}, "token": {"type": "string"}}, "type": "object"}, "mount": {"type": "string"}, "namespace": {"type": "string"}, "role": {"type": "string"}, "secrets": {"items": {"description": "VaultSecret defines the mapping between the path of the secret in Vault to the parameter", "properties": {"key": {"type": "string"}, "parameter": {"type": "string"}, "path": {"type": "string"}}, "required": ["key", "parameter", "path"], "type": "object"}, "type": "array"}}, "required": ["address", "authentication", "secrets"], "type": "object"}, "podIdentity": {"description": "AuthPodIdentity allows users to select the platform native identity mechanism", "properties": {"provider": {"description": "PodIdentityProvider contains the list of providers", "type": "string"}}, "required": ["provider"], "type": "object"}, "secretTargetRef": {"items": {"description": "AuthSecretTargetRef is used to authenticate using a reference to a secret", "properties": {"key": {"type": "string"}, "name": {"type": "string"}, "parameter": {"type": "string"}}, "required": ["key", "name", "parameter"], "type": "object"}, "type": "array"}}, "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/component-core-v1alpha2.json b/schemas/v1.22.0/component-core-v1alpha2.json deleted file mode 100644 index c14f23a9..00000000 --- a/schemas/v1.22.0/component-core-v1alpha2.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "A Component describes how an OAM workload kind may be instantiated.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "A ComponentSpec defines the desired state of a Component.", "properties": {"parameters": {"description": "Parameters exposed by this component. ApplicationConfigurations that reference this component may specify values for these parameters, which will in turn be injected into the embedded workload.", "items": {"description": "A ComponentParameter defines a configurable parameter of a component.", "properties": {"description": {"description": "Description of this parameter.", "type": "string"}, "fieldPaths": {"description": "FieldPaths specifies an array of fields within this Component's workload that will be overwritten by the value of this parameter. The type of the parameter (e.g. int, string) is inferred from the type of these fields; All fields must be of the same type. Fields are specified as JSON field paths without a leading dot, for example 'spec.replicas'.", "items": {"type": "string"}, "type": "array"}, "name": {"description": "Name of this parameter. OAM ApplicationConfigurations will specify parameter values using this name.", "type": "string"}, "required": {"description": "Required specifies whether or not a value for this parameter must be supplied when authoring an ApplicationConfiguration.", "type": "boolean"}}, "required": ["fieldPaths", "name"], "type": "object"}, "type": "array"}, "workload": {"description": "A Workload that will be created for each ApplicationConfiguration that includes this Component. Workload is an instance of a workloadDefinition. We either use the GVK info or a special \"type\" field in the workload to associate the content of the workload with its workloadDefinition", "type": "object", "x-kubernetes-embedded-resource": true, "x-kubernetes-preserve-unknown-fields": true}}, "required": ["workload"], "type": "object"}, "status": {"description": "A ComponentStatus represents the observed state of a Component.", "properties": {"conditions": {"description": "Conditions of the resource.", "items": {"description": "A Condition that may apply to a resource.", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the last time this condition transitioned from one status to another.", "format": "date-time", "type": "string"}, "message": {"description": "A Message containing details about this condition's last transition from one status to another, if any.", "type": "string"}, "reason": {"description": "A Reason for this condition's last transition from one status to another.", "type": "string"}, "status": {"description": "Status of this condition; is it currently True, False, or Unknown?", "type": "string"}, "type": {"description": "Type of this condition. At most one of each condition type may apply to a resource at any point in time.", "type": "string"}}, "required": ["lastTransitionTime", "reason", "status", "type"], "type": "object"}, "type": "array"}, "latestRevision": {"description": "LatestRevision of component", "properties": {"name": {"type": "string"}, "revision": {"format": "int64", "type": "integer"}}, "required": ["name", "revision"], "type": "object"}, "observedGeneration": {"description": "The generation observed by the component controller.", "format": "int64", "type": "integer"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/config-config-v1alpha1.json b/schemas/v1.22.0/config-config-v1alpha1.json deleted file mode 100644 index a0686d68..00000000 --- a/schemas/v1.22.0/config-config-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"properties": {"sync": {"description": "Configuration for syncing k8s objects", "properties": {"syncOnly": {"description": "If non-empty, only entries on this list will be replicated into OPA", "items": {"properties": {"group": {"type": "string"}, "kind": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "type": "array"}}, "type": "object"}, "validation": {"description": "Configuration for validation", "properties": {"traces": {"description": "List of requests to trace. Both \"user\" and \"kinds\" must be specified", "items": {"properties": {"dump": {"description": "Also dump the state of OPA with the trace. Set to `All` to dump everything.", "type": "string"}, "kind": {"description": "Only trace requests of the following GroupVersionKind", "properties": {"group": {"type": "string"}, "kind": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "user": {"description": "Only trace requests from the specified user", "type": "string"}}, "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "status": {"properties": {"byPod": {"description": "List of statuses as seen by individual pods", "items": {"properties": {"allFinalizers": {"description": "List of Group/Version/Kinds with finalizers", "items": {"properties": {"group": {"type": "string"}, "kind": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "type": "array"}, "id": {"description": "a unique identifier for the pod that wrote the status", "type": "string"}}, "type": "object"}, "type": "array"}}, "type": "object"}}} \ No newline at end of file diff --git a/schemas/v1.22.0/connector-dex-v1.json b/schemas/v1.22.0/connector-dex-v1.json deleted file mode 100644 index e94e2e3e..00000000 --- a/schemas/v1.22.0/connector-dex-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "object", "x-kubernetes-preserve-unknown-fields": true} \ No newline at end of file diff --git a/schemas/v1.22.0/constrainttemplate-templates-v1alpha1.json b/schemas/v1.22.0/constrainttemplate-templates-v1alpha1.json deleted file mode 100644 index c7752845..00000000 --- a/schemas/v1.22.0/constrainttemplate-templates-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"properties": {"crd": {"properties": {"spec": {"properties": {"names": {"properties": {"kind": {"type": "string"}}, "type": "object"}, "validation": {"type": "object"}}, "type": "object"}}, "type": "object"}, "targets": {"items": {"properties": {"rego": {"type": "string"}, "target": {"type": "string"}}, "type": "object"}, "type": "array"}}, "type": "object"}, "status": {"properties": {"byPod": {"items": {"properties": {"errors": {"items": {"properties": {"code": {"type": "string"}, "location": {"type": "string"}, "message": {"type": "string"}}, "required": ["code", "message"], "type": "object"}, "type": "array"}, "id": {"description": "a unique identifier for the pod that wrote the status", "type": "string"}}, "type": "object"}, "type": "array"}, "created": {"type": "boolean"}}, "type": "object"}}} \ No newline at end of file diff --git a/schemas/v1.22.0/constrainttemplate-templates-v1beta1.json b/schemas/v1.22.0/constrainttemplate-templates-v1beta1.json deleted file mode 100644 index c7752845..00000000 --- a/schemas/v1.22.0/constrainttemplate-templates-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"properties": {"crd": {"properties": {"spec": {"properties": {"names": {"properties": {"kind": {"type": "string"}}, "type": "object"}, "validation": {"type": "object"}}, "type": "object"}}, "type": "object"}, "targets": {"items": {"properties": {"rego": {"type": "string"}, "target": {"type": "string"}}, "type": "object"}, "type": "array"}}, "type": "object"}, "status": {"properties": {"byPod": {"items": {"properties": {"errors": {"items": {"properties": {"code": {"type": "string"}, "location": {"type": "string"}, "message": {"type": "string"}}, "required": ["code", "message"], "type": "object"}, "type": "array"}, "id": {"description": "a unique identifier for the pod that wrote the status", "type": "string"}}, "type": "object"}, "type": "array"}, "created": {"type": "boolean"}}, "type": "object"}}} \ No newline at end of file diff --git a/schemas/v1.22.0/containerizedworkload-core-v1alpha2.json b/schemas/v1.22.0/containerizedworkload-core-v1alpha2.json deleted file mode 100644 index 02388bf6..00000000 --- a/schemas/v1.22.0/containerizedworkload-core-v1alpha2.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "A ContainerizedWorkload is a workload that runs OCI containers.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "A ContainerizedWorkloadSpec defines the desired state of a ContainerizedWorkload.", "properties": {"arch": {"description": "CPUArchitecture required by this workload.", "enum": ["i386", "amd64", "arm", "arm64"], "type": "string"}, "containers": {"description": "Containers of which this workload consists.", "items": {"description": "A Container represents an Open Containers Initiative (OCI) container.", "properties": {"args": {"description": "Arguments to be passed to the command run by this container.", "items": {"type": "string"}, "type": "array"}, "command": {"description": "Command to be run by this container.", "items": {"type": "string"}, "type": "array"}, "config": {"description": "ConfigFiles that should be written within this container.", "items": {"description": "A ContainerConfigFile specifies a configuration file that should be written within a container.", "properties": {"fromSecret": {"description": "FromSecret is a secret key reference which can be used to assign a value to be written to the configuration file at the given path in the container.", "properties": {"key": {"description": "The key to select.", "type": "string"}, "name": {"description": "The name of the secret.", "type": "string"}}, "required": ["key", "name"], "type": "object"}, "path": {"description": "Path within the container at which the configuration file should be written.", "type": "string"}, "value": {"description": "Value that should be written to the configuration file.", "type": "string"}}, "required": ["path"], "type": "object"}, "type": "array"}, "env": {"description": "Environment variables that should be set within this container.", "items": {"description": "A ContainerEnvVar specifies an environment variable that should be set within a container.", "properties": {"fromSecret": {"description": "FromSecret is a secret key reference which can be used to assign a value to the environment variable.", "properties": {"key": {"description": "The key to select.", "type": "string"}, "name": {"description": "The name of the secret.", "type": "string"}}, "required": ["key", "name"], "type": "object"}, "name": {"description": "Name of the environment variable. Must be composed of valid Unicode letter and number characters, as well as _ and -.", "pattern": "^[-_a-zA-Z0-9]+$", "type": "string"}, "value": {"description": "Value of the environment variable.", "type": "string"}}, "required": ["name"], "type": "object"}, "type": "array"}, "image": {"description": "Image this container should run. Must be a path-like or URI-like representation of an OCI image. May be prefixed with a registry address and should be suffixed with a tag.", "type": "string"}, "imagePullSecret": {"description": "ImagePullSecret specifies the name of a Secret from which the credentials required to pull this container's image can be loaded.", "type": "string"}, "livenessProbe": {"description": "A LivenessProbe assesses whether this container is alive. Containers that fail liveness probes will be restarted.", "properties": {"exec": {"description": "Exec probes a container's health by executing a command.", "properties": {"command": {"description": "Command to be run by this probe.", "items": {"type": "string"}, "type": "array"}}, "required": ["command"], "type": "object"}, "failureThreshold": {"description": "FailureThreshold specifies how many consecutive probes must fail in order for the container to be considered healthy.", "format": "int32", "type": "integer"}, "httpGet": {"description": "HTTPGet probes a container's health by sending an HTTP GET request.", "properties": {"httpHeaders": {"description": "HTTPHeaders to send with the GET request.", "items": {"description": "A HTTPHeader to be passed when probing a container.", "properties": {"name": {"description": "Name of this HTTP header. Must be unique per probe.", "type": "string"}, "value": {"description": "Value of this HTTP header.", "type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to probe, e.g. '/healthz'.", "type": "string"}, "port": {"description": "Port to probe.", "format": "int32", "type": "integer"}}, "required": ["path", "port"], "type": "object"}, "initialDelaySeconds": {"description": "InitialDelaySeconds after a container starts before the first probe.", "format": "int32", "type": "integer"}, "periodSeconds": {"description": "PeriodSeconds between probes.", "format": "int32", "type": "integer"}, "successThreshold": {"description": "SuccessThreshold specifies how many consecutive probes must success in order for the container to be considered healthy.", "format": "int32", "type": "integer"}, "tcpSocket": {"description": "TCPSocketProbe probes a container's health by connecting to a TCP socket.", "properties": {"port": {"description": "Port this probe should connect to.", "format": "int32", "type": "integer"}}, "required": ["port"], "type": "object"}, "timeoutSeconds": {"description": "TimeoutSeconds after which the probe times out.", "format": "int32", "type": "integer"}}, "type": "object"}, "name": {"description": "Name of this container. Must be unique within its workload.", "type": "string"}, "ports": {"description": "Ports exposed by this container.", "items": {"description": "A ContainerPort specifies a port that is exposed by a container.", "properties": {"containerPort": {"description": "Port number. Must be unique within its container.", "format": "int32", "type": "integer"}, "name": {"description": "Name of this port. Must be unique within its container. Must be lowercase alphabetical characters.", "pattern": "^[a-z]+$", "type": "string"}, "protocol": {"description": "Protocol used by the server listening on this port.", "enum": ["TCP", "UDP"], "type": "string"}}, "required": ["containerPort", "name"], "type": "object"}, "type": "array"}, "readinessProbe": {"description": "A ReadinessProbe assesses whether this container is ready to serve requests. Containers that fail readiness probes will be withdrawn from service.", "properties": {"exec": {"description": "Exec probes a container's health by executing a command.", "properties": {"command": {"description": "Command to be run by this probe.", "items": {"type": "string"}, "type": "array"}}, "required": ["command"], "type": "object"}, "failureThreshold": {"description": "FailureThreshold specifies how many consecutive probes must fail in order for the container to be considered healthy.", "format": "int32", "type": "integer"}, "httpGet": {"description": "HTTPGet probes a container's health by sending an HTTP GET request.", "properties": {"httpHeaders": {"description": "HTTPHeaders to send with the GET request.", "items": {"description": "A HTTPHeader to be passed when probing a container.", "properties": {"name": {"description": "Name of this HTTP header. Must be unique per probe.", "type": "string"}, "value": {"description": "Value of this HTTP header.", "type": "string"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to probe, e.g. '/healthz'.", "type": "string"}, "port": {"description": "Port to probe.", "format": "int32", "type": "integer"}}, "required": ["path", "port"], "type": "object"}, "initialDelaySeconds": {"description": "InitialDelaySeconds after a container starts before the first probe.", "format": "int32", "type": "integer"}, "periodSeconds": {"description": "PeriodSeconds between probes.", "format": "int32", "type": "integer"}, "successThreshold": {"description": "SuccessThreshold specifies how many consecutive probes must success in order for the container to be considered healthy.", "format": "int32", "type": "integer"}, "tcpSocket": {"description": "TCPSocketProbe probes a container's health by connecting to a TCP socket.", "properties": {"port": {"description": "Port this probe should connect to.", "format": "int32", "type": "integer"}}, "required": ["port"], "type": "object"}, "timeoutSeconds": {"description": "TimeoutSeconds after which the probe times out.", "format": "int32", "type": "integer"}}, "type": "object"}, "resources": {"description": "Resources required by this container", "properties": {"cpu": {"description": "CPU required by this container.", "properties": {"required": {"description": "Required CPU count. 1.0 represents one CPU core.", "type": "string"}}, "required": ["required"], "type": "object"}, "extended": {"description": "Extended resources required by this container.", "items": {"description": "ExtendedResource required by a container.", "properties": {"name": {"description": "Name of the external resource. Resource names are specified in kind.group/version format, e.g. motionsensor.ext.example.com/v1.", "type": "string"}, "required": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Required extended resource(s), e.g. 8 or \"very-cool-widget\"", "x-kubernetes-int-or-string": true}}, "required": ["name", "required"], "type": "object"}, "type": "array"}, "gpu": {"description": "GPU required by this container.", "properties": {"required": {"description": "Required GPU count.", "type": "string"}}, "required": ["required"], "type": "object"}, "memory": {"description": "Memory required by this container.", "properties": {"required": {"description": "Required memory.", "type": "string"}}, "required": ["required"], "type": "object"}, "volumes": {"description": "Volumes required by this container.", "items": {"description": "VolumeResource required by a container.", "properties": {"accessMode": {"description": "AccessMode of this volume; RO (read only) or RW (read and write).", "enum": ["RO", "RW"], "type": "string"}, "disk": {"description": "Disk requirements of this volume.", "properties": {"ephemeral": {"description": "Ephemeral specifies whether an external disk needs to be mounted.", "type": "boolean"}, "required": {"description": "Required disk space.", "type": "string"}}, "required": ["required"], "type": "object"}, "mountPath": {"description": "MountPath at which this volume will be mounted within its container.", "type": "string"}, "name": {"description": "Name of this volume. Must be unique within its container.", "type": "string"}, "sharingPolicy": {"description": "SharingPolicy of this volume; Exclusive or Shared.", "enum": ["Exclusive", "Shared"], "type": "string"}}, "required": ["mountPath", "name"], "type": "object"}, "type": "array"}}, "required": ["cpu", "memory"], "type": "object"}}, "required": ["image", "name"], "type": "object"}, "type": "array"}, "osType": {"description": "OperatingSystem required by this workload.", "enum": ["linux", "windows"], "type": "string"}}, "required": ["containers"], "type": "object"}, "status": {"description": "A ContainerizedWorkloadStatus represents the observed state of a ContainerizedWorkload.", "properties": {"conditions": {"description": "Conditions of the resource.", "items": {"description": "A Condition that may apply to a resource.", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the last time this condition transitioned from one status to another.", "format": "date-time", "type": "string"}, "message": {"description": "A Message containing details about this condition's last transition from one status to another, if any.", "type": "string"}, "reason": {"description": "A Reason for this condition's last transition from one status to another.", "type": "string"}, "status": {"description": "Status of this condition; is it currently True, False, or Unknown?", "type": "string"}, "type": {"description": "Type of this condition. At most one of each condition type may apply to a resource at any point in time.", "type": "string"}}, "required": ["lastTransitionTime", "reason", "status", "type"], "type": "object"}, "type": "array"}, "resources": {"description": "Resources managed by this containerised workload.", "items": {"description": "A TypedReference refers to an object by Name, Kind, and APIVersion. It is commonly used to reference cluster-scoped objects or objects where the namespace is already known.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/customresourcedefinition-apiextensions-v1.json b/schemas/v1.22.0/customresourcedefinition-apiextensions-v1.json deleted file mode 100644 index fda8db29..00000000 --- a/schemas/v1.22.0/customresourcedefinition-apiextensions-v1.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "description": "CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format <.spec.name>.<.spec.group>.", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": [ - "string", - "null" - ], - "enum": [ - "apiextensions.k8s.io/v1" - ] - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": [ - "string", - "null" - ], - "enum": [ - "CustomResourceDefinition" - ] - }, - "metadata": { - "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.21.0/_definitions.json#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" - }, - "spec": { - "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.21.0/_definitions.json#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec", - "description": "spec describes how the user wants the resources to appear" - }, - "status": { - "$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.21.0/_definitions.json#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus", - "description": "status indicates the actual state of the CustomResourceDefinition" - } - }, - "required": [ - "spec" - ], - "type": "object", - "x-kubernetes-group-version-kind": [ - { - "group": "apiextensions.k8s.io", - "kind": "CustomResourceDefinition", - "version": "v1" - } - ], - "$schema": "http://json-schema.org/schema#" -} \ No newline at end of file diff --git a/schemas/v1.22.0/deletebackuprequest-velero-v1.json b/schemas/v1.22.0/deletebackuprequest-velero-v1.json deleted file mode 100644 index 63782e32..00000000 --- a/schemas/v1.22.0/deletebackuprequest-velero-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "DeleteBackupRequest is a request to delete one or more backups.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "DeleteBackupRequestSpec is the specification for which backups to delete.", "properties": {"backupName": {"type": "string"}}, "required": ["backupName"], "type": "object"}, "status": {"description": "DeleteBackupRequestStatus is the current status of a DeleteBackupRequest.", "properties": {"errors": {"description": "Errors contains any errors that were encountered during the deletion process.", "items": {"type": "string"}, "nullable": true, "type": "array"}, "phase": {"description": "Phase is the current state of the DeleteBackupRequest.", "enum": ["New", "InProgress", "Processed"], "type": "string"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/devicerequest-dex-v1.json b/schemas/v1.22.0/devicerequest-dex-v1.json deleted file mode 100644 index e94e2e3e..00000000 --- a/schemas/v1.22.0/devicerequest-dex-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "object", "x-kubernetes-preserve-unknown-fields": true} \ No newline at end of file diff --git a/schemas/v1.22.0/devicetoken-dex-v1.json b/schemas/v1.22.0/devicetoken-dex-v1.json deleted file mode 100644 index e94e2e3e..00000000 --- a/schemas/v1.22.0/devicetoken-dex-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "object", "x-kubernetes-preserve-unknown-fields": true} \ No newline at end of file diff --git a/schemas/v1.22.0/dnschaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/dnschaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index beada026..00000000 --- a/schemas/v1.22.0/dnschaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,274 +0,0 @@ -{ - "description": "DNSChaos is the Schema for the networkchaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "Spec defines the behavior of a pod chaos experiment", - "properties": { - "action": { - "description": "Action defines the specific DNS chaos action. Supported action: error, random Default action: error", - "enum": [ - "error", - "random" - ], - "type": "string" - }, - "containerNames": { - "description": "ContainerNames indicates list of the name of affected container. If not set, the first container will be injected", - "items": { - "type": "string" - }, - "type": "array" - }, - "duration": { - "description": "Duration represents the duration of the chaos action", - "type": "string" - }, - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "patterns": { - "description": "Choose which domain names to take effect, support the placeholder ? and wildcard *, or the Specified domain name. Note: 1. The wildcard * must be at the end of the string. For example, chaos-*.org is invalid. 2. if the patterns is empty, will take effect on all the domain names. For example: \t\tThe value is [\"google.com\", \"github.*\", \"chaos-mes?.org\"], \t\twill take effect on \"google.com\", \"github.com\" and \"chaos-mesh.org\"", - "items": { - "type": "string" - }, - "type": "array" - }, - "selector": { - "description": "Selector is used to select pods that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "nodeSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select nodes. Selector which must match a node's labels, and objects must belong to these selected nodes.", - "type": "object" - }, - "nodes": { - "description": "Nodes is a set of node name and objects must belong to these nodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "podPhaseSelectors": { - "description": "PodPhaseSelectors is a set of condition of a pod at the current time. supported value: Pending / Running / Succeeded / Failed / Unknown", - "items": { - "type": "string" - }, - "type": "array" - }, - "pods": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Pods is a map of string keys and a set values that used to select pods. The key defines the namespace which pods belong, and the each values is a set of pod names.", - "type": "object" - } - }, - "type": "object" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of pods to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - } - }, - "required": [ - "action", - "mode", - "selector" - ], - "type": "object" - }, - "status": { - "description": "Most recently observed status of the chaos experiment about pods", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/downloadrequest-velero-v1.json b/schemas/v1.22.0/downloadrequest-velero-v1.json deleted file mode 100644 index 277bd1ba..00000000 --- a/schemas/v1.22.0/downloadrequest-velero-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "DownloadRequest is a request to download an artifact from backup object storage, such as a backup log file.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "DownloadRequestSpec is the specification for a download request.", "properties": {"target": {"description": "Target is what to download (e.g. logs for a backup).", "properties": {"kind": {"description": "Kind is the type of file to download.", "enum": ["BackupLog", "BackupContents", "BackupVolumeSnapshots", "BackupItemSnapshots", "BackupResourceList", "RestoreLog", "RestoreResults"], "type": "string"}, "name": {"description": "Name is the name of the kubernetes resource with which the file is associated.", "type": "string"}}, "required": ["kind", "name"], "type": "object"}}, "required": ["target"], "type": "object"}, "status": {"description": "DownloadRequestStatus is the current status of a DownloadRequest.", "properties": {"downloadURL": {"description": "DownloadURL contains the pre-signed URL for the target file.", "type": "string"}, "expiration": {"description": "Expiration is when this DownloadRequest expires and can be deleted by the system.", "format": "date-time", "nullable": true, "type": "string"}, "phase": {"description": "Phase is the current state of the DownloadRequest.", "enum": ["New", "Processed"], "type": "string"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/eniconfig-crd-v1alpha1.json b/schemas/v1.22.0/eniconfig-crd-v1alpha1.json deleted file mode 100644 index e94e2e3e..00000000 --- a/schemas/v1.22.0/eniconfig-crd-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "object", "x-kubernetes-preserve-unknown-fields": true} \ No newline at end of file diff --git a/schemas/v1.22.0/externalsecret-external-secrets-v1alpha1.json b/schemas/v1.22.0/externalsecret-external-secrets-v1alpha1.json deleted file mode 100644 index c6d2b5ef..00000000 --- a/schemas/v1.22.0/externalsecret-external-secrets-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "ExternalSecret is the Schema for the external-secrets API.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "ExternalSecretSpec defines the desired state of ExternalSecret.", "properties": {"data": {"description": "Data defines the connection between the Kubernetes Secret keys and the Provider data", "items": {"description": "ExternalSecretData defines the connection between the Kubernetes Secret key (spec.data.) and the Provider data.", "properties": {"remoteRef": {"description": "ExternalSecretDataRemoteRef defines Provider data location.", "properties": {"conversionStrategy": {"default": "Default", "description": "Used to define a conversion Strategy", "type": "string"}, "key": {"description": "Key is the key used in the Provider, mandatory", "type": "string"}, "property": {"description": "Used to select a specific property of the Provider value (if a map), if supported", "type": "string"}, "version": {"description": "Used to select a specific version of the Provider value, if supported", "type": "string"}}, "required": ["key"], "type": "object"}, "secretKey": {"type": "string"}}, "required": ["remoteRef", "secretKey"], "type": "object"}, "type": "array"}, "dataFrom": {"description": "DataFrom is used to fetch all properties from a specific Provider data If multiple entries are specified, the Secret keys are merged in the specified order", "items": {"description": "ExternalSecretDataRemoteRef defines Provider data location.", "properties": {"conversionStrategy": {"default": "Default", "description": "Used to define a conversion Strategy", "type": "string"}, "key": {"description": "Key is the key used in the Provider, mandatory", "type": "string"}, "property": {"description": "Used to select a specific property of the Provider value (if a map), if supported", "type": "string"}, "version": {"description": "Used to select a specific version of the Provider value, if supported", "type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}, "refreshInterval": {"default": "1h", "description": "RefreshInterval is the amount of time before the values are read again from the SecretStore provider Valid time units are \"ns\", \"us\" (or \"\u00b5s\"), \"ms\", \"s\", \"m\", \"h\" May be set to zero to fetch and create it once. Defaults to 1h.", "type": "string"}, "secretStoreRef": {"description": "SecretStoreRef defines which SecretStore to fetch the ExternalSecret data.", "properties": {"kind": {"description": "Kind of the SecretStore resource (SecretStore or ClusterSecretStore) Defaults to `SecretStore`", "type": "string"}, "name": {"description": "Name of the SecretStore resource", "type": "string"}}, "required": ["name"], "type": "object"}, "target": {"description": "ExternalSecretTarget defines the Kubernetes Secret to be created There can be only one target per ExternalSecret.", "properties": {"creationPolicy": {"default": "Owner", "description": "CreationPolicy defines rules on how to create the resulting Secret Defaults to 'Owner'", "type": "string"}, "immutable": {"description": "Immutable defines if the final secret will be immutable", "type": "boolean"}, "name": {"description": "Name defines the name of the Secret resource to be managed This field is immutable Defaults to the .metadata.name of the ExternalSecret resource", "type": "string"}, "template": {"description": "Template defines a blueprint for the created Secret resource.", "properties": {"data": {"additionalProperties": {"type": "string"}, "type": "object"}, "engineVersion": {"default": "v1", "description": "EngineVersion specifies the template engine version that should be used to compile/execute the template specified in .data and .templateFrom[].", "type": "string"}, "metadata": {"description": "ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "templateFrom": {"items": {"maxProperties": 1, "minProperties": 1, "properties": {"configMap": {"properties": {"items": {"items": {"properties": {"key": {"type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "required": ["items", "name"], "type": "object"}, "secret": {"properties": {"items": {"items": {"properties": {"key": {"type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "required": ["items", "name"], "type": "object"}}, "type": "object"}, "type": "array"}, "type": {"type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["secretStoreRef", "target"], "type": "object"}, "status": {"properties": {"conditions": {"items": {"properties": {"lastTransitionTime": {"format": "date-time", "type": "string"}, "message": {"type": "string"}, "reason": {"type": "string"}, "status": {"type": "string"}, "type": {"type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array"}, "refreshTime": {"description": "refreshTime is the time and date the external secret was fetched and the target secret updated", "format": "date-time", "nullable": true, "type": "string"}, "syncedResourceVersion": {"description": "SyncedResourceVersion keeps track of the last synced version", "type": "string"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/externalsecret-external-secrets-v1beta1.json b/schemas/v1.22.0/externalsecret-external-secrets-v1beta1.json deleted file mode 100644 index 201fad51..00000000 --- a/schemas/v1.22.0/externalsecret-external-secrets-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "ExternalSecret is the Schema for the external-secrets API.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "ExternalSecretSpec defines the desired state of ExternalSecret.", "properties": {"data": {"description": "Data defines the connection between the Kubernetes Secret keys and the Provider data", "items": {"description": "ExternalSecretData defines the connection between the Kubernetes Secret key (spec.data.) and the Provider data.", "properties": {"remoteRef": {"description": "ExternalSecretDataRemoteRef defines Provider data location.", "properties": {"conversionStrategy": {"default": "Default", "description": "Used to define a conversion Strategy", "type": "string"}, "decodingStrategy": {"default": "None", "description": "Used to define a decoding Strategy", "type": "string"}, "key": {"description": "Key is the key used in the Provider, mandatory", "type": "string"}, "metadataPolicy": {"description": "Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None", "type": "string"}, "property": {"description": "Used to select a specific property of the Provider value (if a map), if supported", "type": "string"}, "version": {"description": "Used to select a specific version of the Provider value, if supported", "type": "string"}}, "required": ["key"], "type": "object"}, "secretKey": {"type": "string"}}, "required": ["remoteRef", "secretKey"], "type": "object"}, "type": "array"}, "dataFrom": {"description": "DataFrom is used to fetch all properties from a specific Provider data If multiple entries are specified, the Secret keys are merged in the specified order", "items": {"properties": {"extract": {"description": "Used to extract multiple key/value pairs from one secret", "properties": {"conversionStrategy": {"default": "Default", "description": "Used to define a conversion Strategy", "type": "string"}, "decodingStrategy": {"default": "None", "description": "Used to define a decoding Strategy", "type": "string"}, "key": {"description": "Key is the key used in the Provider, mandatory", "type": "string"}, "metadataPolicy": {"description": "Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None", "type": "string"}, "property": {"description": "Used to select a specific property of the Provider value (if a map), if supported", "type": "string"}, "version": {"description": "Used to select a specific version of the Provider value, if supported", "type": "string"}}, "required": ["key"], "type": "object"}, "find": {"description": "Used to find secrets based on tags or regular expressions", "properties": {"conversionStrategy": {"default": "Default", "description": "Used to define a conversion Strategy", "type": "string"}, "decodingStrategy": {"default": "None", "description": "Used to define a decoding Strategy", "type": "string"}, "name": {"description": "Finds secrets based on the name.", "properties": {"regexp": {"description": "Finds secrets base", "type": "string"}}, "type": "object"}, "path": {"description": "A root path to start the find operations.", "type": "string"}, "tags": {"additionalProperties": {"type": "string"}, "description": "Find secrets based on tags.", "type": "object"}}, "type": "object"}, "rewrite": {"description": "Used to rewrite secret Keys after getting them from the secret Provider Multiple Rewrite operations can be provided. They are applied in a layered order (first to last)", "items": {"properties": {"regexp": {"description": "Used to rewrite with regular expressions. The resulting key will be the output of a regexp.ReplaceAll operation.", "properties": {"source": {"description": "Used to define the regular expression of a re.Compiler.", "type": "string"}, "target": {"description": "Used to define the target pattern of a ReplaceAll operation.", "type": "string"}}, "required": ["source", "target"], "type": "object"}}, "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}, "refreshInterval": {"default": "1h", "description": "RefreshInterval is the amount of time before the values are read again from the SecretStore provider Valid time units are \"ns\", \"us\" (or \"\u00b5s\"), \"ms\", \"s\", \"m\", \"h\" May be set to zero to fetch and create it once. Defaults to 1h.", "type": "string"}, "secretStoreRef": {"description": "SecretStoreRef defines which SecretStore to fetch the ExternalSecret data.", "properties": {"kind": {"description": "Kind of the SecretStore resource (SecretStore or ClusterSecretStore) Defaults to `SecretStore`", "type": "string"}, "name": {"description": "Name of the SecretStore resource", "type": "string"}}, "required": ["name"], "type": "object"}, "target": {"default": {"creationPolicy": "Owner", "deletionPolicy": "Retain"}, "description": "ExternalSecretTarget defines the Kubernetes Secret to be created There can be only one target per ExternalSecret.", "properties": {"creationPolicy": {"default": "Owner", "description": "CreationPolicy defines rules on how to create the resulting Secret Defaults to 'Owner'", "enum": ["Owner", "Orphan", "Merge", "None"], "type": "string"}, "deletionPolicy": {"default": "Retain", "description": "DeletionPolicy defines rules on how to delete the resulting Secret Defaults to 'Retain'", "enum": ["Delete", "Merge", "Retain"], "type": "string"}, "immutable": {"description": "Immutable defines if the final secret will be immutable", "type": "boolean"}, "name": {"description": "Name defines the name of the Secret resource to be managed This field is immutable Defaults to the .metadata.name of the ExternalSecret resource", "type": "string"}, "template": {"description": "Template defines a blueprint for the created Secret resource.", "properties": {"data": {"additionalProperties": {"type": "string"}, "type": "object"}, "engineVersion": {"default": "v2", "type": "string"}, "metadata": {"description": "ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "type": "object"}}, "type": "object"}, "templateFrom": {"items": {"maxProperties": 1, "minProperties": 1, "properties": {"configMap": {"properties": {"items": {"items": {"properties": {"key": {"type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "required": ["items", "name"], "type": "object"}, "secret": {"properties": {"items": {"items": {"properties": {"key": {"type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}, "name": {"type": "string"}}, "required": ["items", "name"], "type": "object"}}, "type": "object"}, "type": "array"}, "type": {"type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["secretStoreRef"], "type": "object"}, "status": {"properties": {"conditions": {"items": {"properties": {"lastTransitionTime": {"format": "date-time", "type": "string"}, "message": {"type": "string"}, "reason": {"type": "string"}, "status": {"type": "string"}, "type": {"type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array"}, "refreshTime": {"description": "refreshTime is the time and date the external secret was fetched and the target secret updated", "format": "date-time", "nullable": true, "type": "string"}, "syncedResourceVersion": {"description": "SyncedResourceVersion keeps track of the last synced version", "type": "string"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/externalsecret-kubernetes-client-v1.json b/schemas/v1.22.0/externalsecret-kubernetes-client-v1.json deleted file mode 100644 index e427b855..00000000 --- a/schemas/v1.22.0/externalsecret-kubernetes-client-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"anyOf": [{"required": ["data"]}, {"required": ["dataFrom"]}, {"required": ["dataFromWithOptions"]}], "oneOf": [{"properties": {"backendType": {"enum": ["secretsManager", "systemManager"]}}}, {"properties": {"backendType": {"enum": ["vault"]}}}, {"properties": {"backendType": {"enum": ["azureKeyVault"]}}, "required": ["keyVaultName"]}, {"properties": {"backendType": {"enum": ["gcpSecretsManager"]}}}, {"properties": {"backendType": {"enum": ["alicloudSecretsManager"]}}}, {"properties": {"backendType": {"enum": ["ibmcloudSecretsManager"]}}}, {"properties": {"backendType": {"enum": ["akeyless"]}}}], "properties": {"backendType": {"description": "Determines which backend to use for fetching secrets", "enum": ["secretsManager", "systemManager", "vault", "azureKeyVault", "gcpSecretsManager", "alicloudSecretsManager", "ibmcloudSecretsManager", "akeyless"], "type": "string"}, "controllerId": {"description": "The ID of controller instance that manages this ExternalSecret. This is needed in case there is more than a KES controller instances within the cluster.", "type": "string"}, "data": {"items": {"oneOf": [{"required": ["key", "name"]}, {"required": ["path"]}], "properties": {"isBinary": {"description": "Whether the backend secret shall be treated as binary data represented by a base64-encoded string. You must set this to true for any base64-encoded binary data in the backend - to ensure it is not encoded in base64 again. Default is false.", "type": "boolean"}, "key": {"description": "Secret key in backend", "type": "string"}, "name": {"description": "Name set for this key in the generated secret", "type": "string"}, "path": {"description": "Path from SSM to scrape secrets This will fetch all secrets and use the key from the secret as variable name", "type": "string"}, "property": {"description": "Property to extract if secret in backend is a JSON object", "type": "string"}, "recursive": {"description": "Allow to recurse thru all child keys on a given path, default false", "type": "boolean"}, "secretType": {"description": "Used by: ibmcloudSecretsManager Type of secret - one of username_password, iam_credentials or arbitrary", "type": "string"}, "version": {"description": "Used by: gcpSecretsManager", "type": "string", "x-kubernetes-int-or-string": true}, "versionId": {"description": "Used by: secretsManager", "type": "string"}, "versionStage": {"description": "Used by: alicloudSecretsManager, secretsManager", "type": "string"}}, "type": "object"}, "type": "array"}, "dataFrom": {"items": {"type": "string"}, "type": "array"}, "dataFromWithOptions": {"items": {"properties": {"isBinary": {"description": "Whether the backend secret shall be treated as binary data represented by a base64-encoded string. You must set this to true for any base64-encoded binary data in the backend - to ensure it is not encoded in base64 again. Default is false.", "type": "boolean"}, "key": {"description": "Secret key in backend", "type": "string"}, "versionId": {"description": "Used by: secretsManager", "type": "string"}, "versionStage": {"description": "Used by: alicloudSecretsManager, secretsManager", "type": "string"}}, "required": ["key"], "type": "object"}, "type": "array"}, "keyByName": {"description": "Whether to interpret the key as a secret name (if true) or ID (the default). Used by: ibmcloudSecretsManager", "type": "boolean"}, "keyVaultName": {"description": "Used by: azureKeyVault", "type": "string"}, "kvVersion": {"description": "Vault K/V version either 1 or 2, default = 2", "maximum": 2, "minimum": 1, "type": "integer"}, "projectId": {"description": "Used by: gcpSecretsManager", "type": "string"}, "region": {"description": "Used by: secretsManager, systemManager", "type": "string"}, "roleArn": {"description": "Used by: alicloudSecretsManager, secretsManager, systemManager", "type": "string"}, "template": {"description": "Template which will be deep merged without mutating any existing fields. into generated secret, can be used to set for example annotations or type on the generated secret", "type": "object", "x-kubernetes-preserve-unknown-fields": true}, "type": {"description": "DEPRECATED: Use spec.template.type", "type": "string"}, "vaultMountPoint": {"description": "Used by: vault", "type": "string"}, "vaultRole": {"description": "Used by: vault", "type": "string"}}, "type": "object"}, "status": {"properties": {"lastSync": {"type": "string"}, "observedGeneration": {"type": "number"}, "status": {"type": "string"}}, "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/gcpchaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/gcpchaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index 8834b06a..00000000 --- a/schemas/v1.22.0/gcpchaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "description": "GCPChaos is the Schema for the gcpchaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "GCPChaosSpec is the content of the specification for a GCPChaos", - "properties": { - "action": { - "description": "Action defines the specific gcp chaos action. Supported action: node-stop / node-reset / disk-loss Default action: node-stop", - "enum": [ - "node-stop", - "node-reset", - "disk-loss" - ], - "type": "string" - }, - "deviceNames": { - "description": "The device name of disks to detach. Needed in disk-loss.", - "items": { - "type": "string" - }, - "type": "array" - }, - "duration": { - "description": "Duration represents the duration of the chaos action.", - "type": "string" - }, - "instance": { - "description": "Instance defines the name of the instance", - "type": "string" - }, - "project": { - "description": "Project defines the ID of gcp project.", - "type": "string" - }, - "secretName": { - "description": "SecretName defines the name of kubernetes secret. It is used for GCP credentials.", - "type": "string" - }, - "zone": { - "description": "Zone defines the zone of gcp project.", - "type": "string" - } - }, - "required": [ - "action", - "instance", - "project", - "zone" - ], - "type": "object" - }, - "status": { - "description": "GCPChaosStatus represents the status of a GCPChaos", - "properties": { - "attachedDiskStrings": { - "description": "The attached disk info strings. Needed in disk-loss.", - "items": { - "type": "string" - }, - "type": "array" - }, - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/healthscope-core-v1alpha2.json b/schemas/v1.22.0/healthscope-core-v1alpha2.json deleted file mode 100644 index cc9a9dcb..00000000 --- a/schemas/v1.22.0/healthscope-core-v1alpha2.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "A HealthScope determines an aggregate health status based of the health of components.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "A HealthScopeSpec defines the desired state of a HealthScope.", "properties": {"probe-interval": {"description": "ProbeInterval is the amount of time in seconds between probing tries.", "format": "int32", "type": "integer"}, "probe-timeout": {"description": "ProbeTimeout is the amount of time in seconds to wait when receiving a response before marked failure.", "format": "int32", "type": "integer"}, "workloadRefs": {"description": "WorkloadReferences to the workloads that are in this scope.", "items": {"description": "A TypedReference refers to an object by Name, Kind, and APIVersion. It is commonly used to reference cluster-scoped objects or objects where the namespace is already known.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}, "type": "array"}}, "required": ["workloadRefs"], "type": "object"}, "status": {"description": "A HealthScopeStatus represents the observed state of a HealthScope.", "properties": {"conditions": {"description": "Conditions of the resource.", "items": {"description": "A Condition that may apply to a resource.", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the last time this condition transitioned from one status to another.", "format": "date-time", "type": "string"}, "message": {"description": "A Message containing details about this condition's last transition from one status to another, if any.", "type": "string"}, "reason": {"description": "A Reason for this condition's last transition from one status to another.", "type": "string"}, "status": {"description": "Status of this condition; is it currently True, False, or Unknown?", "type": "string"}, "type": {"description": "Type of this condition. At most one of each condition type may apply to a resource at any point in time.", "type": "string"}}, "required": ["lastTransitionTime", "reason", "status", "type"], "type": "object"}, "type": "array"}, "healthConditions": {"description": "WorkloadHealthConditions represents health condition of workloads in the scope", "items": {"description": "WorkloadHealthCondition represents informative health condition.", "properties": {"componentName": {"description": "ComponentName represents the component name if target is a workload", "type": "string"}, "diagnosis": {"type": "string"}, "healthStatus": {"description": "HealthStatus represents health status strings.", "type": "string"}, "targetWorkload": {"description": "A TypedReference refers to an object by Name, Kind, and APIVersion. It is commonly used to reference cluster-scoped objects or objects where the namespace is already known.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}, "workloadStatus": {"description": "WorkloadStatus represents status of workloads whose HealthStatus is UNKNOWN.", "type": "string"}}, "required": ["healthStatus"], "type": "object"}, "type": "array"}, "scopeHealthCondition": {"description": "ScopeHealthCondition represents health condition summary of the scope", "properties": {"healthStatus": {"description": "HealthStatus represents health status strings.", "type": "string"}, "healthyWorkloads": {"format": "int64", "type": "integer"}, "total": {"format": "int64", "type": "integer"}, "unhealthyWorkloads": {"format": "int64", "type": "integer"}, "unknownWorkloads": {"format": "int64", "type": "integer"}}, "required": ["healthStatus"], "type": "object"}}, "required": ["scopeHealthCondition"], "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/httpchaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/httpchaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index f579194b..00000000 --- a/schemas/v1.22.0/httpchaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,385 +0,0 @@ -{ - "description": "HTTPChaos is the Schema for the HTTPchaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "properties": { - "abort": { - "description": "Abort is a rule to abort a http session.", - "type": "boolean" - }, - "code": { - "description": "Code is a rule to select target by http status code in response.", - "format": "int32", - "type": "integer" - }, - "delay": { - "description": "Delay represents the delay of the target request/response. A duration string is a possibly unsigned sequence of decimal numbers, each with optional fraction and a unit suffix, such as \"300ms\", \"2h45m\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\".", - "type": "string" - }, - "duration": { - "description": "Duration represents the duration of the chaos action.", - "type": "string" - }, - "method": { - "description": "Method is a rule to select target by http method in request.", - "type": "string" - }, - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "patch": { - "description": "Patch is a rule to patch some contents in target.", - "properties": { - "body": { - "description": "Body is a rule to patch message body of target.", - "properties": { - "type": { - "description": "Type represents the patch type, only support `JSON` as [merge patch json](https://tools.ietf.org/html/rfc7396) currently.", - "type": "string" - }, - "value": { - "description": "Value is the patch contents.", - "type": "string" - } - }, - "required": [ - "type", - "value" - ], - "type": "object" - }, - "headers": { - "description": "Headers is a rule to append http headers of target. For example: `[[\"Set-Cookie\", \"\u003cone cookie\u003e\"], [\"Set-Cookie\", \"\u003canother cookie\u003e\"]]`.", - "items": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": "array" - }, - "queries": { - "description": "Queries is a rule to append uri queries of target(Request only). For example: `[[\"foo\", \"bar\"], [\"foo\", \"unknown\"]]`.", - "items": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": "array" - } - }, - "type": "object" - }, - "path": { - "description": "Path is a rule to select target by uri path in http request.", - "type": "string" - }, - "port": { - "description": "Port represents the target port to be proxy of.", - "format": "int32", - "type": "integer" - }, - "replace": { - "description": "Replace is a rule to replace some contents in target.", - "properties": { - "body": { - "description": "Body is a rule to replace http message body in target.", - "format": "byte", - "type": "string" - }, - "code": { - "description": "Code is a rule to replace http status code in response.", - "format": "int32", - "type": "integer" - }, - "headers": { - "additionalProperties": { - "type": "string" - }, - "description": "Headers is a rule to replace http headers of target. The key-value pairs represent header name and header value pairs.", - "type": "object" - }, - "method": { - "description": "Method is a rule to replace http method in request.", - "type": "string" - }, - "path": { - "description": "Path is rule to to replace uri path in http request.", - "type": "string" - }, - "queries": { - "additionalProperties": { - "type": "string" - }, - "description": "Queries is a rule to replace uri queries in http request. For example, with value `{ \"foo\": \"unknown\" }`, the `/?foo=bar` will be altered to `/?foo=unknown`,", - "type": "object" - } - }, - "type": "object" - }, - "request_headers": { - "additionalProperties": { - "type": "string" - }, - "description": "RequestHeaders is a rule to select target by http headers in request. The key-value pairs represent header name and header value pairs.", - "type": "object" - }, - "response_headers": { - "additionalProperties": { - "type": "string" - }, - "description": "ResponseHeaders is a rule to select target by http headers in response. The key-value pairs represent header name and header value pairs.", - "type": "object" - }, - "selector": { - "description": "Selector is used to select pods that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "nodeSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select nodes. Selector which must match a node's labels, and objects must belong to these selected nodes.", - "type": "object" - }, - "nodes": { - "description": "Nodes is a set of node name and objects must belong to these nodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "podPhaseSelectors": { - "description": "PodPhaseSelectors is a set of condition of a pod at the current time. supported value: Pending / Running / Succeeded / Failed / Unknown", - "items": { - "type": "string" - }, - "type": "array" - }, - "pods": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Pods is a map of string keys and a set values that used to select pods. The key defines the namespace which pods belong, and the each values is a set of pod names.", - "type": "object" - } - }, - "type": "object" - }, - "target": { - "description": "Target is the object to be selected and injected.", - "enum": [ - "Request", - "Response" - ], - "type": "string" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of pods to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - } - }, - "required": [ - "mode", - "selector", - "target" - ], - "type": "object" - }, - "status": { - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - }, - "instances": { - "additionalProperties": { - "format": "int64", - "type": "integer" - }, - "description": "Instances always specifies podhttpchaos generation or empty", - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/ingressclassparams-elbv2-v1beta1.json b/schemas/v1.22.0/ingressclassparams-elbv2-v1beta1.json deleted file mode 100644 index 7484a76b..00000000 --- a/schemas/v1.22.0/ingressclassparams-elbv2-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "IngressClassParams is the Schema for the IngressClassParams API", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "IngressClassParamsSpec defines the desired state of IngressClassParams", "properties": {"group": {"description": "Group defines the IngressGroup for all Ingresses that belong to IngressClass with this IngressClassParams.", "properties": {"name": {"description": "Name is the name of IngressGroup.", "type": "string"}}, "required": ["name"], "type": "object"}, "ipAddressType": {"description": "IPAddressType defines the ip address type for all Ingresses that belong to IngressClass with this IngressClassParams.", "enum": ["ipv4", "dualstack"], "type": "string"}, "loadBalancerAttributes": {"description": "LoadBalancerAttributes define the custom attributes to LoadBalancers for all Ingress that that belong to IngressClass with this IngressClassParams.", "items": {"description": "Attributes defines custom attributes on resources.", "properties": {"key": {"description": "The key of the attribute.", "type": "string"}, "value": {"description": "The value of the attribute.", "type": "string"}}, "required": ["key", "value"], "type": "object"}, "type": "array"}, "namespaceSelector": {"description": "NamespaceSelector restrict the namespaces of Ingresses that are allowed to specify the IngressClass with this IngressClassParams. * if absent or present but empty, it selects all namespaces.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "scheme": {"description": "Scheme defines the scheme for all Ingresses that belong to IngressClass with this IngressClassParams.", "enum": ["internal", "internet-facing"], "type": "string"}, "tags": {"description": "Tags defines list of Tags on AWS resources provisioned for Ingresses that belong to IngressClass with this IngressClassParams.", "items": {"description": "Tag defines a AWS Tag on resources.", "properties": {"key": {"description": "The key of the tag.", "type": "string"}, "value": {"description": "The value of the tag.", "type": "string"}}, "required": ["key", "value"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/iochaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/iochaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index 43b2de7f..00000000 --- a/schemas/v1.22.0/iochaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,425 +0,0 @@ -{ - "description": "IOChaos is the Schema for the iochaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "IOChaosSpec defines the desired state of IOChaos", - "properties": { - "action": { - "description": "Action defines the specific pod chaos action. Supported action: latency / fault / attrOverride / mistake", - "enum": [ - "latency", - "fault", - "attrOverride", - "mistake" - ], - "type": "string" - }, - "attr": { - "description": "Attr defines the overrided attribution", - "properties": { - "atime": { - "description": "Timespec represents a time", - "properties": { - "nsec": { - "format": "int64", - "type": "integer" - }, - "sec": { - "format": "int64", - "type": "integer" - } - }, - "required": [ - "nsec", - "sec" - ], - "type": "object" - }, - "blocks": { - "format": "int64", - "type": "integer" - }, - "ctime": { - "description": "Timespec represents a time", - "properties": { - "nsec": { - "format": "int64", - "type": "integer" - }, - "sec": { - "format": "int64", - "type": "integer" - } - }, - "required": [ - "nsec", - "sec" - ], - "type": "object" - }, - "gid": { - "format": "int32", - "type": "integer" - }, - "ino": { - "format": "int64", - "type": "integer" - }, - "kind": { - "description": "FileType represents type of file", - "type": "string" - }, - "mtime": { - "description": "Timespec represents a time", - "properties": { - "nsec": { - "format": "int64", - "type": "integer" - }, - "sec": { - "format": "int64", - "type": "integer" - } - }, - "required": [ - "nsec", - "sec" - ], - "type": "object" - }, - "nlink": { - "format": "int32", - "type": "integer" - }, - "perm": { - "type": "integer" - }, - "rdev": { - "format": "int32", - "type": "integer" - }, - "size": { - "format": "int64", - "type": "integer" - }, - "uid": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "containerNames": { - "description": "ContainerNames indicates list of the name of affected container. If not set, the first container will be injected", - "items": { - "type": "string" - }, - "type": "array" - }, - "delay": { - "description": "Delay defines the value of I/O chaos action delay. A delay string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as \"300ms\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\".", - "type": "string" - }, - "duration": { - "description": "Duration represents the duration of the chaos action. It is required when the action is `PodFailureAction`. A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as \"300ms\", \"-1.5h\" or \"2h45m\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\".", - "type": "string" - }, - "errno": { - "description": "Errno defines the error code that returned by I/O action. refer to: https://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Errors/unix_system_errors.html", - "format": "int32", - "type": "integer" - }, - "methods": { - "description": "Methods defines the I/O methods for injecting I/O chaos action. default: all I/O methods.", - "items": { - "type": "string" - }, - "type": "array" - }, - "mistake": { - "description": "Mistake defines what types of incorrectness are injected to IO operations", - "properties": { - "filling": { - "description": "Filling determines what is filled in the mistake data.", - "enum": [ - "zero", - "random" - ], - "type": "string" - }, - "maxLength": { - "description": "Max length of each wrong data segment in bytes", - "format": "int64", - "minimum": 1, - "type": "integer" - }, - "maxOccurrences": { - "description": "There will be [1, MaxOccurrences] segments of wrong data.", - "format": "int64", - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "path": { - "description": "Path defines the path of files for injecting I/O chaos action.", - "type": "string" - }, - "percent": { - "default": 100, - "description": "Percent defines the percentage of injection errors and provides a number from 0-100. default: 100.", - "type": "integer" - }, - "selector": { - "description": "Selector is used to select pods that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "nodeSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select nodes. Selector which must match a node's labels, and objects must belong to these selected nodes.", - "type": "object" - }, - "nodes": { - "description": "Nodes is a set of node name and objects must belong to these nodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "podPhaseSelectors": { - "description": "PodPhaseSelectors is a set of condition of a pod at the current time. supported value: Pending / Running / Succeeded / Failed / Unknown", - "items": { - "type": "string" - }, - "type": "array" - }, - "pods": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Pods is a map of string keys and a set values that used to select pods. The key defines the namespace which pods belong, and the each values is a set of pod names.", - "type": "object" - } - }, - "type": "object" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of pods to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - }, - "volumePath": { - "description": "VolumePath represents the mount path of injected volume", - "type": "string" - } - }, - "required": [ - "action", - "mode", - "selector", - "volumePath" - ], - "type": "object" - }, - "status": { - "description": "IOChaosStatus defines the observed state of IOChaos", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - }, - "instances": { - "additionalProperties": { - "format": "int64", - "type": "integer" - }, - "description": "Instances always specifies podiochaos generation or empty", - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/issuer-cert-manager-v1.json b/schemas/v1.22.0/issuer-cert-manager-v1.json deleted file mode 100644 index 5f4680b6..00000000 --- a/schemas/v1.22.0/issuer-cert-manager-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "An Issuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is scoped to a single namespace and can therefore only be referenced by resources within the same namespace.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "Desired state of the Issuer resource.", "properties": {"acme": {"description": "ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.", "properties": {"disableAccountKeyGeneration": {"description": "Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.", "type": "boolean"}, "email": {"description": "Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.", "type": "string"}, "enableDurationFeature": {"description": "Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.", "type": "boolean"}, "externalAccountBinding": {"description": "ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.", "properties": {"keyAlgorithm": {"description": "Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.", "enum": ["HS256", "HS384", "HS512"], "type": "string"}, "keyID": {"description": "keyID is the ID of the CA key that the External Account is bound to.", "type": "string"}, "keySecretRef": {"description": "keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["keyID", "keySecretRef"], "type": "object"}, "preferredChain": {"description": "PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: \"DST Root CA X3\" or \"ISRG Root X1\" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN", "maxLength": 64, "type": "string"}, "privateKeySecretRef": {"description": "PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "server": {"description": "Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\". Only ACME v2 endpoints (i.e. RFC 8555) are supported.", "type": "string"}, "skipTLSVerify": {"description": "Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.", "type": "boolean"}, "solvers": {"description": "Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/", "items": {"description": "An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided.", "properties": {"dns01": {"description": "Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.", "properties": {"acmeDNS": {"description": "Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.", "properties": {"accountSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "host": {"type": "string"}}, "required": ["accountSecretRef", "host"], "type": "object"}, "akamai": {"description": "Use the Akamai DNS zone management API to manage DNS01 challenge records.", "properties": {"accessTokenSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "clientSecretSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "clientTokenSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "serviceConsumerDomain": {"type": "string"}}, "required": ["accessTokenSecretRef", "clientSecretSecretRef", "clientTokenSecretRef", "serviceConsumerDomain"], "type": "object"}, "azureDNS": {"description": "Use the Microsoft Azure DNS API to manage DNS01 challenge records.", "properties": {"clientID": {"description": "if both this and ClientSecret are left unset MSI will be used", "type": "string"}, "clientSecretSecretRef": {"description": "if both this and ClientID are left unset MSI will be used", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "environment": {"description": "name of the Azure environment (default AzurePublicCloud)", "enum": ["AzurePublicCloud", "AzureChinaCloud", "AzureGermanCloud", "AzureUSGovernmentCloud"], "type": "string"}, "hostedZoneName": {"description": "name of the DNS zone that should be used", "type": "string"}, "managedIdentity": {"description": "managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID", "properties": {"clientID": {"description": "client ID of the managed identity, can not be used at the same time as resourceID", "type": "string"}, "resourceID": {"description": "resource ID of the managed identity, can not be used at the same time as clientID", "type": "string"}}, "type": "object"}, "resourceGroupName": {"description": "resource group the DNS zone is located in", "type": "string"}, "subscriptionID": {"description": "ID of the Azure subscription", "type": "string"}, "tenantID": {"description": "when specifying ClientID and ClientSecret then this field is also needed", "type": "string"}}, "required": ["resourceGroupName", "subscriptionID"], "type": "object"}, "cloudDNS": {"description": "Use the Google Cloud DNS API to manage DNS01 challenge records.", "properties": {"hostedZoneName": {"description": "HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.", "type": "string"}, "project": {"type": "string"}, "serviceAccountSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["project"], "type": "object"}, "cloudflare": {"description": "Use the Cloudflare API to manage DNS01 challenge records.", "properties": {"apiKeySecretRef": {"description": "API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "apiTokenSecretRef": {"description": "API token used to authenticate with Cloudflare.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "email": {"description": "Email of the account, only required when using API key based authentication.", "type": "string"}}, "type": "object"}, "cnameStrategy": {"description": "CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.", "enum": ["None", "Follow"], "type": "string"}, "digitalocean": {"description": "Use the DigitalOcean DNS API to manage DNS01 challenge records.", "properties": {"tokenSecretRef": {"description": "A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["tokenSecretRef"], "type": "object"}, "rfc2136": {"description": "Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.", "properties": {"nameserver": {"description": "The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1])\u00a0; port is optional. This field is required.", "type": "string"}, "tsigAlgorithm": {"description": "The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.", "type": "string"}, "tsigKeyName": {"description": "The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.", "type": "string"}, "tsigSecretSecretRef": {"description": "The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["nameserver"], "type": "object"}, "route53": {"description": "Use the AWS Route53 API to manage DNS01 challenge records.", "properties": {"accessKeyID": {"description": "The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials", "type": "string"}, "hostedZoneID": {"description": "If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.", "type": "string"}, "region": {"description": "Always set the region when using AccessKeyID and SecretAccessKey", "type": "string"}, "role": {"description": "Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata", "type": "string"}, "secretAccessKeySecretRef": {"description": "The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["region"], "type": "object"}, "webhook": {"description": "Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.", "properties": {"config": {"description": "Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.", "x-kubernetes-preserve-unknown-fields": true}, "groupName": {"description": "The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.", "type": "string"}, "solverName": {"description": "The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.", "type": "string"}}, "required": ["groupName", "solverName"], "type": "object"}}, "type": "object"}, "http01": {"description": "Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.", "properties": {"gatewayHTTPRoute": {"description": "The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.", "properties": {"labels": {"additionalProperties": {"type": "string"}, "description": "Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.", "type": "object"}, "parentRefs": {"description": "When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways", "items": {"description": "ParentRef identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \"Core\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid. \n References to objects with invalid Group and Kind are not valid, and must be rejected by the implementation, with appropriate Conditions set on the containing object.", "properties": {"group": {"default": "gateway.networking.k8s.io", "description": "Group is the group of the referent. \n Support: Core", "maxLength": 253, "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", "type": "string"}, "kind": {"default": "Gateway", "description": "Kind is kind of the referent. \n Support: Core (Gateway) Support: Custom (Other Resources)", "maxLength": 63, "minLength": 1, "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", "type": "string"}, "name": {"description": "Name is the name of the referent. \n Support: Core", "maxLength": 253, "minLength": 1, "type": "string"}, "namespace": {"description": "Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \n Support: Core", "maxLength": 63, "minLength": 1, "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", "type": "string"}, "sectionName": {"description": "SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \n * Gateway: Listener Name \n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \n Support: Core", "maxLength": 253, "minLength": 1, "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", "type": "string"}}, "required": ["name"], "type": "object"}, "type": "array"}, "serviceType": {"description": "Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.", "type": "string"}}, "type": "object"}, "ingress": {"description": "The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.", "properties": {"class": {"description": "The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.", "type": "string"}, "ingressTemplate": {"description": "Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.", "properties": {"metadata": {"description": "ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "description": "Annotations that should be added to the created ACME HTTP01 solver ingress.", "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "description": "Labels that should be added to the created ACME HTTP01 solver ingress.", "type": "object"}}, "type": "object"}}, "type": "object"}, "name": {"description": "The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.", "type": "string"}, "podTemplate": {"description": "Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.", "properties": {"metadata": {"description": "ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.", "properties": {"annotations": {"additionalProperties": {"type": "string"}, "description": "Annotations that should be added to the create ACME HTTP01 solver pods.", "type": "object"}, "labels": {"additionalProperties": {"type": "string"}, "description": "Labels that should be added to the created ACME HTTP01 solver pods.", "type": "object"}}, "type": "object"}, "spec": {"description": "PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.", "properties": {"affinity": {"description": "If specified, the pod's scheduling constraints", "properties": {"nodeAffinity": {"description": "Describes node affinity scheduling rules for the pod.", "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": {"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": {"description": "A node selector term, associated with the corresponding weight.", "properties": {"matchExpressions": {"description": "A list of node selector requirements by node's labels.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "weight": {"description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["preference", "weight"], "type": "object"}, "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 an update), the system may or may not try to eventually evict the pod from its node.", "properties": {"nodeSelectorTerms": {"description": "Required. A list of node selector terms. The terms are ORed.", "items": {"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": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}}, "required": ["nodeSelectorTerms"], "type": "object"}}, "type": "object"}, "podAffinity": {"description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}, "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)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "nodeSelector": {"additionalProperties": {"type": "string"}, "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", "type": "object"}, "priorityClassName": {"description": "If specified, the pod's priorityClassName.", "type": "string"}, "serviceAccountName": {"description": "If specified, the pod's service account", "type": "string"}, "tolerations": {"description": "If specified, the pod's tolerations.", "items": {"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"}, "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"}, "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"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "serviceType": {"description": "Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.", "type": "string"}}, "type": "object"}}, "type": "object"}, "selector": {"description": "Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.", "properties": {"dnsNames": {"description": "List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.", "items": {"type": "string"}, "type": "array"}, "dnsZones": {"description": "List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.", "items": {"type": "string"}, "type": "array"}, "matchLabels": {"additionalProperties": {"type": "string"}, "description": "A label selector that is used to refine the set of certificate's that this challenge solver will apply to.", "type": "object"}}, "type": "object"}}, "type": "object"}, "type": "array"}}, "required": ["privateKeySecretRef", "server"], "type": "object"}, "ca": {"description": "CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.", "properties": {"crlDistributionPoints": {"description": "The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.", "items": {"type": "string"}, "type": "array"}, "ocspServers": {"description": "The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".", "items": {"type": "string"}, "type": "array"}, "secretName": {"description": "SecretName is the name of the secret used to sign Certificates issued by this Issuer.", "type": "string"}}, "required": ["secretName"], "type": "object"}, "selfSigned": {"description": "SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.", "properties": {"crlDistributionPoints": {"description": "The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.", "items": {"type": "string"}, "type": "array"}}, "type": "object"}, "vault": {"description": "Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.", "properties": {"auth": {"description": "Auth configures how cert-manager authenticates with the Vault server.", "properties": {"appRole": {"description": "AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.", "properties": {"path": {"description": "Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"", "type": "string"}, "roleId": {"description": "RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.", "type": "string"}, "secretRef": {"description": "Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["path", "roleId", "secretRef"], "type": "object"}, "kubernetes": {"description": "Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.", "properties": {"mountPath": {"description": "The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value \"/v1/auth/kubernetes\" will be used.", "type": "string"}, "role": {"description": "A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.", "type": "string"}, "secretRef": {"description": "The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "required": ["role", "secretRef"], "type": "object"}, "tokenSecretRef": {"description": "TokenSecretRef authenticates with Vault by presenting a token.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}}, "type": "object"}, "caBundle": {"description": "PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.", "format": "byte", "type": "string"}, "namespace": {"description": "Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces", "type": "string"}, "path": {"description": "Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".", "type": "string"}, "server": {"description": "Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".", "type": "string"}}, "required": ["auth", "path", "server"], "type": "object"}, "venafi": {"description": "Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.", "properties": {"cloud": {"description": "Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.", "properties": {"apiTokenSecretRef": {"description": "APITokenSecretRef is a secret key selector for the Venafi Cloud API token.", "properties": {"key": {"description": "The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.", "type": "string"}, "name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "url": {"description": "URL is the base URL for Venafi Cloud. Defaults to \"https://api.venafi.cloud/v1\".", "type": "string"}}, "required": ["apiTokenSecretRef"], "type": "object"}, "tpp": {"description": "TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.", "properties": {"caBundle": {"description": "CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.", "format": "byte", "type": "string"}, "credentialsRef": {"description": "CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.", "properties": {"name": {"description": "Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "required": ["name"], "type": "object"}, "url": {"description": "URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".", "type": "string"}}, "required": ["credentialsRef", "url"], "type": "object"}, "zone": {"description": "Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.", "type": "string"}}, "required": ["zone"], "type": "object"}}, "type": "object"}, "status": {"description": "Status of the Issuer. This is set and managed automatically.", "properties": {"acme": {"description": "ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.", "properties": {"lastRegisteredEmail": {"description": "LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the Issuer", "type": "string"}, "uri": {"description": "URI is the unique account identifier, which can also be used to retrieve account details from the CA", "type": "string"}}, "type": "object"}, "conditions": {"description": "List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.", "items": {"description": "IssuerCondition contains condition information for an Issuer.", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the timestamp corresponding to the last status change of this condition.", "format": "date-time", "type": "string"}, "message": {"description": "Message is a human readable description of the details of the last transition, complementing reason.", "type": "string"}, "observedGeneration": {"description": "If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.", "format": "int64", "type": "integer"}, "reason": {"description": "Reason is a brief machine readable explanation for the condition's last transition.", "type": "string"}, "status": {"description": "Status of the condition, one of (`True`, `False`, `Unknown`).", "enum": ["True", "False", "Unknown"], "type": "string"}, "type": {"description": "Type of the condition, known values are (`Ready`).", "type": "string"}}, "required": ["status", "type"], "type": "object"}, "type": "array", "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map"}}, "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/jvmchaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/jvmchaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index c40cd28e..00000000 --- a/schemas/v1.22.0/jvmchaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,326 +0,0 @@ -{ - "description": "JVMChaos is the Schema for the jvmchaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "JVMChaosSpec defines the desired state of JVMChaos", - "properties": { - "action": { - "description": "Action defines the specific jvm chaos action. Supported action: latency;return;exception;stress;gc;ruleData", - "enum": [ - "latency", - "return", - "exception", - "stress", - "gc", - "ruleData", - "mysql" - ], - "type": "string" - }, - "class": { - "description": "Java class", - "type": "string" - }, - "containerNames": { - "description": "ContainerNames indicates list of the name of affected container. If not set, the first container will be injected", - "items": { - "type": "string" - }, - "type": "array" - }, - "cpuCount": { - "description": "the CPU core number needs to use, only set it when action is stress", - "type": "integer" - }, - "database": { - "description": "the match database default value is \"\", means match all database", - "type": "string" - }, - "duration": { - "description": "Duration represents the duration of the chaos action", - "type": "string" - }, - "exception": { - "description": "the exception which needs to throw for action `exception` or the exception message needs to throw in action `mysql`", - "type": "string" - }, - "latency": { - "description": "the latency duration for action 'latency', unit ms or the latency duration in action `mysql`", - "type": "integer" - }, - "memType": { - "description": "the memory type needs to locate, only set it when action is stress, the value can be 'stack' or 'heap'", - "type": "string" - }, - "method": { - "description": "the method in Java class", - "type": "string" - }, - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "mysqlConnectorVersion": { - "description": "the version of mysql-connector-java, only support 5.X.X(set to \"5\") and 8.X.X(set to \"8\") now", - "type": "string" - }, - "name": { - "description": "byteman rule name, should be unique, and will generate one if not set", - "type": "string" - }, - "pid": { - "description": "the pid of Java process which needs to attach", - "type": "integer" - }, - "port": { - "description": "the port of agent server, default 9277", - "format": "int32", - "type": "integer" - }, - "ruleData": { - "description": "the byteman rule's data for action 'ruleData'", - "type": "string" - }, - "selector": { - "description": "Selector is used to select pods that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "nodeSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select nodes. Selector which must match a node's labels, and objects must belong to these selected nodes.", - "type": "object" - }, - "nodes": { - "description": "Nodes is a set of node name and objects must belong to these nodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "podPhaseSelectors": { - "description": "PodPhaseSelectors is a set of condition of a pod at the current time. supported value: Pending / Running / Succeeded / Failed / Unknown", - "items": { - "type": "string" - }, - "type": "array" - }, - "pods": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Pods is a map of string keys and a set values that used to select pods. The key defines the namespace which pods belong, and the each values is a set of pod names.", - "type": "object" - } - }, - "type": "object" - }, - "sqlType": { - "description": "the match sql type default value is \"\", means match all SQL type. The value can be 'select', 'insert', 'update', 'delete', 'replace'.", - "type": "string" - }, - "table": { - "description": "the match table default value is \"\", means match all table", - "type": "string" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of pods to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - } - }, - "required": [ - "action", - "mode", - "selector" - ], - "type": "object" - }, - "status": { - "description": "JVMChaosStatus defines the observed state of JVMChaos", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-allowed-repos-constraints-v1alpha1.json b/schemas/v1.22.0/k8s-allowed-repos-constraints-v1alpha1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-allowed-repos-constraints-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-allowed-repos-constraints-v1beta1.json b/schemas/v1.22.0/k8s-allowed-repos-constraints-v1beta1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-allowed-repos-constraints-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-deprecated-version-kind-constraints-v1alpha1.json b/schemas/v1.22.0/k8s-deprecated-version-kind-constraints-v1alpha1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-deprecated-version-kind-constraints-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-deprecated-version-kind-constraints-v1beta1.json b/schemas/v1.22.0/k8s-deprecated-version-kind-constraints-v1beta1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-deprecated-version-kind-constraints-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-disallow-mount-socket-constraints-v1alpha1.json b/schemas/v1.22.0/k8s-disallow-mount-socket-constraints-v1alpha1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-disallow-mount-socket-constraints-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-disallow-mount-socket-constraints-v1beta1.json b/schemas/v1.22.0/k8s-disallow-mount-socket-constraints-v1beta1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-disallow-mount-socket-constraints-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-minimum-starting-deadline-constraints-v1alpha1.json b/schemas/v1.22.0/k8s-minimum-starting-deadline-constraints-v1alpha1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-minimum-starting-deadline-constraints-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-minimum-starting-deadline-constraints-v1beta1.json b/schemas/v1.22.0/k8s-minimum-starting-deadline-constraints-v1beta1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-minimum-starting-deadline-constraints-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-required-annotations-constraints-v1alpha1.json b/schemas/v1.22.0/k8s-required-annotations-constraints-v1alpha1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-required-annotations-constraints-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8s-required-annotations-constraints-v1beta1.json b/schemas/v1.22.0/k8s-required-annotations-constraints-v1beta1.json deleted file mode 100644 index 0c165d56..00000000 --- a/schemas/v1.22.0/k8s-required-annotations-constraints-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8sbannedimagetags-constraints-v1alpha1.json b/schemas/v1.22.0/k8sbannedimagetags-constraints-v1alpha1.json deleted file mode 100644 index 78c51b54..00000000 --- a/schemas/v1.22.0/k8sbannedimagetags-constraints-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}, "parameters": {"properties": {"tags": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8sbannedimagetags-constraints-v1beta1.json b/schemas/v1.22.0/k8sbannedimagetags-constraints-v1beta1.json deleted file mode 100644 index 78c51b54..00000000 --- a/schemas/v1.22.0/k8sbannedimagetags-constraints-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}, "parameters": {"properties": {"tags": {"items": {"type": "string"}, "type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8sminimumstartingdeadlines-constraints-v1alpha1.json b/schemas/v1.22.0/k8sminimumstartingdeadlines-constraints-v1alpha1.json deleted file mode 100644 index 60d9afe1..00000000 --- a/schemas/v1.22.0/k8sminimumstartingdeadlines-constraints-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}, "parameters": {"properties": {"minimumStartingDeadlineSeconds": {"type": "number"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8sminimumstartingdeadlines-constraints-v1beta1.json b/schemas/v1.22.0/k8sminimumstartingdeadlines-constraints-v1beta1.json deleted file mode 100644 index 60d9afe1..00000000 --- a/schemas/v1.22.0/k8sminimumstartingdeadlines-constraints-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}, "parameters": {"properties": {"minimumStartingDeadlineSeconds": {"type": "number"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8srequiredannotations-constraints-v1alpha1.json b/schemas/v1.22.0/k8srequiredannotations-constraints-v1alpha1.json deleted file mode 100644 index 5082c7ce..00000000 --- a/schemas/v1.22.0/k8srequiredannotations-constraints-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}, "parameters": {"properties": {"annotations": {"items": {"properties": {"allowedRegex": {"type": "string"}, "key": {"type": "string"}}, "type": "object"}, "type": "array"}, "message": {"type": "string"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8srequiredannotations-constraints-v1beta1.json b/schemas/v1.22.0/k8srequiredannotations-constraints-v1beta1.json deleted file mode 100644 index 5082c7ce..00000000 --- a/schemas/v1.22.0/k8srequiredannotations-constraints-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}, "parameters": {"properties": {"annotations": {"items": {"properties": {"allowedRegex": {"type": "string"}, "key": {"type": "string"}}, "type": "object"}, "type": "array"}, "message": {"type": "string"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8srequiredlabels-constraints-v1alpha1.json b/schemas/v1.22.0/k8srequiredlabels-constraints-v1alpha1.json deleted file mode 100644 index daddb97f..00000000 --- a/schemas/v1.22.0/k8srequiredlabels-constraints-v1alpha1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}, "parameters": {"properties": {"labels": {"type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/k8srequiredlabels-constraints-v1beta1.json b/schemas/v1.22.0/k8srequiredlabels-constraints-v1beta1.json deleted file mode 100644 index daddb97f..00000000 --- a/schemas/v1.22.0/k8srequiredlabels-constraints-v1beta1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"spec": {"properties": {"enforcementAction": {"type": "string"}, "match": {"properties": {"excludedNamespaces": {"items": {"type": "string"}, "type": "array"}, "kinds": {"items": {"properties": {"apiGroups": {"items": {"type": "string"}}, "kinds": {"items": {"type": "string"}}}}, "type": "array"}, "labelSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaceSelector": {"properties": {"matchExpressions": {"items": {"properties": {"key": {"type": "string"}, "operator": {"enum": ["In", "NotIn", "Exists", "DoesNotExist"], "type": "string"}, "values": {"items": {"type": "string"}, "type": "array"}}}, "type": "array"}}}, "namespaces": {"items": {"type": "string"}, "type": "array"}}}, "parameters": {"properties": {"labels": {"type": "array"}}}}}}} \ No newline at end of file diff --git a/schemas/v1.22.0/kernelchaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/kernelchaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index 625ccccd..00000000 --- a/schemas/v1.22.0/kernelchaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,317 +0,0 @@ -{ - "description": "KernelChaos is the Schema for the kernelchaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "Spec defines the behavior of a kernel chaos experiment", - "properties": { - "containerNames": { - "description": "ContainerNames indicates list of the name of affected container. If not set, the first container will be injected", - "items": { - "type": "string" - }, - "type": "array" - }, - "duration": { - "description": "Duration represents the duration of the chaos action", - "type": "string" - }, - "failKernRequest": { - "description": "FailKernRequest defines the request of kernel injection", - "properties": { - "callchain": { - "description": "Callchain indicate a special call chain, such as: ext4_mount -\u003e mount_subtree -\u003e ... -\u003e should_failslab With an optional set of predicates and an optional set of parameters, which used with predicates. You can read call chan and predicate examples from https://github.com/chaos-mesh/bpfki/tree/develop/examples to learn more. If no special call chain, just keep Callchain empty, which means it will fail at any call chain with slab alloc (eg: kmalloc).", - "items": { - "description": "Frame defines the function signature and predicate in function's body", - "properties": { - "funcname": { - "description": "Funcname can be find from kernel source or `/proc/kallsyms`, such as `ext4_mount`", - "type": "string" - }, - "parameters": { - "description": "Parameters is used with predicate, for example, if you want to inject slab error in `d_alloc_parallel(struct dentry *parent, const struct qstr *name)` with a special name `bananas`, you need to set it to `struct dentry *parent, const struct qstr *name` otherwise omit it.", - "type": "string" - }, - "predicate": { - "description": "Predicate will access the arguments of this Frame, example with Parameters's, you can set it to `STRNCMP(name-\u003ename, \"bananas\", 8)` to make inject only with it, or omit it to inject for all d_alloc_parallel call chain.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "failtype": { - "description": "FailType indicates what to fail, can be set to '0' / '1' / '2' If `0`, indicates slab to fail (should_failslab) If `1`, indicates alloc_page to fail (should_fail_alloc_page) If `2`, indicates bio to fail (should_fail_bio) You can read: 1. https://www.kernel.org/doc/html/latest/fault-injection/fault-injection.html 2. http://github.com/iovisor/bcc/blob/master/tools/inject_example.txt to learn more", - "format": "int32", - "maximum": 2, - "minimum": 0, - "type": "integer" - }, - "headers": { - "description": "Headers indicates the appropriate kernel headers you need. Eg: \"linux/mmzone.h\", \"linux/blkdev.h\" and so on", - "items": { - "type": "string" - }, - "type": "array" - }, - "probability": { - "description": "Probability indicates the fails with probability. If you want 1%, please set this field with 1.", - "format": "int32", - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "times": { - "description": "Times indicates the max times of fails.", - "format": "int32", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "failtype" - ], - "type": "object" - }, - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "selector": { - "description": "Selector is used to select pods that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "nodeSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select nodes. Selector which must match a node's labels, and objects must belong to these selected nodes.", - "type": "object" - }, - "nodes": { - "description": "Nodes is a set of node name and objects must belong to these nodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "podPhaseSelectors": { - "description": "PodPhaseSelectors is a set of condition of a pod at the current time. supported value: Pending / Running / Succeeded / Failed / Unknown", - "items": { - "type": "string" - }, - "type": "array" - }, - "pods": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Pods is a map of string keys and a set values that used to select pods. The key defines the namespace which pods belong, and the each values is a set of pod names.", - "type": "object" - } - }, - "type": "object" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of pods to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - } - }, - "required": [ - "failKernRequest", - "mode", - "selector" - ], - "type": "object" - }, - "status": { - "description": "Most recently observed status of the kernel chaos experiment", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/kongclusterplugin-configuration-v1.json b/schemas/v1.22.0/kongclusterplugin-configuration-v1.json deleted file mode 100644 index 4b4dd322..00000000 --- a/schemas/v1.22.0/kongclusterplugin-configuration-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"config": {"type": "object"}, "configFrom": {"properties": {"secretKeyRef": {"properties": {"key": {"type": "string"}, "name": {"type": "string"}, "namespace": {"type": "string"}}, "required": ["name", "namespace", "key"], "type": "object"}}, "type": "object"}, "disabled": {"type": "boolean"}, "plugin": {"type": "string"}, "protocols": {"items": {"enum": ["http", "https", "grpc", "grpcs", "tcp", "tls"], "type": "string"}, "type": "array"}, "run_on": {"enum": ["first", "second", "all"], "type": "string"}}, "required": ["plugin"]} \ No newline at end of file diff --git a/schemas/v1.22.0/kongconsumer-configuration-v1.json b/schemas/v1.22.0/kongconsumer-configuration-v1.json deleted file mode 100644 index 9ca841dc..00000000 --- a/schemas/v1.22.0/kongconsumer-configuration-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"credentials": {"items": {"type": "string"}, "type": "array"}, "custom_id": {"type": "string"}, "username": {"type": "string"}}} \ No newline at end of file diff --git a/schemas/v1.22.0/kongcredential-configuration-v1.json b/schemas/v1.22.0/kongcredential-configuration-v1.json deleted file mode 100644 index c22eda07..00000000 --- a/schemas/v1.22.0/kongcredential-configuration-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"consumerRef": {"type": "string"}, "type": {"type": "string"}}, "required": ["consumerRef", "type"]} \ No newline at end of file diff --git a/schemas/v1.22.0/kongingress-configuration-v1.json b/schemas/v1.22.0/kongingress-configuration-v1.json deleted file mode 100644 index b0f80476..00000000 --- a/schemas/v1.22.0/kongingress-configuration-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"proxy": {"properties": {"connect_timeout": {"minimum": 0, "type": "integer"}, "path": {"pattern": "^/.*$", "type": "string"}, "protocol": {"enum": ["http", "https", "grpc", "grpcs", "tcp", "tls"], "type": "string"}, "read_timeout": {"minimum": 0, "type": "integer"}, "retries": {"minimum": 0, "type": "integer"}, "write_timeout": {"minimum": 0, "type": "integer"}}, "type": "object"}, "route": {"properties": {"headers": {"additionalProperties": {"items": {"type": "string"}, "type": "array"}, "type": "object"}, "https_redirect_status_code": {"type": "integer"}, "methods": {"items": {"type": "string"}, "type": "array"}, "path_handling": {"enum": ["v0", "v1"], "type": "string"}, "preserve_host": {"type": "boolean"}, "protocols": {"items": {"enum": ["http", "https", "grpc", "grpcs", "tcp", "tls"], "type": "string"}, "type": "array"}, "regex_priority": {"type": "integer"}, "strip_path": {"type": "boolean"}}}, "upstream": {"properties": {"algorithm": {"enum": ["round-robin", "consistent-hashing", "least-connections"], "type": "string"}, "hash_fallback": {"type": "string"}, "hash_fallback_header": {"type": "string"}, "hash_on": {"type": "string"}, "hash_on_cookie": {"type": "string"}, "hash_on_cookie_path": {"type": "string"}, "hash_on_header": {"type": "string"}, "healthchecks": {"properties": {"active": {"properties": {"concurrency": {"minimum": 1, "type": "integer"}, "healthy": {"properties": {"http_statuses": {"items": {"type": "integer"}, "type": "array"}, "interval": {"minimum": 0, "type": "integer"}, "successes": {"minimum": 0, "type": "integer"}}, "type": "object"}, "http_path": {"pattern": "^/.*$", "type": "string"}, "timeout": {"minimum": 0, "type": "integer"}, "unhealthy": {"properties": {"http_failures": {"minimum": 0, "type": "integer"}, "http_statuses": {"items": {"type": "integer"}, "type": "array"}, "interval": {"minimum": 0, "type": "integer"}, "tcp_failures": {"minimum": 0, "type": "integer"}, "timeout": {"minimum": 0, "type": "integer"}}, "type": "object"}}, "type": "object"}, "passive": {"properties": {"healthy": {"properties": {"http_statuses": {"items": {"type": "integer"}, "type": "array"}, "interval": {"minimum": 0, "type": "integer"}, "successes": {"minimum": 0, "type": "integer"}}, "type": "object"}, "unhealthy": {"properties": {"http_failures": {"minimum": 0, "type": "integer"}, "http_statuses": {"items": {"type": "integer"}, "type": "array"}, "interval": {"minimum": 0, "type": "integer"}, "tcp_failures": {"minimum": 0, "type": "integer"}, "timeout": {"minimum": 0, "type": "integer"}}, "type": "object"}}, "type": "object"}, "threshold": {"type": "integer"}}, "type": "object"}, "host_header": {"type": "string"}, "slots": {"minimum": 10, "type": "integer"}}, "type": "object"}}} \ No newline at end of file diff --git a/schemas/v1.22.0/kongplugin-configuration-v1.json b/schemas/v1.22.0/kongplugin-configuration-v1.json deleted file mode 100644 index 772190a0..00000000 --- a/schemas/v1.22.0/kongplugin-configuration-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"config": {"type": "object"}, "configFrom": {"properties": {"secretKeyRef": {"properties": {"key": {"type": "string"}, "name": {"type": "string"}}, "required": ["name", "key"], "type": "object"}}, "type": "object"}, "disabled": {"type": "boolean"}, "plugin": {"type": "string"}, "protocols": {"items": {"enum": ["http", "https", "grpc", "grpcs", "tcp", "tls"], "type": "string"}, "type": "array"}, "run_on": {"enum": ["first", "second", "all"], "type": "string"}}, "required": ["plugin"]} \ No newline at end of file diff --git a/schemas/v1.22.0/manualscalertrait-core-v1alpha2.json b/schemas/v1.22.0/manualscalertrait-core-v1alpha2.json deleted file mode 100644 index 59821fb4..00000000 --- a/schemas/v1.22.0/manualscalertrait-core-v1alpha2.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "A ManualScalerTrait determines how many replicas a workload should have.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "A ManualScalerTraitSpec defines the desired state of a ManualScalerTrait.", "properties": {"replicaCount": {"description": "ReplicaCount of the workload this trait applies to.", "format": "int32", "type": "integer"}, "workloadRef": {"description": "WorkloadReference to the workload this trait applies to.", "properties": {"apiVersion": {"description": "APIVersion of the referenced object.", "type": "string"}, "kind": {"description": "Kind of the referenced object.", "type": "string"}, "name": {"description": "Name of the referenced object.", "type": "string"}, "uid": {"description": "UID of the referenced object.", "type": "string"}}, "required": ["apiVersion", "kind", "name"], "type": "object"}}, "required": ["replicaCount", "workloadRef"], "type": "object"}, "status": {"description": "A ManualScalerTraitStatus represents the observed state of a ManualScalerTrait.", "properties": {"conditions": {"description": "Conditions of the resource.", "items": {"description": "A Condition that may apply to a resource.", "properties": {"lastTransitionTime": {"description": "LastTransitionTime is the last time this condition transitioned from one status to another.", "format": "date-time", "type": "string"}, "message": {"description": "A Message containing details about this condition's last transition from one status to another, if any.", "type": "string"}, "reason": {"description": "A Reason for this condition's last transition from one status to another.", "type": "string"}, "status": {"description": "Status of this condition; is it currently True, False, or Unknown?", "type": "string"}, "type": {"description": "Type of this condition. At most one of each condition type may apply to a resource at any point in time.", "type": "string"}}, "required": ["lastTransitionTime", "reason", "status", "type"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/networkchaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/networkchaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index fc417ce5..00000000 --- a/schemas/v1.22.0/networkchaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,538 +0,0 @@ -{ - "description": "NetworkChaos is the Schema for the networkchaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "Spec defines the behavior of a pod chaos experiment", - "properties": { - "action": { - "description": "Action defines the specific network chaos action. Supported action: partition, netem, delay, loss, duplicate, corrupt Default action: delay", - "enum": [ - "netem", - "delay", - "loss", - "duplicate", - "corrupt", - "partition", - "bandwidth" - ], - "type": "string" - }, - "bandwidth": { - "description": "Bandwidth represents the detail about bandwidth control action", - "properties": { - "buffer": { - "description": "Buffer is the maximum amount of bytes that tokens can be available for instantaneously.", - "format": "int32", - "minimum": 1, - "type": "integer" - }, - "limit": { - "description": "Limit is the number of bytes that can be queued waiting for tokens to become available.", - "format": "int32", - "minimum": 1, - "type": "integer" - }, - "minburst": { - "description": "Minburst specifies the size of the peakrate bucket. For perfect accuracy, should be set to the MTU of the interface. If a peakrate is needed, but some burstiness is acceptable, this size can be raised. A 3000 byte minburst allows around 3mbit/s of peakrate, given 1000 byte packets.", - "format": "int32", - "minimum": 0, - "type": "integer" - }, - "peakrate": { - "description": "Peakrate is the maximum depletion rate of the bucket. The peakrate does not need to be set, it is only necessary if perfect millisecond timescale shaping is required.", - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "rate": { - "description": "Rate is the speed knob. Allows bps, kbps, mbps, gbps, tbps unit. bps means bytes per second.", - "type": "string" - } - }, - "required": [ - "buffer", - "limit", - "rate" - ], - "type": "object" - }, - "corrupt": { - "description": "Corrupt represents the detail about corrupt action", - "properties": { - "correlation": { - "type": "string" - }, - "corrupt": { - "type": "string" - } - }, - "required": [ - "corrupt" - ], - "type": "object" - }, - "delay": { - "description": "Delay represents the detail about delay action", - "properties": { - "correlation": { - "type": "string" - }, - "jitter": { - "type": "string" - }, - "latency": { - "type": "string" - }, - "reorder": { - "description": "ReorderSpec defines details of packet reorder.", - "properties": { - "correlation": { - "type": "string" - }, - "gap": { - "type": "integer" - }, - "reorder": { - "type": "string" - } - }, - "required": [ - "gap", - "reorder" - ], - "type": "object" - } - }, - "required": [ - "latency" - ], - "type": "object" - }, - "device": { - "description": "Device represents the network device to be affected.", - "type": "string" - }, - "direction": { - "default": "to", - "description": "Direction represents the direction, this applies on netem and network partition action", - "enum": [ - "to", - "from", - "both" - ], - "type": "string" - }, - "duplicate": { - "description": "DuplicateSpec represents the detail about loss action", - "properties": { - "correlation": { - "type": "string" - }, - "duplicate": { - "type": "string" - } - }, - "required": [ - "duplicate" - ], - "type": "object" - }, - "duration": { - "description": "Duration represents the duration of the chaos action", - "type": "string" - }, - "externalTargets": { - "description": "ExternalTargets represents network targets outside k8s", - "items": { - "type": "string" - }, - "type": "array" - }, - "loss": { - "description": "Loss represents the detail about loss action", - "properties": { - "correlation": { - "type": "string" - }, - "loss": { - "type": "string" - } - }, - "required": [ - "loss" - ], - "type": "object" - }, - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "selector": { - "description": "Selector is used to select pods that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "nodeSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select nodes. Selector which must match a node's labels, and objects must belong to these selected nodes.", - "type": "object" - }, - "nodes": { - "description": "Nodes is a set of node name and objects must belong to these nodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "podPhaseSelectors": { - "description": "PodPhaseSelectors is a set of condition of a pod at the current time. supported value: Pending / Running / Succeeded / Failed / Unknown", - "items": { - "type": "string" - }, - "type": "array" - }, - "pods": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Pods is a map of string keys and a set values that used to select pods. The key defines the namespace which pods belong, and the each values is a set of pod names.", - "type": "object" - } - }, - "type": "object" - }, - "target": { - "description": "Target represents network target, this applies on netem and network partition action", - "properties": { - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "selector": { - "description": "Selector is used to select pods that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "nodeSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select nodes. Selector which must match a node's labels, and objects must belong to these selected nodes.", - "type": "object" - }, - "nodes": { - "description": "Nodes is a set of node name and objects must belong to these nodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "podPhaseSelectors": { - "description": "PodPhaseSelectors is a set of condition of a pod at the current time. supported value: Pending / Running / Succeeded / Failed / Unknown", - "items": { - "type": "string" - }, - "type": "array" - }, - "pods": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Pods is a map of string keys and a set values that used to select pods. The key defines the namespace which pods belong, and the each values is a set of pod names.", - "type": "object" - } - }, - "type": "object" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of pods to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - } - }, - "required": [ - "mode", - "selector" - ], - "type": "object" - }, - "targetDevice": { - "description": "TargetDevice represents the network device to be affected in target scope.", - "type": "string" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of pods to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - } - }, - "required": [ - "action", - "mode", - "selector" - ], - "type": "object" - }, - "status": { - "description": "Most recently observed status of the chaos experiment about pods", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - }, - "instances": { - "additionalProperties": { - "format": "int64", - "type": "integer" - }, - "description": "Instances always specifies podnetworkchaos generation or empty", - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/oauth2client-dex-v1.json b/schemas/v1.22.0/oauth2client-dex-v1.json deleted file mode 100644 index e94e2e3e..00000000 --- a/schemas/v1.22.0/oauth2client-dex-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "object", "x-kubernetes-preserve-unknown-fields": true} \ No newline at end of file diff --git a/schemas/v1.22.0/offlinesessions-dex-v1.json b/schemas/v1.22.0/offlinesessions-dex-v1.json deleted file mode 100644 index e94e2e3e..00000000 --- a/schemas/v1.22.0/offlinesessions-dex-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "object", "x-kubernetes-preserve-unknown-fields": true} \ No newline at end of file diff --git a/schemas/v1.22.0/opentelemetrycollector-opentelemetry-v1alpha1.json b/schemas/v1.22.0/opentelemetrycollector-opentelemetry-v1alpha1.json deleted file mode 100644 index fb7055f4..00000000 --- a/schemas/v1.22.0/opentelemetrycollector-opentelemetry-v1alpha1.json +++ /dev/null @@ -1,2125 +0,0 @@ -{ - "description": "OpenTelemetryCollector is the Schema for the opentelemetrycollectors API.", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "OpenTelemetryCollectorSpec defines the desired state of OpenTelemetryCollector.", - "properties": { - "args": { - "additionalProperties": { - "type": "string" - }, - "description": "Args is the set of arguments to pass to the OpenTelemetry Collector binary", - "type": "object" - }, - "config": { - "description": "Config is the raw JSON to be used as the collector's configuration. Refer to the OpenTelemetry Collector documentation for details.", - "type": "string" - }, - "env": { - "description": "ENV vars to set on the OpenTelemetry Collector's Pods. These can then in certain cases be consumed in the config file for the Collector.", - "items": { - "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" - }, - "valueFrom": { - "description": "Source for the environment variable's value. Cannot be used if value is not empty.", - "properties": { - "configMapKeyRef": { - "description": "Selects a key of 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 TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or its key must be defined", - "type": "boolean" - } - }, - "required": [ - "key" - ], - "type": "object" - }, - "fieldRef": { - "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.", - "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" - } - }, - "required": [ - "fieldPath" - ], - "type": "object" - }, - "resourceFieldRef": { - "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.", - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "description": "Specifies the output format of the exposed resources, defaults to \"1\"", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - }, - "required": [ - "resource" - ], - "type": "object" - }, - "secretKeyRef": { - "description": "Selects a key of a secret in the pod's namespace", - "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 TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - }, - "optional": { - "description": "Specify whether the Secret or its key must be defined", - "type": "boolean" - } - }, - "required": [ - "key" - ], - "type": "object" - } - }, - "type": "object" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - "envFrom": { - "description": "List of sources to populate environment variables on the OpenTelemetry Collector's Pods. These can then in certain cases be consumed in the config file for the Collector.", - "items": { - "description": "EnvFromSource represents the source of a set of ConfigMaps", - "properties": { - "configMapRef": { - "description": "The ConfigMap to select from", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap must be defined", - "type": "boolean" - } - }, - "type": "object" - }, - "prefix": { - "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", - "type": "string" - }, - "secretRef": { - "description": "The Secret to select from", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - }, - "optional": { - "description": "Specify whether the Secret must be defined", - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "hostNetwork": { - "description": "HostNetwork indicates if the pod should run in the host networking namespace.", - "type": "boolean" - }, - "image": { - "description": "Image indicates the container image to use for the OpenTelemetry Collector.", - "type": "string" - }, - "imagePullPolicy": { - "description": "ImagePullPolicy indicates the pull policy to be used for retrieving the container image (Always, Never, IfNotPresent)", - "type": "string" - }, - "mode": { - "description": "Mode represents how the collector should be deployed (deployment, daemonset, statefulset or sidecar)", - "enum": [ - "daemonset", - "deployment", - "sidecar", - "statefulset" - ], - "type": "string" - }, - "podAnnotations": { - "additionalProperties": { - "type": "string" - }, - "description": "PodAnnotations is the set of annotations that will be attached to Collector and Target Allocator pods.", - "type": "object" - }, - "ports": { - "description": "Ports allows a set of ports to be exposed by the underlying v1.Service. By default, the operator will attempt to infer the required ports by parsing the .Spec.Config property but this property can be used to open aditional ports that can't be inferred by the operator, like for custom receivers.", - "items": { - "description": "ServicePort contains information on service's port.", - "properties": { - "appProtocol": { - "description": "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.", - "type": "string" - }, - "name": { - "description": "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service.", - "type": "string" - }, - "nodePort": { - "description": "The port on each node on which this service is exposed when type is NodePort or LoadBalancer. Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail. If not specified, a port will be allocated if this Service requires one. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport", - "format": "int32", - "type": "integer" - }, - "port": { - "description": "The port that will be exposed by this service.", - "format": "int32", - "type": "integer" - }, - "protocol": { - "default": "TCP", - "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", - "type": "string" - }, - "targetPort": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "description": "Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service", - "x-kubernetes-int-or-string": true - } - }, - "required": [ - "port" - ], - "type": "object" - }, - "type": "array", - "x-kubernetes-list-type": "atomic" - }, - "replicas": { - "description": "Replicas is the number of pod instances for the underlying OpenTelemetry Collector", - "format": "int32", - "type": "integer" - }, - "resources": { - "description": "Resources to set on the OpenTelemetry Collector pods.", - "properties": { - "limits": { - "additionalProperties": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "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": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "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" - }, - "securityContext": { - "description": "SecurityContext will be set as the container security context.", - "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": { - "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.", - "properties": { - "add": { - "description": "Added capabilities", - "items": { - "description": "Capability represent POSIX capabilities type", - "type": "string" - }, - "type": "array" - }, - "drop": { - "description": "Removed capabilities", - "items": { - "description": "Capability represent POSIX capabilities type", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "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" - }, - "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" - }, - "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" - }, - "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.", - "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" - }, - "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" - } - }, - "type": "object" - }, - "seccompProfile": { - "description": "The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options.", - "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 Localhost - 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": [ - "type" - ], - "type": "object" - }, - "windowsOptions": { - "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.", - "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" - }, - "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" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "serviceAccount": { - "description": "ServiceAccount indicates the name of an existing service account to use with this instance.", - "type": "string" - }, - "targetAllocator": { - "description": "TargetAllocator indicates a value which determines whether to spawn a target allocation resource or not.", - "properties": { - "enabled": { - "description": "Enabled indicates whether to use a target allocation mechanism for Prometheus targets or not.", - "type": "boolean" - }, - "image": { - "description": "Image indicates the container image to use for the OpenTelemetry TargetAllocator.", - "type": "string" - } - }, - "type": "object" - }, - "tolerations": { - "description": "Toleration to schedule OpenTelemetry Collector pods. This is only relevant to daemonsets, statefulsets and deployments", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "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" - }, - "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" - }, - "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" - }, - "type": "array" - }, - "volumeClaimTemplates": { - "description": "VolumeClaimTemplates will provide stable storage using PersistentVolumes. Only available when the mode=statefulset.", - "items": { - "description": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "finalizers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - } - }, - "type": "object" - }, - "spec": { - "description": "Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "properties": { - "accessModes": { - "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", - "items": { - "type": "string" - }, - "type": "array" - }, - "dataSource": { - "description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.", - "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" - }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" - }, - "name": { - "description": "Name is the name of resource being referenced", - "type": "string" - } - }, - "required": [ - "kind", - "name" - ], - "type": "object" - }, - "dataSourceRef": { - "description": "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.", - "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" - }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" - }, - "name": { - "description": "Name is the name of resource being referenced", - "type": "string" - } - }, - "required": [ - "kind", - "name" - ], - "type": "object" - }, - "resources": { - "description": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", - "properties": { - "limits": { - "additionalProperties": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "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": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "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" - }, - "selector": { - "description": "A label query over volumes to consider for binding.", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "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" - } - }, - "type": "object" - }, - "storageClassName": { - "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", - "type": "string" - }, - "volumeMode": { - "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", - "type": "string" - }, - "volumeName": { - "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "properties": { - "accessModes": { - "description": "AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", - "items": { - "type": "string" - }, - "type": "array" - }, - "capacity": { - "additionalProperties": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "description": "Represents the actual resources of the underlying volume.", - "type": "object" - }, - "conditions": { - "description": "Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.", - "items": { - "description": "PersistentVolumeClaimCondition contails details about state of pvc", - "properties": { - "lastProbeTime": { - "description": "Last time we probed the condition.", - "format": "date-time", - "type": "string" - }, - "lastTransitionTime": { - "description": "Last time the condition transitioned from one status to another.", - "format": "date-time", - "type": "string" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "description": "PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type", - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "phase": { - "description": "Phase represents the current phase of PersistentVolumeClaim.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array", - "x-kubernetes-list-type": "atomic" - }, - "volumeMounts": { - "description": "VolumeMounts represents the mount points to use in the underlying collector deployment(s)", - "items": { - "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" - }, - "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" - }, - "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" - } - }, - "required": [ - "mountPath", - "name" - ], - "type": "object" - }, - "type": "array", - "x-kubernetes-list-type": "atomic" - }, - "volumes": { - "description": "Volumes represents which volumes to use in the underlying collector deployment(s).", - "items": { - "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", - "properties": { - "awsElasticBlockStore": { - "description": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", - "properties": { - "fsType": { - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine", - "type": "string" - }, - "partition": { - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).", - "format": "int32", - "type": "integer" - }, - "readOnly": { - "description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", - "type": "boolean" - }, - "volumeID": { - "description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", - "type": "string" - } - }, - "required": [ - "volumeID" - ], - "type": "object" - }, - "azureDisk": { - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", - "properties": { - "cachingMode": { - "description": "Host Caching mode: None, Read Only, Read Write.", - "type": "string" - }, - "diskName": { - "description": "The Name of the data disk in the blob storage", - "type": "string" - }, - "diskURI": { - "description": "The URI the data disk in the blob storage", - "type": "string" - }, - "fsType": { - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", - "type": "string" - }, - "kind": { - "description": "Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared", - "type": "string" - }, - "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", - "type": "boolean" - } - }, - "required": [ - "diskName", - "diskURI" - ], - "type": "object" - }, - "azureFile": { - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", - "properties": { - "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", - "type": "boolean" - }, - "secretName": { - "description": "the name of secret that contains Azure Storage Account Name and Key", - "type": "string" - }, - "shareName": { - "description": "Share Name", - "type": "string" - } - }, - "required": [ - "secretName", - "shareName" - ], - "type": "object" - }, - "cephfs": { - "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", - "properties": { - "monitors": { - "description": "Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", - "items": { - "type": "string" - }, - "type": "array" - }, - "path": { - "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /", - "type": "string" - }, - "readOnly": { - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", - "type": "boolean" - }, - "secretFile": { - "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", - "type": "string" - }, - "secretRef": { - "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "type": "object" - }, - "user": { - "description": "Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", - "type": "string" - } - }, - "required": [ - "monitors" - ], - "type": "object" - }, - "cinder": { - "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", - "properties": { - "fsType": { - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", - "type": "string" - }, - "readOnly": { - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", - "type": "boolean" - }, - "secretRef": { - "description": "Optional: points to a secret object containing parameters used to connect to OpenStack.", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "type": "object" - }, - "volumeID": { - "description": "volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", - "type": "string" - } - }, - "required": [ - "volumeID" - ], - "type": "object" - }, - "configMap": { - "description": "ConfigMap represents a configMap that should populate this volume", - "properties": { - "defaultMode": { - "description": "Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "items": { - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", - "items": { - "description": "Maps a string key to a path within a volume.", - "properties": { - "key": { - "description": "The key to project.", - "type": "string" - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "path": { - "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", - "type": "string" - } - }, - "required": [ - "key", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or its keys must be defined", - "type": "boolean" - } - }, - "type": "object" - }, - "csi": { - "description": "CSI (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).", - "properties": { - "driver": { - "description": "Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.", - "type": "string" - }, - "fsType": { - "description": "Filesystem type to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.", - "type": "string" - }, - "nodePublishSecretRef": { - "description": "NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "type": "object" - }, - "readOnly": { - "description": "Specifies a read-only configuration for the volume. Defaults to false (read/write).", - "type": "boolean" - }, - "volumeAttributes": { - "additionalProperties": { - "type": "string" - }, - "description": "VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.", - "type": "object" - } - }, - "required": [ - "driver" - ], - "type": "object" - }, - "downwardAPI": { - "description": "DownwardAPI represents downward API about the pod that should populate this volume", - "properties": { - "defaultMode": { - "description": "Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "items": { - "description": "Items is a list of downward API volume file", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "properties": { - "fieldRef": { - "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", - "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" - } - }, - "required": [ - "fieldPath" - ], - "type": "object" - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "description": "Specifies the output format of the exposed resources, defaults to \"1\"", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - }, - "required": [ - "resource" - ], - "type": "object" - } - }, - "required": [ - "path" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "emptyDir": { - "description": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", - "properties": { - "medium": { - "description": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", - "type": "string" - }, - "sizeLimit": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "description": "Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - } - }, - "type": "object" - }, - "ephemeral": { - "description": "Ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \n A pod can use both types of ephemeral volumes and persistent volumes at the same time. \n This is a beta feature and only available when the GenericEphemeralVolume feature gate is enabled.", - "properties": { - "volumeClaimTemplate": { - "description": "Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \n Required, must not be nil.", - "properties": { - "metadata": { - "description": "May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "finalizers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - } - }, - "type": "object" - }, - "spec": { - "description": "The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.", - "properties": { - "accessModes": { - "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", - "items": { - "type": "string" - }, - "type": "array" - }, - "dataSource": { - "description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.", - "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" - }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" - }, - "name": { - "description": "Name is the name of resource being referenced", - "type": "string" - } - }, - "required": [ - "kind", - "name" - ], - "type": "object" - }, - "dataSourceRef": { - "description": "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.", - "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" - }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" - }, - "name": { - "description": "Name is the name of resource being referenced", - "type": "string" - } - }, - "required": [ - "kind", - "name" - ], - "type": "object" - }, - "resources": { - "description": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", - "properties": { - "limits": { - "additionalProperties": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "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": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "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" - }, - "selector": { - "description": "A label query over volumes to consider for binding.", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "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" - } - }, - "type": "object" - }, - "storageClassName": { - "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", - "type": "string" - }, - "volumeMode": { - "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", - "type": "string" - }, - "volumeName": { - "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" - } - }, - "type": "object" - }, - "fc": { - "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", - "properties": { - "fsType": { - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine", - "type": "string" - }, - "lun": { - "description": "Optional: FC target lun number", - "format": "int32", - "type": "integer" - }, - "readOnly": { - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", - "type": "boolean" - }, - "targetWWNs": { - "description": "Optional: FC target worldwide names (WWNs)", - "items": { - "type": "string" - }, - "type": "array" - }, - "wwids": { - "description": "Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "flexVolume": { - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.", - "properties": { - "driver": { - "description": "Driver is the name of the driver to use for this volume.", - "type": "string" - }, - "fsType": { - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.", - "type": "string" - }, - "options": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional: Extra command options if any.", - "type": "object" - }, - "readOnly": { - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", - "type": "boolean" - }, - "secretRef": { - "description": "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "driver" - ], - "type": "object" - }, - "flocker": { - "description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running", - "properties": { - "datasetName": { - "description": "Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated", - "type": "string" - }, - "datasetUUID": { - "description": "UUID of the dataset. This is unique identifier of a Flocker dataset", - "type": "string" - } - }, - "type": "object" - }, - "gcePersistentDisk": { - "description": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", - "properties": { - "fsType": { - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine", - "type": "string" - }, - "partition": { - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", - "format": "int32", - "type": "integer" - }, - "pdName": { - "description": "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", - "type": "string" - }, - "readOnly": { - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", - "type": "boolean" - } - }, - "required": [ - "pdName" - ], - "type": "object" - }, - "gitRepo": { - "description": "GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.", - "properties": { - "directory": { - "description": "Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.", - "type": "string" - }, - "repository": { - "description": "Repository URL", - "type": "string" - }, - "revision": { - "description": "Commit hash for the specified revision.", - "type": "string" - } - }, - "required": [ - "repository" - ], - "type": "object" - }, - "glusterfs": { - "description": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md", - "properties": { - "endpoints": { - "description": "EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", - "type": "string" - }, - "path": { - "description": "Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", - "type": "string" - }, - "readOnly": { - "description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", - "type": "boolean" - } - }, - "required": [ - "endpoints", - "path" - ], - "type": "object" - }, - "hostPath": { - "description": "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.", - "properties": { - "path": { - "description": "Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", - "type": "string" - }, - "type": { - "description": "Type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", - "type": "string" - } - }, - "required": [ - "path" - ], - "type": "object" - }, - "iscsi": { - "description": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md", - "properties": { - "chapAuthDiscovery": { - "description": "whether support iSCSI Discovery CHAP authentication", - "type": "boolean" - }, - "chapAuthSession": { - "description": "whether support iSCSI Session CHAP authentication", - "type": "boolean" - }, - "fsType": { - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine", - "type": "string" - }, - "initiatorName": { - "description": "Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.", - "type": "string" - }, - "iqn": { - "description": "Target iSCSI Qualified Name.", - "type": "string" - }, - "iscsiInterface": { - "description": "iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", - "type": "string" - }, - "lun": { - "description": "iSCSI Target Lun number.", - "format": "int32", - "type": "integer" - }, - "portals": { - "description": "iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", - "items": { - "type": "string" - }, - "type": "array" - }, - "readOnly": { - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", - "type": "boolean" - }, - "secretRef": { - "description": "CHAP Secret for iSCSI target and initiator authentication", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "type": "object" - }, - "targetPortal": { - "description": "iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", - "type": "string" - } - }, - "required": [ - "iqn", - "lun", - "targetPortal" - ], - "type": "object" - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "nfs": { - "description": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", - "properties": { - "path": { - "description": "Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", - "type": "string" - }, - "readOnly": { - "description": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", - "type": "boolean" - }, - "server": { - "description": "Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", - "type": "string" - } - }, - "required": [ - "path", - "server" - ], - "type": "object" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - }, - "required": [ - "claimName" - ], - "type": "object" - }, - "photonPersistentDisk": { - "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", - "properties": { - "fsType": { - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", - "type": "string" - }, - "pdID": { - "description": "ID that identifies Photon Controller persistent disk", - "type": "string" - } - }, - "required": [ - "pdID" - ], - "type": "object" - }, - "portworxVolume": { - "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", - "properties": { - "fsType": { - "description": "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.", - "type": "string" - }, - "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", - "type": "boolean" - }, - "volumeID": { - "description": "VolumeID uniquely identifies a Portworx volume", - "type": "string" - } - }, - "required": [ - "volumeID" - ], - "type": "object" - }, - "projected": { - "description": "Items for all in one resources secrets, configmaps, and downward API", - "properties": { - "defaultMode": { - "description": "Mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "sources": { - "description": "list of volume projections", - "items": { - "description": "Projection that may be projected along with other supported volume types", - "properties": { - "configMap": { - "description": "information about the configMap data to project", - "properties": { - "items": { - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", - "items": { - "description": "Maps a string key to a path within a volume.", - "properties": { - "key": { - "description": "The key to project.", - "type": "string" - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "path": { - "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", - "type": "string" - } - }, - "required": [ - "key", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or its keys must be defined", - "type": "boolean" - } - }, - "type": "object" - }, - "downwardAPI": { - "description": "information about the downwardAPI data to project", - "properties": { - "items": { - "description": "Items is a list of DownwardAPIVolume file", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "properties": { - "fieldRef": { - "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", - "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" - } - }, - "required": [ - "fieldPath" - ], - "type": "object" - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "description": "Specifies the output format of the exposed resources, defaults to \"1\"", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - }, - "required": [ - "resource" - ], - "type": "object" - } - }, - "required": [ - "path" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "secret": { - "description": "information about the secret data to project", - "properties": { - "items": { - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", - "items": { - "description": "Maps a string key to a path within a volume.", - "properties": { - "key": { - "description": "The key to project.", - "type": "string" - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "path": { - "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", - "type": "string" - } - }, - "required": [ - "key", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - }, - "optional": { - "description": "Specify whether the Secret or its key must be defined", - "type": "boolean" - } - }, - "type": "object" - }, - "serviceAccountToken": { - "description": "information about the serviceAccountToken data to project", - "properties": { - "audience": { - "description": "Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.", - "type": "string" - }, - "expirationSeconds": { - "description": "ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.", - "format": "int64", - "type": "integer" - }, - "path": { - "description": "Path is the path relative to the mount point of the file to project the token into.", - "type": "string" - } - }, - "required": [ - "path" - ], - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "quobyte": { - "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", - "properties": { - "group": { - "description": "Group to map volume access to Default is no group", - "type": "string" - }, - "readOnly": { - "description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.", - "type": "boolean" - }, - "registry": { - "description": "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes", - "type": "string" - }, - "tenant": { - "description": "Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin", - "type": "string" - }, - "user": { - "description": "User to map volume access to Defaults to serivceaccount user", - "type": "string" - }, - "volume": { - "description": "Volume is a string that references an already created Quobyte volume by name.", - "type": "string" - } - }, - "required": [ - "registry", - "volume" - ], - "type": "object" - }, - "rbd": { - "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md", - "properties": { - "fsType": { - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine", - "type": "string" - }, - "image": { - "description": "The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", - "type": "string" - }, - "keyring": { - "description": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", - "type": "string" - }, - "monitors": { - "description": "A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", - "items": { - "type": "string" - }, - "type": "array" - }, - "pool": { - "description": "The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", - "type": "string" - }, - "readOnly": { - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", - "type": "boolean" - }, - "secretRef": { - "description": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "type": "object" - }, - "user": { - "description": "The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", - "type": "string" - } - }, - "required": [ - "image", - "monitors" - ], - "type": "object" - }, - "scaleIO": { - "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", - "properties": { - "fsType": { - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".", - "type": "string" - }, - "gateway": { - "description": "The host address of the ScaleIO API Gateway.", - "type": "string" - }, - "protectionDomain": { - "description": "The name of the ScaleIO Protection Domain for the configured storage.", - "type": "string" - }, - "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", - "type": "boolean" - }, - "secretRef": { - "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "type": "object" - }, - "sslEnabled": { - "description": "Flag to enable/disable SSL communication with Gateway, default false", - "type": "boolean" - }, - "storageMode": { - "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", - "type": "string" - }, - "storagePool": { - "description": "The ScaleIO Storage Pool associated with the protection domain.", - "type": "string" - }, - "system": { - "description": "The name of the storage system as configured in ScaleIO.", - "type": "string" - }, - "volumeName": { - "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", - "type": "string" - } - }, - "required": [ - "gateway", - "secretRef", - "system" - ], - "type": "object" - }, - "secret": { - "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "properties": { - "defaultMode": { - "description": "Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "items": { - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", - "items": { - "description": "Maps a string key to a path within a volume.", - "properties": { - "key": { - "description": "The key to project.", - "type": "string" - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "format": "int32", - "type": "integer" - }, - "path": { - "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", - "type": "string" - } - }, - "required": [ - "key", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "optional": { - "description": "Specify whether the Secret or its keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - } - }, - "type": "object" - }, - "storageos": { - "description": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.", - "properties": { - "fsType": { - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", - "type": "string" - }, - "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", - "type": "boolean" - }, - "secretRef": { - "description": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", - "type": "string" - } - }, - "type": "object" - }, - "volumeName": { - "description": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", - "type": "string" - }, - "volumeNamespace": { - "description": "VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", - "type": "string" - } - }, - "type": "object" - }, - "vsphereVolume": { - "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", - "properties": { - "fsType": { - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", - "type": "string" - }, - "storagePolicyID": { - "description": "Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", - "type": "string" - }, - "storagePolicyName": { - "description": "Storage Policy Based Management (SPBM) profile name.", - "type": "string" - }, - "volumePath": { - "description": "Path that identifies vSphere volume vmdk", - "type": "string" - } - }, - "required": [ - "volumePath" - ], - "type": "object" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array", - "x-kubernetes-list-type": "atomic" - } - }, - "type": "object" - }, - "status": { - "description": "OpenTelemetryCollectorStatus defines the observed state of OpenTelemetryCollector.", - "properties": { - "messages": { - "description": "Messages about actions performed by the operator on this resource.", - "items": { - "type": "string" - }, - "type": "array", - "x-kubernetes-list-type": "atomic" - }, - "replicas": { - "description": "Replicas is currently not being set and might be removed in the next version.", - "format": "int32", - "type": "integer" - }, - "version": { - "description": "Version of the managed OpenTelemetry Collector (operand)", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/order-acme-v1.json b/schemas/v1.22.0/order-acme-v1.json deleted file mode 100644 index 7308fb21..00000000 --- a/schemas/v1.22.0/order-acme-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "Order is a type to represent an Order with an ACME server", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"properties": {"commonName": {"description": "CommonName is the common name as specified on the DER encoded CSR. If specified, this value must also be present in `dnsNames` or `ipAddresses`. This field must match the corresponding field on the DER encoded CSR.", "type": "string"}, "dnsNames": {"description": "DNSNames is a list of DNS names that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR.", "items": {"type": "string"}, "type": "array"}, "duration": {"description": "Duration is the duration for the not after date for the requested certificate. this is set on order creation as pe the ACME spec.", "type": "string"}, "ipAddresses": {"description": "IPAddresses is a list of IP addresses that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR.", "items": {"type": "string"}, "type": "array"}, "issuerRef": {"description": "IssuerRef references a properly configured ACME-type Issuer which should be used to create this Order. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Order will be marked as failed.", "properties": {"group": {"description": "Group of the resource being referred to.", "type": "string"}, "kind": {"description": "Kind of the resource being referred to.", "type": "string"}, "name": {"description": "Name of the resource being referred to.", "type": "string"}}, "required": ["name"], "type": "object"}, "request": {"description": "Certificate signing request bytes in DER encoding. This will be used when finalizing the order. This field must be set on the order.", "format": "byte", "type": "string"}}, "required": ["issuerRef", "request"], "type": "object"}, "status": {"properties": {"authorizations": {"description": "Authorizations contains data returned from the ACME server on what authorizations must be completed in order to validate the DNS names specified on the Order.", "items": {"description": "ACMEAuthorization contains data returned from the ACME server on an authorization that must be completed in order validate a DNS name on an ACME Order resource.", "properties": {"challenges": {"description": "Challenges specifies the challenge types offered by the ACME server. One of these challenge types will be selected when validating the DNS name and an appropriate Challenge resource will be created to perform the ACME challenge process.", "items": {"description": "Challenge specifies a challenge offered by the ACME server for an Order. An appropriate Challenge resource can be created to perform the ACME challenge process.", "properties": {"token": {"description": "Token is the token that must be presented for this challenge. This is used to compute the 'key' that must also be presented.", "type": "string"}, "type": {"description": "Type is the type of challenge being offered, e.g. 'http-01', 'dns-01', 'tls-sni-01', etc. This is the raw value retrieved from the ACME server. Only 'http-01' and 'dns-01' are supported by cert-manager, other values will be ignored.", "type": "string"}, "url": {"description": "URL is the URL of this challenge. It can be used to retrieve additional metadata about the Challenge from the ACME server.", "type": "string"}}, "required": ["token", "type", "url"], "type": "object"}, "type": "array"}, "identifier": {"description": "Identifier is the DNS name to be validated as part of this authorization", "type": "string"}, "initialState": {"description": "InitialState is the initial state of the ACME authorization when first fetched from the ACME server. If an Authorization is already 'valid', the Order controller will not create a Challenge resource for the authorization. This will occur when working with an ACME server that enables 'authz reuse' (such as Let's Encrypt's production endpoint). If not set and 'identifier' is set, the state is assumed to be pending and a Challenge will be created.", "enum": ["valid", "ready", "pending", "processing", "invalid", "expired", "errored"], "type": "string"}, "url": {"description": "URL is the URL of the Authorization that must be completed", "type": "string"}, "wildcard": {"description": "Wildcard will be true if this authorization is for a wildcard DNS name. If this is true, the identifier will be the *non-wildcard* version of the DNS name. For example, if '*.example.com' is the DNS name being validated, this field will be 'true' and the 'identifier' field will be 'example.com'.", "type": "boolean"}}, "required": ["url"], "type": "object"}, "type": "array"}, "certificate": {"description": "Certificate is a copy of the PEM encoded certificate for this Order. This field will be populated after the order has been successfully finalized with the ACME server, and the order has transitioned to the 'valid' state.", "format": "byte", "type": "string"}, "failureTime": {"description": "FailureTime stores the time that this order failed. This is used to influence garbage collection and back-off.", "format": "date-time", "type": "string"}, "finalizeURL": {"description": "FinalizeURL of the Order. This is used to obtain certificates for this order once it has been completed.", "type": "string"}, "reason": {"description": "Reason optionally provides more information about a why the order is in the current state.", "type": "string"}, "state": {"description": "State contains the current state of this Order resource. States 'success' and 'expired' are 'final'", "enum": ["valid", "ready", "pending", "processing", "invalid", "expired", "errored"], "type": "string"}, "url": {"description": "URL of the Order. This will initially be empty when the resource is first created. The Order controller will populate this field when the Order is first processed. This field will be immutable after it is initially set.", "type": "string"}}, "type": "object"}}, "required": ["metadata", "spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/password-dex-v1.json b/schemas/v1.22.0/password-dex-v1.json deleted file mode 100644 index e94e2e3e..00000000 --- a/schemas/v1.22.0/password-dex-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "object", "x-kubernetes-preserve-unknown-fields": true} \ No newline at end of file diff --git a/schemas/v1.22.0/physicalmachine-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/physicalmachine-chaos-mesh-v1alpha1.json deleted file mode 100644 index c2ab988d..00000000 --- a/schemas/v1.22.0/physicalmachine-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "PhysicalMachine is the Schema for the physical machine API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "Spec defines the behavior of a physical machine", - "properties": { - "address": { - "description": "Address represents the address of the physical machine", - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/physicalmachinechaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/physicalmachinechaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index 2dea2a47..00000000 --- a/schemas/v1.22.0/physicalmachinechaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,1286 +0,0 @@ -{ - "description": "PhysicalMachineChaos is the Schema for the physical machine chaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "Spec defines the behavior of a physical machine chaos experiment", - "properties": { - "action": { - "description": "the subAction, generate automatically", - "enum": [ - "stress-cpu", - "stress-mem", - "disk-read-payload", - "disk-write-payload", - "disk-fill", - "network-corrupt", - "network-duplicate", - "network-loss", - "network-delay", - "network-partition", - "network-dns", - "network-bandwidth", - "network-flood", - "network-down", - "process", - "jvm-exception", - "jvm-gc", - "jvm-latency", - "jvm-return", - "jvm-stress", - "jvm-rule-data", - "jvm-mysql", - "clock", - "redis-expiration", - "redis-penetration", - "redis-cacheLimit", - "redis-restart", - "redis-stop", - "kafka-fill", - "kafka-flood", - "kafka-io", - "file-create", - "file-modify", - "file-delete", - "file-rename", - "file-append", - "file-replace", - "vm", - "user_defined" - ], - "type": "string" - }, - "address": { - "description": "DEPRECATED: Use Selector instead. Only one of Address and Selector could be specified.", - "items": { - "type": "string" - }, - "type": "array" - }, - "clock": { - "properties": { - "clock-ids-slice": { - "description": "the identifier of the particular clock on which to act. More clock description in linux kernel can be found in man page of clock_getres, clock_gettime, clock_settime. Muti clock ids should be split with \",\"", - "type": "string" - }, - "pid": { - "description": "the pid of target program.", - "type": "integer" - }, - "time-offset": { - "description": "specifies the length of time offset.", - "type": "string" - } - }, - "type": "object" - }, - "disk-fill": { - "properties": { - "fill-by-fallocate": { - "description": "fill disk by fallocate", - "type": "boolean" - }, - "path": { - "description": "specifies the location to fill data in. if path not provided, payload will read/write from/into a temp file, temp file will be deleted after writing", - "type": "string" - }, - "size": { - "description": "specifies how many units of data will write into the file path. support unit: c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, GB=1000*1000*1000, G=1024*1024*1024 BYTES. example : 1M | 512kB", - "type": "string" - } - }, - "type": "object" - }, - "disk-read-payload": { - "properties": { - "path": { - "description": "specifies the location to fill data in. if path not provided, payload will read/write from/into a temp file, temp file will be deleted after writing", - "type": "string" - }, - "payload-process-num": { - "description": "specifies the number of process work on writing, default 1, only 1-255 is valid value", - "type": "integer" - }, - "size": { - "description": "specifies how many units of data will write into the file path. support unit: c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, GB=1000*1000*1000, G=1024*1024*1024 BYTES. example : 1M | 512kB", - "type": "string" - } - }, - "type": "object" - }, - "disk-write-payload": { - "properties": { - "path": { - "description": "specifies the location to fill data in. if path not provided, payload will read/write from/into a temp file, temp file will be deleted after writing", - "type": "string" - }, - "payload-process-num": { - "description": "specifies the number of process work on writing, default 1, only 1-255 is valid value", - "type": "integer" - }, - "size": { - "description": "specifies how many units of data will write into the file path. support unit: c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, GB=1000*1000*1000, G=1024*1024*1024 BYTES. example : 1M | 512kB", - "type": "string" - } - }, - "type": "object" - }, - "duration": { - "description": "Duration represents the duration of the chaos action", - "type": "string" - }, - "file-append": { - "properties": { - "count": { - "description": "Count is the number of times to append the data.", - "type": "integer" - }, - "data": { - "description": "Data is the data for append.", - "type": "string" - }, - "file-name": { - "description": "FileName is the name of the file to be created, modified, deleted, renamed, or appended.", - "type": "string" - } - }, - "type": "object" - }, - "file-create": { - "properties": { - "dir-name": { - "description": "DirName is the directory name to create or delete.", - "type": "string" - }, - "file-name": { - "description": "FileName is the name of the file to be created, modified, deleted, renamed, or appended.", - "type": "string" - } - }, - "type": "object" - }, - "file-delete": { - "properties": { - "dir-name": { - "description": "DirName is the directory name to create or delete.", - "type": "string" - }, - "file-name": { - "description": "FileName is the name of the file to be created, modified, deleted, renamed, or appended.", - "type": "string" - } - }, - "type": "object" - }, - "file-modify": { - "properties": { - "file-name": { - "description": "FileName is the name of the file to be created, modified, deleted, renamed, or appended.", - "type": "string" - }, - "privilege": { - "description": "Privilege is the file privilege to be set.", - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "file-rename": { - "properties": { - "dest-file": { - "description": "DestFile is the name to be renamed.", - "type": "string" - }, - "source-file": { - "description": "SourceFile is the name need to be renamed.", - "type": "string" - } - }, - "type": "object" - }, - "file-replace": { - "properties": { - "dest-string": { - "description": "DestStr is the destination string of the file.", - "type": "string" - }, - "file-name": { - "description": "FileName is the name of the file to be created, modified, deleted, renamed, or appended.", - "type": "string" - }, - "line": { - "description": "Line is the line number of the file to be replaced.", - "type": "integer" - }, - "origin-string": { - "description": "OriginStr is the origin string of the file.", - "type": "string" - } - }, - "type": "object" - }, - "http-abort": { - "properties": { - "code": { - "description": "Code is a rule to select target by http status code in response", - "type": "string" - }, - "method": { - "description": "HTTP method", - "type": "string" - }, - "path": { - "description": "Match path of Uri with wildcard matches", - "type": "string" - }, - "port": { - "description": "The TCP port that the target service listens on", - "format": "int32", - "type": "integer" - }, - "proxy_ports": { - "description": "Composed with one of the port of HTTP connection, we will only attack HTTP connection with port inside proxy_ports", - "items": { - "type": "integer" - }, - "type": "array" - }, - "target": { - "description": "HTTP target: Request or Response", - "type": "string" - } - }, - "required": [ - "proxy_ports", - "target" - ], - "type": "object" - }, - "http-config": { - "properties": { - "file_path": { - "description": "The config file path", - "type": "string" - } - }, - "type": "object" - }, - "http-delay": { - "properties": { - "code": { - "description": "Code is a rule to select target by http status code in response", - "type": "string" - }, - "delay": { - "description": "Delay represents the delay of the target request/response", - "type": "string" - }, - "method": { - "description": "HTTP method", - "type": "string" - }, - "path": { - "description": "Match path of Uri with wildcard matches", - "type": "string" - }, - "port": { - "description": "The TCP port that the target service listens on", - "format": "int32", - "type": "integer" - }, - "proxy_ports": { - "description": "Composed with one of the port of HTTP connection, we will only attack HTTP connection with port inside proxy_ports", - "items": { - "type": "integer" - }, - "type": "array" - }, - "target": { - "description": "HTTP target: Request or Response", - "type": "string" - } - }, - "required": [ - "delay", - "proxy_ports", - "target" - ], - "type": "object" - }, - "http-request": { - "description": "used for HTTP request, now only support GET", - "properties": { - "count": { - "description": "The number of requests to send", - "type": "integer" - }, - "enable-conn-pool": { - "description": "Enable connection pool", - "type": "boolean" - }, - "url": { - "description": "Request to send\"", - "type": "string" - } - }, - "type": "object" - }, - "jvm-exception": { - "properties": { - "class": { - "description": "Java class", - "type": "string" - }, - "exception": { - "description": "the exception which needs to throw for action `exception`", - "type": "string" - }, - "method": { - "description": "the method in Java class", - "type": "string" - }, - "pid": { - "description": "the pid of Java process which needs to attach", - "type": "integer" - }, - "port": { - "description": "the port of agent server, default 9277", - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "jvm-gc": { - "properties": { - "pid": { - "description": "the pid of Java process which needs to attach", - "type": "integer" - }, - "port": { - "description": "the port of agent server, default 9277", - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "jvm-latency": { - "properties": { - "class": { - "description": "Java class", - "type": "string" - }, - "latency": { - "description": "the latency duration for action 'latency', unit ms", - "type": "integer" - }, - "method": { - "description": "the method in Java class", - "type": "string" - }, - "pid": { - "description": "the pid of Java process which needs to attach", - "type": "integer" - }, - "port": { - "description": "the port of agent server, default 9277", - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "jvm-mysql": { - "properties": { - "database": { - "description": "the match database default value is \"\", means match all database", - "type": "string" - }, - "exception": { - "description": "The exception which needs to throw for action `exception` or the exception message needs to throw in action `mysql`", - "type": "string" - }, - "latency": { - "description": "The latency duration for action 'latency' or the latency duration in action `mysql`", - "type": "integer" - }, - "mysqlConnectorVersion": { - "description": "the version of mysql-connector-java, only support 5.X.X(set to \"5\") and 8.X.X(set to \"8\") now", - "type": "string" - }, - "pid": { - "description": "the pid of Java process which needs to attach", - "type": "integer" - }, - "port": { - "description": "the port of agent server, default 9277", - "format": "int32", - "type": "integer" - }, - "sqlType": { - "description": "the match sql type default value is \"\", means match all SQL type. The value can be 'select', 'insert', 'update', 'delete', 'replace'.", - "type": "string" - }, - "table": { - "description": "the match table default value is \"\", means match all table", - "type": "string" - } - }, - "type": "object" - }, - "jvm-return": { - "properties": { - "class": { - "description": "Java class", - "type": "string" - }, - "method": { - "description": "the method in Java class", - "type": "string" - }, - "pid": { - "description": "the pid of Java process which needs to attach", - "type": "integer" - }, - "port": { - "description": "the port of agent server, default 9277", - "format": "int32", - "type": "integer" - }, - "value": { - "description": "the return value for action 'return'", - "type": "string" - } - }, - "type": "object" - }, - "jvm-rule-data": { - "properties": { - "pid": { - "description": "the pid of Java process which needs to attach", - "type": "integer" - }, - "port": { - "description": "the port of agent server, default 9277", - "format": "int32", - "type": "integer" - }, - "rule-data": { - "description": "RuleData used to save the rule file's data, will use it when recover", - "type": "string" - } - }, - "type": "object" - }, - "jvm-stress": { - "properties": { - "cpu-count": { - "description": "the CPU core number need to use, only set it when action is stress", - "type": "integer" - }, - "mem-type": { - "description": "the memory type need to locate, only set it when action is stress, the value can be 'stack' or 'heap'", - "type": "string" - }, - "pid": { - "description": "the pid of Java process which needs to attach", - "type": "integer" - }, - "port": { - "description": "the port of agent server, default 9277", - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "kafka-fill": { - "properties": { - "host": { - "description": "The host of kafka server", - "type": "string" - }, - "maxBytes": { - "description": "The max bytes to fill", - "format": "int64", - "type": "integer" - }, - "messageSize": { - "description": "The size of each message", - "type": "integer" - }, - "password": { - "description": "The password of kafka client", - "type": "string" - }, - "port": { - "description": "The port of kafka server", - "type": "integer" - }, - "reloadCommand": { - "description": "The command to reload kafka config", - "type": "string" - }, - "topic": { - "description": "The topic to attack", - "type": "string" - }, - "username": { - "description": "The username of kafka client", - "type": "string" - } - }, - "type": "object" - }, - "kafka-flood": { - "properties": { - "host": { - "description": "The host of kafka server", - "type": "string" - }, - "messageSize": { - "description": "The size of each message", - "type": "integer" - }, - "password": { - "description": "The password of kafka client", - "type": "string" - }, - "port": { - "description": "The port of kafka server", - "type": "integer" - }, - "threads": { - "description": "The number of worker threads", - "type": "integer" - }, - "topic": { - "description": "The topic to attack", - "type": "string" - }, - "username": { - "description": "The username of kafka client", - "type": "string" - } - }, - "type": "object" - }, - "kafka-io": { - "properties": { - "configFile": { - "description": "The path of server config", - "type": "string" - }, - "nonReadable": { - "description": "Make kafka cluster non-readable", - "type": "boolean" - }, - "nonWritable": { - "description": "Make kafka cluster non-writable", - "type": "boolean" - }, - "topic": { - "description": "The topic to attack", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "network-bandwidth": { - "properties": { - "buffer": { - "format": "int32", - "minimum": 1, - "type": "integer" - }, - "device": { - "type": "string" - }, - "hostname": { - "type": "string" - }, - "ip-address": { - "type": "string" - }, - "limit": { - "format": "int32", - "minimum": 1, - "type": "integer" - }, - "minburst": { - "format": "int32", - "type": "integer" - }, - "peakrate": { - "format": "int64", - "type": "integer" - }, - "rate": { - "type": "string" - } - }, - "required": [ - "buffer", - "limit", - "rate" - ], - "type": "object" - }, - "network-corrupt": { - "properties": { - "correlation": { - "description": "correlation is percentage (10 is 10%)", - "type": "string" - }, - "device": { - "description": "the network interface to impact", - "type": "string" - }, - "egress-port": { - "description": "only impact egress traffic to these destination ports, use a ',' to separate or to indicate the range, such as 80, 8001:8010. it can only be used in conjunction with -p tcp or -p udp", - "type": "string" - }, - "hostname": { - "description": "only impact traffic to these hostnames", - "type": "string" - }, - "ip-address": { - "description": "only impact egress traffic to these IP addresses", - "type": "string" - }, - "ip-protocol": { - "description": "only impact traffic using this IP protocol, supported: tcp, udp, icmp, all", - "type": "string" - }, - "percent": { - "description": "percentage of packets to corrupt (10 is 10%)", - "type": "string" - }, - "source-port": { - "description": "only impact egress traffic from these source ports, use a ',' to separate or to indicate the range, such as 80, 8001:8010. it can only be used in conjunction with -p tcp or -p udp", - "type": "string" - } - }, - "type": "object" - }, - "network-delay": { - "properties": { - "accept-tcp-flags": { - "description": "only the packet which match the tcp flag can be accepted, others will be dropped. only set when the IPProtocol is tcp, used for partition.", - "type": "string" - }, - "correlation": { - "description": "correlation is percentage (10 is 10%)", - "type": "string" - }, - "device": { - "description": "the network interface to impact", - "type": "string" - }, - "egress-port": { - "description": "only impact egress traffic to these destination ports, use a ',' to separate or to indicate the range, such as 80, 8001:8010. it can only be used in conjunction with -p tcp or -p udp", - "type": "string" - }, - "hostname": { - "description": "only impact traffic to these hostnames", - "type": "string" - }, - "ip-address": { - "description": "only impact egress traffic to these IP addresses", - "type": "string" - }, - "ip-protocol": { - "description": "only impact traffic using this IP protocol, supported: tcp, udp, icmp, all", - "type": "string" - }, - "jitter": { - "description": "jitter time, time units: ns, us (or µs), ms, s, m, h.", - "type": "string" - }, - "latency": { - "description": "delay egress time, time units: ns, us (or µs), ms, s, m, h.", - "type": "string" - }, - "source-port": { - "description": "only impact egress traffic from these source ports, use a ',' to separate or to indicate the range, such as 80, 8001:8010. it can only be used in conjunction with -p tcp or -p udp", - "type": "string" - } - }, - "type": "object" - }, - "network-dns": { - "properties": { - "dns-domain-name": { - "description": "map this host to specified IP", - "type": "string" - }, - "dns-ip": { - "description": "map specified host to this IP address", - "type": "string" - }, - "dns-server": { - "description": "update the DNS server in /etc/resolv.conf with this value", - "type": "string" - } - }, - "type": "object" - }, - "network-down": { - "properties": { - "device": { - "description": "The network interface to impact", - "type": "string" - }, - "duration": { - "description": "NIC down time, time units: ns, us (or µs), ms, s, m, h.", - "type": "string" - } - }, - "type": "object" - }, - "network-duplicate": { - "properties": { - "correlation": { - "description": "correlation is percentage (10 is 10%)", - "type": "string" - }, - "device": { - "description": "the network interface to impact", - "type": "string" - }, - "egress-port": { - "description": "only impact egress traffic to these destination ports, use a ',' to separate or to indicate the range, such as 80, 8001:8010. it can only be used in conjunction with -p tcp or -p udp", - "type": "string" - }, - "hostname": { - "description": "only impact traffic to these hostnames", - "type": "string" - }, - "ip-address": { - "description": "only impact egress traffic to these IP addresses", - "type": "string" - }, - "ip-protocol": { - "description": "only impact traffic using this IP protocol, supported: tcp, udp, icmp, all", - "type": "string" - }, - "percent": { - "description": "percentage of packets to duplicate (10 is 10%)", - "type": "string" - }, - "source-port": { - "description": "only impact egress traffic from these source ports, use a ',' to separate or to indicate the range, such as 80, 8001:8010. it can only be used in conjunction with -p tcp or -p udp", - "type": "string" - } - }, - "type": "object" - }, - "network-flood": { - "properties": { - "duration": { - "description": "The number of seconds to run the iperf test", - "type": "string" - }, - "ip-address": { - "description": "Generate traffic to this IP address", - "type": "string" - }, - "parallel": { - "description": "The number of iperf parallel client threads to run", - "format": "int32", - "type": "integer" - }, - "port": { - "description": "Generate traffic to this port on the IP address", - "type": "string" - }, - "rate": { - "description": "The speed of network traffic, allows bps, kbps, mbps, gbps, tbps unit. bps means bytes per second", - "type": "string" - } - }, - "required": [ - "duration", - "rate" - ], - "type": "object" - }, - "network-loss": { - "properties": { - "correlation": { - "description": "correlation is percentage (10 is 10%)", - "type": "string" - }, - "device": { - "description": "the network interface to impact", - "type": "string" - }, - "egress-port": { - "description": "only impact egress traffic to these destination ports, use a ',' to separate or to indicate the range, such as 80, 8001:8010. it can only be used in conjunction with -p tcp or -p udp", - "type": "string" - }, - "hostname": { - "description": "only impact traffic to these hostnames", - "type": "string" - }, - "ip-address": { - "description": "only impact egress traffic to these IP addresses", - "type": "string" - }, - "ip-protocol": { - "description": "only impact traffic using this IP protocol, supported: tcp, udp, icmp, all", - "type": "string" - }, - "percent": { - "description": "percentage of packets to loss (10 is 10%)", - "type": "string" - }, - "source-port": { - "description": "only impact egress traffic from these source ports, use a ',' to separate or to indicate the range, such as 80, 8001:8010. it can only be used in conjunction with -p tcp or -p udp", - "type": "string" - } - }, - "type": "object" - }, - "network-partition": { - "properties": { - "accept-tcp-flags": { - "description": "only the packet which match the tcp flag can be accepted, others will be dropped. only set when the IPProtocol is tcp, used for partition.", - "type": "string" - }, - "device": { - "description": "the network interface to impact", - "type": "string" - }, - "direction": { - "description": "specifies the partition direction, values can be 'from', 'to'. 'from' means packets coming from the 'IPAddress' or 'Hostname' and going to your server, 'to' means packets originating from your server and going to the 'IPAddress' or 'Hostname'.", - "type": "string" - }, - "hostname": { - "description": "only impact traffic to these hostnames", - "type": "string" - }, - "ip-address": { - "description": "only impact egress traffic to these IP addresses", - "type": "string" - }, - "ip-protocol": { - "description": "only impact egress traffic to these IP addresses", - "type": "string" - } - }, - "type": "object" - }, - "process": { - "properties": { - "process": { - "description": "the process name or the process ID", - "type": "string" - }, - "recoverCmd": { - "description": "the command to be run when recovering experiment", - "type": "string" - }, - "signal": { - "description": "the signal number to send", - "type": "integer" - } - }, - "type": "object" - }, - "redis-cacheLimit": { - "properties": { - "addr": { - "description": "The adress of Redis server", - "type": "string" - }, - "cacheSize": { - "description": "The size of `maxmemory`", - "type": "string" - }, - "password": { - "description": "The password of Redis server", - "type": "string" - }, - "percent": { - "description": "Specifies maxmemory as a percentage of the original value", - "type": "string" - } - }, - "type": "object" - }, - "redis-expiration": { - "properties": { - "addr": { - "description": "The adress of Redis server", - "type": "string" - }, - "expiration": { - "description": "The expiration of the keys", - "type": "string" - }, - "key": { - "description": "The keys to be expired", - "type": "string" - }, - "option": { - "description": "Additional options for `expiration`", - "type": "string" - }, - "password": { - "description": "The password of Redis server", - "type": "string" - } - }, - "type": "object" - }, - "redis-penetration": { - "properties": { - "addr": { - "description": "The adress of Redis server", - "type": "string" - }, - "password": { - "description": "The password of Redis server", - "type": "string" - }, - "requestNum": { - "description": "The number of requests to be sent", - "type": "integer" - } - }, - "type": "object" - }, - "redis-restart": { - "properties": { - "addr": { - "description": "The adress of Redis server", - "type": "string" - }, - "conf": { - "description": "The path of Sentinel conf", - "type": "string" - }, - "flushConfig": { - "description": "The control flag determines whether to flush config", - "type": "boolean" - }, - "password": { - "description": "The password of Redis server", - "type": "string" - }, - "redisPath": { - "description": "The path of `redis-server` command-line tool", - "type": "boolean" - } - }, - "type": "object" - }, - "redis-stop": { - "properties": { - "addr": { - "description": "The adress of Redis server", - "type": "string" - }, - "conf": { - "description": "The path of Sentinel conf", - "type": "string" - }, - "flushConfig": { - "description": "The control flag determines whether to flush config", - "type": "boolean" - }, - "password": { - "description": "The password of Redis server", - "type": "string" - }, - "redisPath": { - "description": "The path of `redis-server` command-line tool", - "type": "boolean" - } - }, - "type": "object" - }, - "selector": { - "description": "Selector is used to select physical machines that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "physicalMachines": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "PhysicalMachines is a map of string keys and a set values that used to select physical machines. The key defines the namespace which physical machine belong, and each value is a set of physical machine names.", - "type": "object" - } - }, - "type": "object" - }, - "stress-cpu": { - "properties": { - "load": { - "description": "specifies P percent loading per CPU worker. 0 is effectively a sleep (no load) and 100 is full loading.", - "type": "integer" - }, - "options": { - "description": "extend stress-ng options", - "items": { - "type": "string" - }, - "type": "array" - }, - "workers": { - "description": "specifies N workers to apply the stressor.", - "type": "integer" - } - }, - "type": "object" - }, - "stress-mem": { - "properties": { - "options": { - "description": "extend stress-ng options", - "items": { - "type": "string" - }, - "type": "array" - }, - "size": { - "description": "specifies N bytes consumed per vm worker, default is the total available memory. One can specify the size as % of total available memory or in units of B, KB/KiB, MB/MiB, GB/GiB, TB/TiB..", - "type": "string" - } - }, - "type": "object" - }, - "uid": { - "description": "the experiment ID", - "type": "string" - }, - "user_defined": { - "properties": { - "attackCmd": { - "description": "The command to be executed when attack", - "type": "string" - }, - "recoverCmd": { - "description": "The command to be executed when recover", - "type": "string" - } - }, - "type": "object" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of physical machines to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of physical machines the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - }, - "vm": { - "properties": { - "vm-name": { - "description": "The name of the VM to be injected", - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "action", - "mode" - ], - "type": "object" - }, - "status": { - "description": "Most recently observed status of the chaos experiment", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/podchaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/podchaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index 1b64cd1d..00000000 --- a/schemas/v1.22.0/podchaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,274 +0,0 @@ -{ - "description": "PodChaos is the control script`s spec.", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "Spec defines the behavior of a pod chaos experiment", - "properties": { - "action": { - "description": "Action defines the specific pod chaos action. Supported action: pod-kill / pod-failure / container-kill Default action: pod-kill", - "enum": [ - "pod-kill", - "pod-failure", - "container-kill" - ], - "type": "string" - }, - "containerNames": { - "description": "ContainerNames indicates list of the name of affected container. If not set, the first container will be injected", - "items": { - "type": "string" - }, - "type": "array" - }, - "duration": { - "description": "Duration represents the duration of the chaos action. It is required when the action is `PodFailureAction`. A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as \"300ms\", \"-1.5h\" or \"2h45m\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\".", - "type": "string" - }, - "gracePeriod": { - "description": "GracePeriod is used in pod-kill action. It represents the duration in seconds before the pod should be deleted. Value must be non-negative integer. The default value is zero that indicates delete immediately.", - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "mode": { - "description": "Mode defines the mode to run chaos action. Supported mode: one / all / fixed / fixed-percent / random-max-percent", - "enum": [ - "one", - "all", - "fixed", - "fixed-percent", - "random-max-percent" - ], - "type": "string" - }, - "selector": { - "description": "Selector is used to select pods that are used to inject chaos action.", - "properties": { - "annotationSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on annotations.", - "type": "object" - }, - "expressionSelectors": { - "description": "a slice of label selector expressions that can be used to select objects. A list of selectors based on set-based label expressions.", - "items": { - "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" - }, - "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" - } - }, - "required": [ - "key", - "operator" - ], - "type": "object" - }, - "type": "array" - }, - "fieldSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on fields.", - "type": "object" - }, - "labelSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select objects. A selector based on labels.", - "type": "object" - }, - "namespaces": { - "description": "Namespaces is a set of namespace to which objects belong.", - "items": { - "type": "string" - }, - "type": "array" - }, - "nodeSelectors": { - "additionalProperties": { - "type": "string" - }, - "description": "Map of string keys and values that can be used to select nodes. Selector which must match a node's labels, and objects must belong to these selected nodes.", - "type": "object" - }, - "nodes": { - "description": "Nodes is a set of node name and objects must belong to these nodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "podPhaseSelectors": { - "description": "PodPhaseSelectors is a set of condition of a pod at the current time. supported value: Pending / Running / Succeeded / Failed / Unknown", - "items": { - "type": "string" - }, - "type": "array" - }, - "pods": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Pods is a map of string keys and a set values that used to select pods. The key defines the namespace which pods belong, and the each values is a set of pod names.", - "type": "object" - } - }, - "type": "object" - }, - "value": { - "description": "Value is required when the mode is set to `FixedMode` / `FixedPercentMode` / `RandomMaxPercentMode`. If `FixedMode`, provide an integer of pods to do chaos action. If `FixedPercentMode`, provide a number from 0-100 to specify the percent of pods the server can do chaos action. IF `RandomMaxPercentMode`, provide a number from 0-100 to specify the max percent of pods to do chaos action", - "type": "string" - } - }, - "required": [ - "action", - "mode", - "selector" - ], - "type": "object" - }, - "status": { - "description": "Most recently observed status of the chaos experiment about pods", - "properties": { - "conditions": { - "description": "Conditions represents the current global condition of the chaos", - "items": { - "properties": { - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "experiment": { - "description": "Experiment records the last experiment state.", - "properties": { - "containerRecords": { - "description": "Records are used to track the running status", - "items": { - "properties": { - "events": { - "description": "Events are the essential details about the injections and recoveries", - "items": { - "properties": { - "message": { - "description": "Message is the detail message, e.g. the reason why we failed to inject the chaos", - "type": "string" - }, - "operation": { - "description": "Operation represents the operation we are doing, when we crate this event", - "type": "string" - }, - "timestamp": { - "description": "Timestamp is time when we create this event", - "format": "date-time", - "type": "string" - }, - "type": { - "description": "Type means the stage of this event", - "type": "string" - } - }, - "required": [ - "operation", - "timestamp", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "injectedCount": { - "description": "InjectedCount is a counter to record the sum of successful injections", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "recoveredCount": { - "description": "RecoveredCount is a counter to record the sum of successful recoveries", - "type": "integer" - }, - "selectorKey": { - "type": "string" - } - }, - "required": [ - "id", - "injectedCount", - "phase", - "recoveredCount", - "selectorKey" - ], - "type": "object" - }, - "type": "array" - }, - "desiredPhase": { - "enum": [ - "Run", - "Stop" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "experiment" - ], - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/podhttpchaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/podhttpchaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index 5cac7c50..00000000 --- a/schemas/v1.22.0/podhttpchaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "description": "PodHttpChaos is the Schema for the podhttpchaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "PodHttpChaosSpec defines the desired state of PodHttpChaos.", - "properties": { - "rules": { - "description": "Rules are a list of injection rule for http request.", - "items": { - "description": "PodHttpChaosRule defines the injection rule for http.", - "properties": { - "actions": { - "description": "Actions contains rules to inject target.", - "properties": { - "abort": { - "description": "Abort is a rule to abort a http session.", - "type": "boolean" - }, - "delay": { - "description": "Delay represents the delay of the target request/response. A duration string is a possibly unsigned sequence of decimal numbers, each with optional fraction and a unit suffix, such as \"300ms\", \"2h45m\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\".", - "type": "string" - }, - "patch": { - "description": "Patch is a rule to patch some contents in target.", - "properties": { - "body": { - "description": "Body is a rule to patch message body of target.", - "properties": { - "type": { - "description": "Type represents the patch type, only support `JSON` as [merge patch json](https://tools.ietf.org/html/rfc7396) currently.", - "type": "string" - }, - "value": { - "description": "Value is the patch contents.", - "type": "string" - } - }, - "required": [ - "type", - "value" - ], - "type": "object" - }, - "headers": { - "description": "Headers is a rule to append http headers of target. For example: `[[\"Set-Cookie\", \"\u003cone cookie\u003e\"], [\"Set-Cookie\", \"\u003canother cookie\u003e\"]]`.", - "items": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": "array" - }, - "queries": { - "description": "Queries is a rule to append uri queries of target(Request only). For example: `[[\"foo\", \"bar\"], [\"foo\", \"unknown\"]]`.", - "items": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": "array" - } - }, - "type": "object" - }, - "replace": { - "description": "Replace is a rule to replace some contents in target.", - "properties": { - "body": { - "description": "Body is a rule to replace http message body in target.", - "format": "byte", - "type": "string" - }, - "code": { - "description": "Code is a rule to replace http status code in response.", - "format": "int32", - "type": "integer" - }, - "headers": { - "additionalProperties": { - "type": "string" - }, - "description": "Headers is a rule to replace http headers of target. The key-value pairs represent header name and header value pairs.", - "type": "object" - }, - "method": { - "description": "Method is a rule to replace http method in request.", - "type": "string" - }, - "path": { - "description": "Path is rule to to replace uri path in http request.", - "type": "string" - }, - "queries": { - "additionalProperties": { - "type": "string" - }, - "description": "Queries is a rule to replace uri queries in http request. For example, with value `{ \"foo\": \"unknown\" }`, the `/?foo=bar` will be altered to `/?foo=unknown`,", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "port": { - "description": "Port represents the target port to be proxy of.", - "format": "int32", - "type": "integer" - }, - "selector": { - "description": "Selector contains the rules to select target.", - "properties": { - "code": { - "description": "Code is a rule to select target by http status code in response.", - "format": "int32", - "type": "integer" - }, - "method": { - "description": "Method is a rule to select target by http method in request.", - "type": "string" - }, - "path": { - "description": "Path is a rule to select target by uri path in http request.", - "type": "string" - }, - "port": { - "description": "Port is a rule to select server listening on specific port.", - "format": "int32", - "type": "integer" - }, - "request_headers": { - "additionalProperties": { - "type": "string" - }, - "description": "RequestHeaders is a rule to select target by http headers in request. The key-value pairs represent header name and header value pairs.", - "type": "object" - }, - "response_headers": { - "additionalProperties": { - "type": "string" - }, - "description": "ResponseHeaders is a rule to select target by http headers in response. The key-value pairs represent header name and header value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "source": { - "description": "Source represents the source of current rules", - "type": "string" - }, - "target": { - "description": "Target is the object to be selected and injected, \u003cRequest|Response\u003e.", - "type": "string" - } - }, - "required": [ - "actions", - "port", - "selector", - "target" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "status": { - "description": "PodHttpChaosStatus defines the actual state of PodHttpChaos.", - "properties": { - "failedMessage": { - "type": "string" - }, - "observedGeneration": { - "format": "int64", - "type": "integer" - }, - "pid": { - "description": "Pid represents a running tproxy process id.", - "format": "int64", - "type": "integer" - }, - "startTime": { - "description": "StartTime represents the start time of a tproxy process.", - "format": "int64", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/podiochaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/podiochaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index b92b1cf6..00000000 --- a/schemas/v1.22.0/podiochaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,235 +0,0 @@ -{ - "description": "PodIOChaos is the Schema for the podiochaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "PodIOChaosSpec defines the desired state of IOChaos", - "properties": { - "actions": { - "description": "Actions are a list of IOChaos actions", - "items": { - "description": "IOChaosAction defines a possible action of IOChaos", - "properties": { - "atime": { - "description": "Timespec represents a time", - "properties": { - "nsec": { - "format": "int64", - "type": "integer" - }, - "sec": { - "format": "int64", - "type": "integer" - } - }, - "required": [ - "nsec", - "sec" - ], - "type": "object" - }, - "blocks": { - "format": "int64", - "type": "integer" - }, - "ctime": { - "description": "Timespec represents a time", - "properties": { - "nsec": { - "format": "int64", - "type": "integer" - }, - "sec": { - "format": "int64", - "type": "integer" - } - }, - "required": [ - "nsec", - "sec" - ], - "type": "object" - }, - "faults": { - "description": "Faults represents the fault to inject", - "items": { - "description": "IoFault represents the fault to inject and their weight", - "properties": { - "errno": { - "format": "int32", - "type": "integer" - }, - "weight": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "errno", - "weight" - ], - "type": "object" - }, - "type": "array" - }, - "gid": { - "format": "int32", - "type": "integer" - }, - "ino": { - "format": "int64", - "type": "integer" - }, - "kind": { - "description": "FileType represents type of file", - "type": "string" - }, - "latency": { - "description": "Latency represents the latency to inject", - "type": "string" - }, - "methods": { - "description": "Methods represents the method that the action will inject in", - "items": { - "type": "string" - }, - "type": "array" - }, - "mistake": { - "description": "MistakeSpec represents the mistake to inject", - "properties": { - "filling": { - "description": "Filling determines what is filled in the mistake data.", - "enum": [ - "zero", - "random" - ], - "type": "string" - }, - "maxLength": { - "description": "Max length of each wrong data segment in bytes", - "format": "int64", - "minimum": 1, - "type": "integer" - }, - "maxOccurrences": { - "description": "There will be [1, MaxOccurrences] segments of wrong data.", - "format": "int64", - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "mtime": { - "description": "Timespec represents a time", - "properties": { - "nsec": { - "format": "int64", - "type": "integer" - }, - "sec": { - "format": "int64", - "type": "integer" - } - }, - "required": [ - "nsec", - "sec" - ], - "type": "object" - }, - "nlink": { - "format": "int32", - "type": "integer" - }, - "path": { - "description": "Path represents a glob of injecting path", - "type": "string" - }, - "percent": { - "description": "Percent represents the percent probability of injecting this action", - "type": "integer" - }, - "perm": { - "type": "integer" - }, - "rdev": { - "format": "int32", - "type": "integer" - }, - "size": { - "format": "int64", - "type": "integer" - }, - "source": { - "description": "Source represents the source of current rules", - "type": "string" - }, - "type": { - "description": "IOChaosType represents the type of IOChaos Action", - "type": "string" - }, - "uid": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "path", - "percent", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "container": { - "description": "TODO: support multiple different container to inject in one pod", - "type": "string" - }, - "volumeMountPath": { - "description": "VolumeMountPath represents the target mount path It must be a root of mount path now. TODO: search the mount parent of any path automatically. TODO: support multiple different volume mount path in one pod", - "type": "string" - } - }, - "required": [ - "volumeMountPath" - ], - "type": "object" - }, - "status": { - "properties": { - "failedMessage": { - "type": "string" - }, - "observedGeneration": { - "format": "int64", - "type": "integer" - }, - "pid": { - "description": "Pid represents a running toda process id", - "format": "int64", - "type": "integer" - }, - "startTime": { - "description": "StartTime represents the start time of a toda process", - "format": "int64", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/podmonitor-monitoring-v1.json b/schemas/v1.22.0/podmonitor-monitoring-v1.json deleted file mode 100644 index c567415c..00000000 --- a/schemas/v1.22.0/podmonitor-monitoring-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "PodMonitor defines monitoring for a set of pods.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "Specification of desired Pod selection for target discovery by Prometheus.", "properties": {"jobLabel": {"description": "The label to use to retrieve the job name from.", "type": "string"}, "labelLimit": {"description": "Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.", "format": "int64", "type": "integer"}, "labelNameLengthLimit": {"description": "Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.", "format": "int64", "type": "integer"}, "labelValueLengthLimit": {"description": "Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.", "format": "int64", "type": "integer"}, "namespaceSelector": {"description": "Selector to select which namespaces the Endpoints objects are discovered from.", "properties": {"any": {"description": "Boolean describing whether all namespaces are selected in contrast to a list restricting them.", "type": "boolean"}, "matchNames": {"description": "List of namespace names to select from.", "items": {"type": "string"}, "type": "array"}}, "type": "object"}, "podMetricsEndpoints": {"description": "A list of endpoints allowed as part of this PodMonitor.", "items": {"description": "PodMetricsEndpoint defines a scrapeable endpoint of a Kubernetes Pod serving Prometheus metrics.", "properties": {"authorization": {"description": "Authorization section for this endpoint", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "followRedirects": {"description": "FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.", "type": "boolean"}, "honorLabels": {"description": "HonorLabels chooses the metric's labels on collisions with target labels.", "type": "boolean"}, "honorTimestamps": {"description": "HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.", "type": "boolean"}, "interval": {"description": "Interval at which metrics should be scraped If not specified Prometheus' global scrape interval is used.", "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", "type": "string"}, "metricRelabelings": {"description": "MetricRelabelConfigs to apply to samples before ingestion.", "items": {"description": "RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs", "properties": {"action": {"default": "replace", "description": "Action to perform based on regex matching. Default is 'replace'", "enum": ["replace", "keep", "drop", "hashmod", "labelmap", "labeldrop", "labelkeep"], "type": "string"}, "modulus": {"description": "Modulus to take of the hash of the source label values.", "format": "int64", "type": "integer"}, "regex": {"description": "Regular expression against which the extracted value is matched. Default is '(.*)'", "type": "string"}, "replacement": {"description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'", "type": "string"}, "separator": {"description": "Separator placed between concatenated source label values. default is ';'.", "type": "string"}, "sourceLabels": {"description": "The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions.", "items": {"description": "LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", "type": "string"}, "type": "array"}, "targetLabel": {"description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.", "type": "string"}}, "type": "object"}, "type": "array"}, "oauth2": {"description": "OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "params": {"additionalProperties": {"items": {"type": "string"}, "type": "array"}, "description": "Optional HTTP URL parameters", "type": "object"}, "path": {"description": "HTTP path to scrape for metrics.", "type": "string"}, "port": {"description": "Name of the pod port this endpoint refers to. Mutually exclusive with targetPort.", "type": "string"}, "proxyUrl": {"description": "ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.", "type": "string"}, "relabelings": {"description": "RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job's name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config", "items": {"description": "RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs", "properties": {"action": {"default": "replace", "description": "Action to perform based on regex matching. Default is 'replace'", "enum": ["replace", "keep", "drop", "hashmod", "labelmap", "labeldrop", "labelkeep"], "type": "string"}, "modulus": {"description": "Modulus to take of the hash of the source label values.", "format": "int64", "type": "integer"}, "regex": {"description": "Regular expression against which the extracted value is matched. Default is '(.*)'", "type": "string"}, "replacement": {"description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'", "type": "string"}, "separator": {"description": "Separator placed between concatenated source label values. default is ';'.", "type": "string"}, "sourceLabels": {"description": "The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions.", "items": {"description": "LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", "type": "string"}, "type": "array"}, "targetLabel": {"description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.", "type": "string"}}, "type": "object"}, "type": "array"}, "scheme": {"description": "HTTP scheme to use for scraping.", "type": "string"}, "scrapeTimeout": {"description": "Timeout after which the scrape is ended If not specified, the Prometheus global scrape interval is used.", "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", "type": "string"}, "targetPort": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Deprecated: Use 'port' instead.", "x-kubernetes-int-or-string": true}, "tlsConfig": {"description": "TLS configuration to use when scraping the endpoint.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}, "type": "array"}, "podTargetLabels": {"description": "PodTargetLabels transfers labels on the Kubernetes Pod onto the target.", "items": {"type": "string"}, "type": "array"}, "sampleLimit": {"description": "SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.", "format": "int64", "type": "integer"}, "selector": {"description": "Selector to select Pod objects.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "targetLimit": {"description": "TargetLimit defines a limit on the number of scraped targets that will be accepted.", "format": "int64", "type": "integer"}}, "required": ["podMetricsEndpoints", "selector"], "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/podnetworkchaos-chaos-mesh-v1alpha1.json b/schemas/v1.22.0/podnetworkchaos-chaos-mesh-v1alpha1.json deleted file mode 100644 index b491c641..00000000 --- a/schemas/v1.22.0/podnetworkchaos-chaos-mesh-v1alpha1.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "description": "PodNetworkChaos is the Schema for the PodNetworkChaos API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "Spec defines the behavior of a pod chaos experiment", - "properties": { - "ipsets": { - "description": "The ipset on the pod", - "items": { - "description": "RawIPSet represents an ipset on specific pod", - "properties": { - "cidrAndPorts": { - "description": "The contents of ipset. Only available when IPSetType is NetPortIPSet.", - "items": { - "description": "CidrAndPort represents CIDR and port pair", - "properties": { - "cidr": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "cidr", - "port" - ], - "type": "object" - }, - "type": "array" - }, - "cidrs": { - "description": "The contents of ipset. Only available when IPSetType is NetIPSet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ipsetType": { - "description": "IPSetType represents the type of IP set", - "type": "string" - }, - "name": { - "description": "The name of ipset", - "type": "string" - }, - "setNames": { - "description": "The contents of ipset. Only available when IPSetType is SetIPSet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "source": { - "type": "string" - } - }, - "required": [ - "ipsetType", - "name", - "source" - ], - "type": "object" - }, - "type": "array" - }, - "iptables": { - "description": "The iptables rules on the pod", - "items": { - "description": "RawIptables represents the iptables rules on specific pod", - "properties": { - "device": { - "description": "Device represents the network device to be affected.", - "type": "string" - }, - "direction": { - "description": "The block direction of this iptables rule", - "type": "string" - }, - "ipsets": { - "description": "The name of related ipset", - "items": { - "type": "string" - }, - "nullable": true, - "type": "array" - }, - "name": { - "description": "The name of iptables chain", - "type": "string" - }, - "source": { - "type": "string" - } - }, - "required": [ - "direction", - "name", - "source" - ], - "type": "object" - }, - "type": "array" - }, - "tcs": { - "description": "The tc rules on the pod", - "items": { - "description": "RawTrafficControl represents the traffic control chaos on specific pod", - "properties": { - "bandwidth": { - "description": "Bandwidth represents the detail about bandwidth control action", - "properties": { - "buffer": { - "description": "Buffer is the maximum amount of bytes that tokens can be available for instantaneously.", - "format": "int32", - "minimum": 1, - "type": "integer" - }, - "limit": { - "description": "Limit is the number of bytes that can be queued waiting for tokens to become available.", - "format": "int32", - "minimum": 1, - "type": "integer" - }, - "minburst": { - "description": "Minburst specifies the size of the peakrate bucket. For perfect accuracy, should be set to the MTU of the interface. If a peakrate is needed, but some burstiness is acceptable, this size can be raised. A 3000 byte minburst allows around 3mbit/s of peakrate, given 1000 byte packets.", - "format": "int32", - "minimum": 0, - "type": "integer" - }, - "peakrate": { - "description": "Peakrate is the maximum depletion rate of the bucket. The peakrate does not need to be set, it is only necessary if perfect millisecond timescale shaping is required.", - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "rate": { - "description": "Rate is the speed knob. Allows bps, kbps, mbps, gbps, tbps unit. bps means bytes per second.", - "type": "string" - } - }, - "required": [ - "buffer", - "limit", - "rate" - ], - "type": "object" - }, - "corrupt": { - "description": "Corrupt represents the detail about corrupt action", - "properties": { - "correlation": { - "type": "string" - }, - "corrupt": { - "type": "string" - } - }, - "required": [ - "corrupt" - ], - "type": "object" - }, - "delay": { - "description": "Delay represents the detail about delay action", - "properties": { - "correlation": { - "type": "string" - }, - "jitter": { - "type": "string" - }, - "latency": { - "type": "string" - }, - "reorder": { - "description": "ReorderSpec defines details of packet reorder.", - "properties": { - "correlation": { - "type": "string" - }, - "gap": { - "type": "integer" - }, - "reorder": { - "type": "string" - } - }, - "required": [ - "gap", - "reorder" - ], - "type": "object" - } - }, - "required": [ - "latency" - ], - "type": "object" - }, - "device": { - "description": "Device represents the network device to be affected.", - "type": "string" - }, - "duplicate": { - "description": "DuplicateSpec represents the detail about loss action", - "properties": { - "correlation": { - "type": "string" - }, - "duplicate": { - "type": "string" - } - }, - "required": [ - "duplicate" - ], - "type": "object" - }, - "ipset": { - "description": "The name of target ipset", - "type": "string" - }, - "loss": { - "description": "Loss represents the detail about loss action", - "properties": { - "correlation": { - "type": "string" - }, - "loss": { - "type": "string" - } - }, - "required": [ - "loss" - ], - "type": "object" - }, - "source": { - "description": "The name and namespace of the source network chaos", - "type": "string" - }, - "type": { - "description": "The type of traffic control", - "type": "string" - } - }, - "required": [ - "source", - "type" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "status": { - "description": "Most recently observed status of the chaos experiment about pods", - "properties": { - "failedMessage": { - "type": "string" - }, - "observedGeneration": { - "format": "int64", - "type": "integer" - } - }, - "type": "object" - } - }, - "required": [ - "spec" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/podvolumebackup-velero-v1.json b/schemas/v1.22.0/podvolumebackup-velero-v1.json deleted file mode 100644 index b648b07b..00000000 --- a/schemas/v1.22.0/podvolumebackup-velero-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "PodVolumeBackupSpec is the specification for a PodVolumeBackup.", "properties": {"backupStorageLocation": {"description": "BackupStorageLocation is the name of the backup storage location where the restic repository is stored.", "type": "string"}, "node": {"description": "Node is the name of the node that the Pod is running on.", "type": "string"}, "pod": {"description": "Pod is a reference to the pod containing the volume to be backed up.", "properties": {"apiVersion": {"description": "API version of the referent.", "type": "string"}, "fieldPath": {"description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.", "type": "string"}, "kind": {"description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}, "namespace": {"description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string"}, "resourceVersion": {"description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", "type": "string"}, "uid": {"description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string"}}, "type": "object"}, "repoIdentifier": {"description": "RepoIdentifier is the restic repository identifier.", "type": "string"}, "tags": {"additionalProperties": {"type": "string"}, "description": "Tags are a map of key-value pairs that should be applied to the volume backup as tags.", "type": "object"}, "volume": {"description": "Volume is the name of the volume within the Pod to be backed up.", "type": "string"}}, "required": ["backupStorageLocation", "node", "pod", "repoIdentifier", "volume"], "type": "object"}, "status": {"description": "PodVolumeBackupStatus is the current status of a PodVolumeBackup.", "properties": {"completionTimestamp": {"description": "CompletionTimestamp records the time a backup was completed. Completion time is recorded even on failed backups. Completion time is recorded before uploading the backup object. The server's time is used for CompletionTimestamps", "format": "date-time", "nullable": true, "type": "string"}, "message": {"description": "Message is a message about the pod volume backup's status.", "type": "string"}, "path": {"description": "Path is the full path within the controller pod being backed up.", "type": "string"}, "phase": {"description": "Phase is the current state of the PodVolumeBackup.", "enum": ["New", "InProgress", "Completed", "Failed"], "type": "string"}, "progress": {"description": "Progress holds the total number of bytes of the volume and the current number of backed up bytes. This can be used to display progress information about the backup operation.", "properties": {"bytesDone": {"format": "int64", "type": "integer"}, "totalBytes": {"format": "int64", "type": "integer"}}, "type": "object"}, "snapshotID": {"description": "SnapshotID is the identifier for the snapshot of the pod volume.", "type": "string"}, "startTimestamp": {"description": "StartTimestamp records the time a backup was started. Separate from CreationTimestamp, since that value changes on restores. The server's time is used for StartTimestamps", "format": "date-time", "nullable": true, "type": "string"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/podvolumerestore-velero-v1.json b/schemas/v1.22.0/podvolumerestore-velero-v1.json deleted file mode 100644 index 4d891908..00000000 --- a/schemas/v1.22.0/podvolumerestore-velero-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "PodVolumeRestoreSpec is the specification for a PodVolumeRestore.", "properties": {"backupStorageLocation": {"description": "BackupStorageLocation is the name of the backup storage location where the restic repository is stored.", "type": "string"}, "pod": {"description": "Pod is a reference to the pod containing the volume to be restored.", "properties": {"apiVersion": {"description": "API version of the referent.", "type": "string"}, "fieldPath": {"description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.", "type": "string"}, "kind": {"description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}, "namespace": {"description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string"}, "resourceVersion": {"description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", "type": "string"}, "uid": {"description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string"}}, "type": "object"}, "repoIdentifier": {"description": "RepoIdentifier is the restic repository identifier.", "type": "string"}, "snapshotID": {"description": "SnapshotID is the ID of the volume snapshot to be restored.", "type": "string"}, "volume": {"description": "Volume is the name of the volume within the Pod to be restored.", "type": "string"}}, "required": ["backupStorageLocation", "pod", "repoIdentifier", "snapshotID", "volume"], "type": "object"}, "status": {"description": "PodVolumeRestoreStatus is the current status of a PodVolumeRestore.", "properties": {"completionTimestamp": {"description": "CompletionTimestamp records the time a restore was completed. Completion time is recorded even on failed restores. The server's time is used for CompletionTimestamps", "format": "date-time", "nullable": true, "type": "string"}, "message": {"description": "Message is a message about the pod volume restore's status.", "type": "string"}, "phase": {"description": "Phase is the current state of the PodVolumeRestore.", "enum": ["New", "InProgress", "Completed", "Failed"], "type": "string"}, "progress": {"description": "Progress holds the total number of bytes of the snapshot and the current number of restored bytes. This can be used to display progress information about the restore operation.", "properties": {"bytesDone": {"format": "int64", "type": "integer"}, "totalBytes": {"format": "int64", "type": "integer"}}, "type": "object"}, "startTimestamp": {"description": "StartTimestamp records the time a restore was started. The server's time is used for StartTimestamps", "format": "date-time", "nullable": true, "type": "string"}}, "type": "object"}}, "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/preoomkiller-preoomkiller-v1alpha1.json b/schemas/v1.22.0/preoomkiller-preoomkiller-v1alpha1.json deleted file mode 100644 index 520bca68..00000000 --- a/schemas/v1.22.0/preoomkiller-preoomkiller-v1alpha1.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "description": "PreOOMKiller is the Schema for the preoomkillers API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "PreOOMKillerSpec defines the desired state of PreOOMKiller", - "properties": { - "labelSelector": { - "description": "INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run \"operator-sdk generate k8s\" to regenerate code after modifying this file Add custom validation using kubebuilder tags: https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html", - "type": "string" - }, - "threshold": { - "properties": { - "cpu": { - "type": "string" - }, - "memory": { - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "labelSelector", - "threshold" - ], - "type": "object" - }, - "status": { - "description": "PreOOMKillerStatus defines the observed state of PreOOMKiller", - "type": "object" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/v1.22.0/probe-monitoring-v1.json b/schemas/v1.22.0/probe-monitoring-v1.json deleted file mode 100644 index d9f11b5b..00000000 --- a/schemas/v1.22.0/probe-monitoring-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "Probe defines monitoring for a set of static targets or ingresses.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "Specification of desired Ingress selection for target discovery by Prometheus.", "properties": {"authorization": {"description": "Authorization section for this endpoint", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerTokenSecret": {"description": "Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the probe and accessible by the Prometheus Operator.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "interval": {"description": "Interval at which targets are probed using the configured prober. If not specified Prometheus' global scrape interval is used.", "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", "type": "string"}, "jobName": {"description": "The job name assigned to scraped metrics by default.", "type": "string"}, "labelLimit": {"description": "Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.", "format": "int64", "type": "integer"}, "labelNameLengthLimit": {"description": "Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.", "format": "int64", "type": "integer"}, "labelValueLengthLimit": {"description": "Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.", "format": "int64", "type": "integer"}, "metricRelabelings": {"description": "MetricRelabelConfigs to apply to samples before ingestion.", "items": {"description": "RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs", "properties": {"action": {"default": "replace", "description": "Action to perform based on regex matching. Default is 'replace'", "enum": ["replace", "keep", "drop", "hashmod", "labelmap", "labeldrop", "labelkeep"], "type": "string"}, "modulus": {"description": "Modulus to take of the hash of the source label values.", "format": "int64", "type": "integer"}, "regex": {"description": "Regular expression against which the extracted value is matched. Default is '(.*)'", "type": "string"}, "replacement": {"description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'", "type": "string"}, "separator": {"description": "Separator placed between concatenated source label values. default is ';'.", "type": "string"}, "sourceLabels": {"description": "The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions.", "items": {"description": "LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", "type": "string"}, "type": "array"}, "targetLabel": {"description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.", "type": "string"}}, "type": "object"}, "type": "array"}, "module": {"description": "The module to use for probing specifying how to probe the target. Example module configuring in the blackbox exporter: https://github.com/prometheus/blackbox_exporter/blob/master/example.yml", "type": "string"}, "oauth2": {"description": "OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.", "properties": {"clientId": {"description": "The secret or configmap containing the OAuth2 client id", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "clientSecret": {"description": "The secret containing the OAuth2 client 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "endpointParams": {"additionalProperties": {"type": "string"}, "description": "Parameters to append to the token URL", "type": "object"}, "scopes": {"description": "OAuth2 scopes used for the token request", "items": {"type": "string"}, "type": "array"}, "tokenUrl": {"description": "The URL to fetch the token from", "minLength": 1, "type": "string"}}, "required": ["clientId", "clientSecret", "tokenUrl"], "type": "object"}, "prober": {"description": "Specification for the prober to use for probing targets. The prober.URL parameter is required. Targets cannot be probed if left empty.", "properties": {"path": {"description": "Path to collect metrics from. Defaults to `/probe`.", "type": "string"}, "proxyUrl": {"description": "Optional ProxyURL.", "type": "string"}, "scheme": {"description": "HTTP scheme to use for scraping. Defaults to `http`.", "type": "string"}, "url": {"description": "Mandatory URL of the prober.", "type": "string"}}, "required": ["url"], "type": "object"}, "sampleLimit": {"description": "SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.", "format": "int64", "type": "integer"}, "scrapeTimeout": {"description": "Timeout for scraping metrics from the Prometheus exporter. If not specified, the Prometheus global scrape interval is used.", "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", "type": "string"}, "targetLimit": {"description": "TargetLimit defines a limit on the number of scraped targets that will be accepted.", "format": "int64", "type": "integer"}, "targets": {"description": "Targets defines a set of static or dynamically discovered targets to probe.", "properties": {"ingress": {"description": "ingress defines the Ingress objects to probe and the relabeling configuration. If `staticConfig` is also defined, `staticConfig` takes precedence.", "properties": {"namespaceSelector": {"description": "From which namespaces to select Ingress objects.", "properties": {"any": {"description": "Boolean describing whether all namespaces are selected in contrast to a list restricting them.", "type": "boolean"}, "matchNames": {"description": "List of namespace names to select from.", "items": {"type": "string"}, "type": "array"}}, "type": "object"}, "relabelingConfigs": {"description": "RelabelConfigs to apply to the label set of the target before it gets scraped. The original ingress address is available via the `__tmp_prometheus_ingress_address` label. It can be used to customize the probed URL. The original scrape job's name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config", "items": {"description": "RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs", "properties": {"action": {"default": "replace", "description": "Action to perform based on regex matching. Default is 'replace'", "enum": ["replace", "keep", "drop", "hashmod", "labelmap", "labeldrop", "labelkeep"], "type": "string"}, "modulus": {"description": "Modulus to take of the hash of the source label values.", "format": "int64", "type": "integer"}, "regex": {"description": "Regular expression against which the extracted value is matched. Default is '(.*)'", "type": "string"}, "replacement": {"description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'", "type": "string"}, "separator": {"description": "Separator placed between concatenated source label values. default is ';'.", "type": "string"}, "sourceLabels": {"description": "The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions.", "items": {"description": "LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", "type": "string"}, "type": "array"}, "targetLabel": {"description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.", "type": "string"}}, "type": "object"}, "type": "array"}, "selector": {"description": "Selector to select the Ingress objects.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}}, "type": "object"}, "staticConfig": {"description": "staticConfig defines the static list of targets to probe and the relabeling configuration. If `ingress` is also defined, `staticConfig` takes precedence. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.", "properties": {"labels": {"additionalProperties": {"type": "string"}, "description": "Labels assigned to all metrics scraped from the targets.", "type": "object"}, "relabelingConfigs": {"description": "RelabelConfigs to apply to the label set of the targets before it gets scraped. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config", "items": {"description": "RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs", "properties": {"action": {"default": "replace", "description": "Action to perform based on regex matching. Default is 'replace'", "enum": ["replace", "keep", "drop", "hashmod", "labelmap", "labeldrop", "labelkeep"], "type": "string"}, "modulus": {"description": "Modulus to take of the hash of the source label values.", "format": "int64", "type": "integer"}, "regex": {"description": "Regular expression against which the extracted value is matched. Default is '(.*)'", "type": "string"}, "replacement": {"description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'", "type": "string"}, "separator": {"description": "Separator placed between concatenated source label values. default is ';'.", "type": "string"}, "sourceLabels": {"description": "The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions.", "items": {"description": "LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", "type": "string"}, "type": "array"}, "targetLabel": {"description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.", "type": "string"}}, "type": "object"}, "type": "array"}, "static": {"description": "The list of hosts to probe.", "items": {"type": "string"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "tlsConfig": {"description": "TLS configuration to use when scraping the endpoint.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "type": "object"}}, "required": ["spec"], "type": "object"} \ No newline at end of file diff --git a/schemas/v1.22.0/prometheus-monitoring-v1.json b/schemas/v1.22.0/prometheus-monitoring-v1.json deleted file mode 100644 index 9db0fd2a..00000000 --- a/schemas/v1.22.0/prometheus-monitoring-v1.json +++ /dev/null @@ -1 +0,0 @@ -{"description": "Prometheus defines a Prometheus deployment.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "Specification of the desired behavior of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": {"additionalAlertManagerConfigs": {"description": "AdditionalAlertManagerConfigs allows specifying a key of a Secret containing additional Prometheus AlertManager configurations. AlertManager configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config. As AlertManager configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "additionalAlertRelabelConfigs": {"description": "AdditionalAlertRelabelConfigs allows specifying a key of a Secret containing additional Prometheus alert relabel configurations. Alert relabel configurations specified are appended to the configurations generated by the Prometheus Operator. Alert relabel configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. As alert relabel configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel configs are going to break Prometheus after the upgrade.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "additionalScrapeConfigs": {"description": "AdditionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "affinity": {"description": "If specified, the pod's scheduling constraints.", "properties": {"nodeAffinity": {"description": "Describes node affinity scheduling rules for the pod.", "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": {"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": {"description": "A node selector term, associated with the corresponding weight.", "properties": {"matchExpressions": {"description": "A list of node selector requirements by node's labels.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "weight": {"description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["preference", "weight"], "type": "object"}, "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 an update), the system may or may not try to eventually evict the pod from its node.", "properties": {"nodeSelectorTerms": {"description": "Required. A list of node selector terms. The terms are ORed.", "items": {"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": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "matchFields": {"description": "A list of node selector requirements by node's fields.", "items": {"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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}}, "type": "object"}, "type": "array"}}, "required": ["nodeSelectorTerms"], "type": "object"}}, "type": "object"}, "podAffinity": {"description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}, "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)).", "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": {"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": {"podAffinityTerm": {"description": "Required. A pod affinity term, associated with the corresponding weight.", "properties": {"labelSelector": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "weight": {"description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer"}}, "required": ["podAffinityTerm", "weight"], "type": "object"}, "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": {"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": {"description": "A label query over a set of resources, in this case pods.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "namespaceSelector": {"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.", "properties": {"matchExpressions": {"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": {"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"}, "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"}}, "required": ["key", "operator"], "type": "object"}, "type": "array"}, "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"}}, "type": "object"}, "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"}, "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": ["topologyKey"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"}, "alerting": {"description": "Define details regarding alerting.", "properties": {"alertmanagers": {"description": "AlertmanagerEndpoints Prometheus should fire alerts against.", "items": {"description": "AlertmanagerEndpoints defines a selection of a single Endpoints object containing alertmanager IPs to fire alerts against.", "properties": {"apiVersion": {"description": "Version of the Alertmanager API that Prometheus uses to send alerts. It can be \"v1\" or \"v2\".", "type": "string"}, "authorization": {"description": "Authorization section for this alertmanager endpoint", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "bearerTokenFile": {"description": "BearerTokenFile to read from filesystem to use when authenticating to Alertmanager.", "type": "string"}, "name": {"description": "Name of Endpoints object in Namespace.", "type": "string"}, "namespace": {"description": "Namespace of Endpoints object.", "type": "string"}, "pathPrefix": {"description": "Prefix for the HTTP path alerts are pushed to.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Port the Alertmanager API is exposed on.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use when firing alerts.", "type": "string"}, "timeout": {"description": "Timeout is a per-target Alertmanager timeout when pushing alerts.", "type": "string"}, "tlsConfig": {"description": "TLS Config to use for alertmanager connection.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "caFile": {"description": "Path to the CA cert in the Prometheus container to use for the targets.", "type": "string"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "certFile": {"description": "Path to the client cert file in the Prometheus container for the targets.", "type": "string"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keyFile": {"description": "Path to the client key file in the Prometheus container for the targets.", "type": "string"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "required": ["name", "namespace", "port"], "type": "object"}, "type": "array"}}, "required": ["alertmanagers"], "type": "object"}, "allowOverlappingBlocks": {"description": "AllowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus. This is still experimental in Prometheus so it may change in any upcoming release.", "type": "boolean"}, "apiserverConfig": {"description": "APIServerConfig allows specifying a host and auth methods to access apiserver. If left empty, Prometheus is assumed to run inside of the cluster and will discover API servers automatically and use the pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.", "properties": {"authorization": {"description": "Authorization section for accessing apiserver", "properties": {"credentials": {"description": "The secret's key that contains the credentials of the request", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "credentialsFile": {"description": "File to read a secret from, mutually exclusive with Credentials (from SafeAuthorization)", "type": "string"}, "type": {"description": "Set the authentication type. Defaults to Bearer, Basic will cause an error", "type": "string"}}, "type": "object"}, "basicAuth": {"description": "BasicAuth allow an endpoint to authenticate over basic authentication", "properties": {"password": {"description": "The secret in the service monitor namespace that contains the password for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "username": {"description": "The secret in the service monitor namespace that contains the username for authentication.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "bearerToken": {"description": "Bearer token for accessing apiserver.", "type": "string"}, "bearerTokenFile": {"description": "File to read bearer token for accessing apiserver.", "type": "string"}, "host": {"description": "Host of apiserver. A valid string consisting of a hostname or IP followed by an optional port number", "type": "string"}, "tlsConfig": {"description": "TLS Config to use for accessing apiserver.", "properties": {"ca": {"description": "Struct containing the CA cert to use for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "caFile": {"description": "Path to the CA cert in the Prometheus container to use for the targets.", "type": "string"}, "cert": {"description": "Struct containing the client cert file for the targets.", "properties": {"configMap": {"description": "ConfigMap containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "secret": {"description": "Secret containing data to use for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}, "certFile": {"description": "Path to the client cert file in the Prometheus container for the targets.", "type": "string"}, "insecureSkipVerify": {"description": "Disable target certificate validation.", "type": "boolean"}, "keyFile": {"description": "Path to the client key file in the Prometheus container for the targets.", "type": "string"}, "keySecret": {"description": "Secret containing the client key file for the targets.", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "serverName": {"description": "Used to verify the hostname for the targets.", "type": "string"}}, "type": "object"}}, "required": ["host"], "type": "object"}, "arbitraryFSAccessThroughSMs": {"description": "ArbitraryFSAccessThroughSMs configures whether configuration based on a service monitor can access arbitrary files on the file system of the Prometheus container e.g. bearer token files.", "properties": {"deny": {"type": "boolean"}}, "type": "object"}, "baseImage": {"description": "Base image to use for a Prometheus deployment. Deprecated: use 'image' instead", "type": "string"}, "configMaps": {"description": "ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/.", "items": {"type": "string"}, "type": "array"}, "containers": {"description": "Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to a Prometheus pod or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `prometheus`, `config-reloader`, and `thanos-sidecar`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.", "items": {"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"}, "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"}, "env": {"description": "List of environment variables to set in the container. Cannot be updated.", "items": {"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"}, "valueFrom": {"description": "Source for the environment variable's value. Cannot be used if value is not empty.", "properties": {"configMapKeyRef": {"description": "Selects a key of 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "fieldRef": {"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.", "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"}}, "required": ["fieldPath"], "type": "object"}, "resourceFieldRef": {"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.", "properties": {"containerName": {"description": "Container name: required for volumes, optional for env vars", "type": "string"}, "divisor": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "resource": {"description": "Required: resource to select", "type": "string"}}, "required": ["resource"], "type": "object"}, "secretKeyRef": {"description": "Selects a key of a secret in the pod's namespace", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}}, "required": ["name"], "type": "object"}, "type": "array"}, "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": {"description": "EnvFromSource represents the source of a set of ConfigMaps", "properties": {"configMapRef": {"description": "The ConfigMap to select from", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap must be defined", "type": "boolean"}}, "type": "object"}, "prefix": {"description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", "type": "string"}, "secretRef": {"description": "The Secret to select from", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret must be defined", "type": "boolean"}}, "type": "object"}}, "type": "object"}, "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"}, "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": {"description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", "properties": {"postStart": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "tcpSocket": {"description": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}}, "type": "object"}, "preStop": {"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 Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). 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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "tcpSocket": {"description": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}}, "type": "object"}}, "type": "object"}, "livenessProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "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": {"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": {"default": "TCP", "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", "type": "string"}}, "required": ["containerPort"], "type": "object"}, "type": "array", "x-kubernetes-list-map-keys": ["containerPort", "protocol"], "x-kubernetes-list-type": "map"}, "readinessProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "resources": {"description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "properties": {"limits": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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"}, "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/", "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 Note that this field cannot be set when spec.os.name is windows.", "type": "boolean"}, "capabilities": {"description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.", "properties": {"add": {"description": "Added capabilities", "items": {"description": "Capability represent POSIX capabilities type", "type": "string"}, "type": "array"}, "drop": {"description": "Removed capabilities", "items": {"description": "Capability represent POSIX capabilities type", "type": "string"}, "type": "array"}}, "type": "object"}, "privileged": {"description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "type": "string"}, "readOnlyRootFilesystem": {"description": "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "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"}, "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. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer"}, "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. Note that this field cannot be set when spec.os.name is windows.", "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"}, "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"}}, "type": "object"}, "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. Note that this field cannot be set when spec.os.name is windows.", "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 Localhost - 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": ["type"], "type": "object"}, "windowsOptions": {"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. Note that this field cannot be set when spec.os.name is linux.", "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"}, "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"}}, "type": "object"}}, "type": "object"}, "startupProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "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": {"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"}}, "required": ["devicePath", "name"], "type": "object"}, "type": "array"}, "volumeMounts": {"description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", "items": {"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"}, "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"}, "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"}}, "required": ["mountPath", "name"], "type": "object"}, "type": "array"}, "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": ["name"], "type": "object"}, "type": "array"}, "disableCompaction": {"description": "Disable prometheus compaction.", "type": "boolean"}, "enableAdminAPI": {"description": "Enable access to prometheus web admin API. Defaults to the value of `false`. WARNING: Enabling the admin APIs enables mutating endpoints, to delete data, shutdown Prometheus, and more. Enabling this should be done with care and the user is advised to add additional authentication authorization via a proxy to ensure only clients authorized to perform these actions can do so. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis", "type": "boolean"}, "enableFeatures": {"description": "Enable access to Prometheus disabled features. By default, no features are enabled. Enabling disabled features is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice. For more information see https://prometheus.io/docs/prometheus/latest/disabled_features/", "items": {"type": "string"}, "type": "array"}, "enableRemoteWriteReceiver": {"description": "Enable Prometheus to be used as a receiver for the Prometheus remote write protocol. Defaults to the value of `false`. WARNING: This is not considered an efficient way of ingesting samples. Use it with caution for specific low-volume use cases. It is not suitable for replacing the ingestion via scraping and turning Prometheus into a push-based metrics collection system. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver Only valid in Prometheus versions 2.33.0 and newer.", "type": "boolean"}, "enforcedBodySizeLimit": {"description": "EnforcedBodySizeLimit defines the maximum size of uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail. Example: 100MB. If defined, the limit will apply to all service/pod monitors and probes. This is an experimental feature, this behaviour could change or be removed in the future. Only valid in Prometheus versions 2.28.0 and newer.", "pattern": "(^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$", "type": "string"}, "enforcedLabelLimit": {"description": "Per-scrape limit on number of labels that will be accepted for a sample. If more than this number of labels are present post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus versions 2.27.0 and newer.", "format": "int64", "type": "integer"}, "enforcedLabelNameLengthLimit": {"description": "Per-scrape limit on length of labels name that will be accepted for a sample. If a label name is longer than this number post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus versions 2.27.0 and newer.", "format": "int64", "type": "integer"}, "enforcedLabelValueLengthLimit": {"description": "Per-scrape limit on length of labels value that will be accepted for a sample. If a label value is longer than this number post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus versions 2.27.0 and newer.", "format": "int64", "type": "integer"}, "enforcedNamespaceLabel": {"description": "EnforcedNamespaceLabel If set, a label will be added to \n 1. all user-metrics (created by `ServiceMonitor`, `PodMonitor` and `Probe` objects) and 2. in all `PrometheusRule` objects (except the ones excluded in `prometheusRulesExcludedFromEnforce`) to * alerting & recording rules and * the metrics used in their expressions (`expr`). \n Label name is this field's value. Label value is the namespace of the created object (mentioned above).", "type": "string"}, "enforcedSampleLimit": {"description": "EnforcedSampleLimit defines global limit on number of scraped samples that will be accepted. This overrides any SampleLimit set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the SampleLimit to keep overall number of samples/series under the desired limit. Note that if SampleLimit is lower that value will be taken instead.", "format": "int64", "type": "integer"}, "enforcedTargetLimit": {"description": "EnforcedTargetLimit defines a global limit on the number of scraped targets. This overrides any TargetLimit set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the TargetLimit to keep the overall number of targets under the desired limit. Note that if TargetLimit is lower, that value will be taken instead, except if either value is zero, in which case the non-zero value will be used. If both values are zero, no limit is enforced.", "format": "int64", "type": "integer"}, "evaluationInterval": {"default": "30s", "description": "Interval between consecutive evaluations. Default: `30s`", "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", "type": "string"}, "excludedFromEnforcement": {"description": "List of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin. Applies only if enforcedNamespaceLabel set to true.", "items": {"description": "ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.", "properties": {"group": {"default": "monitoring.coreos.com", "description": "Group of the referent. When not specified, it defaults to `monitoring.coreos.com`", "enum": ["monitoring.coreos.com"], "type": "string"}, "name": {"description": "Name of the referent. When not set, all resources are matched.", "type": "string"}, "namespace": {"description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "minLength": 1, "type": "string"}, "resource": {"description": "Resource of the referent.", "enum": ["prometheusrules", "servicemonitors", "podmonitors", "probes"], "type": "string"}}, "required": ["namespace", "resource"], "type": "object"}, "type": "array"}, "externalLabels": {"additionalProperties": {"type": "string"}, "description": "The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager).", "type": "object"}, "externalUrl": {"description": "The external URL the Prometheus instances will be available under. This is necessary to generate correct URLs. This is necessary if Prometheus is not served from root of a DNS name.", "type": "string"}, "ignoreNamespaceSelectors": {"description": "IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from all PodMonitor, ServiceMonitor and Probe objects. They will only discover endpoints within their current namespace. Defaults to false.", "type": "boolean"}, "image": {"description": "Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Prometheus is being configured.", "type": "string"}, "imagePullSecrets": {"description": "An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod", "items": {"description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}}, "type": "object"}, "type": "array"}, "initContainers": {"description": "InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch. The current init container name is: `init-config-reloader`. Overriding init containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.", "items": {"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"}, "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"}, "env": {"description": "List of environment variables to set in the container. Cannot be updated.", "items": {"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"}, "valueFrom": {"description": "Source for the environment variable's value. Cannot be used if value is not empty.", "properties": {"configMapKeyRef": {"description": "Selects a key of 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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}, "fieldRef": {"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.", "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"}}, "required": ["fieldPath"], "type": "object"}, "resourceFieldRef": {"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.", "properties": {"containerName": {"description": "Container name: required for volumes, optional for env vars", "type": "string"}, "divisor": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "resource": {"description": "Required: resource to select", "type": "string"}}, "required": ["resource"], "type": "object"}, "secretKeyRef": {"description": "Selects a key of a secret in the pod's namespace", "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 TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret or its key must be defined", "type": "boolean"}}, "required": ["key"], "type": "object"}}, "type": "object"}}, "required": ["name"], "type": "object"}, "type": "array"}, "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": {"description": "EnvFromSource represents the source of a set of ConfigMaps", "properties": {"configMapRef": {"description": "The ConfigMap to select from", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the ConfigMap must be defined", "type": "boolean"}}, "type": "object"}, "prefix": {"description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", "type": "string"}, "secretRef": {"description": "The Secret to select from", "properties": {"name": {"description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?", "type": "string"}, "optional": {"description": "Specify whether the Secret must be defined", "type": "boolean"}}, "type": "object"}}, "type": "object"}, "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"}, "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": {"description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", "properties": {"postStart": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "tcpSocket": {"description": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}}, "type": "object"}, "preStop": {"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 Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). 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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "tcpSocket": {"description": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}}, "type": "object"}}, "type": "object"}, "livenessProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "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": {"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": {"default": "TCP", "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", "type": "string"}}, "required": ["containerPort"], "type": "object"}, "type": "array", "x-kubernetes-list-map-keys": ["containerPort", "protocol"], "x-kubernetes-list-type": "map"}, "readinessProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "resources": {"description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "properties": {"limits": {"additionalProperties": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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": {"anyOf": [{"type": "integer"}, {"type": "string"}], "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", "x-kubernetes-int-or-string": true}, "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"}, "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/", "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 Note that this field cannot be set when spec.os.name is windows.", "type": "boolean"}, "capabilities": {"description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.", "properties": {"add": {"description": "Added capabilities", "items": {"description": "Capability represent POSIX capabilities type", "type": "string"}, "type": "array"}, "drop": {"description": "Removed capabilities", "items": {"description": "Capability represent POSIX capabilities type", "type": "string"}, "type": "array"}}, "type": "object"}, "privileged": {"description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "type": "string"}, "readOnlyRootFilesystem": {"description": "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.", "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. Note that this field cannot be set when spec.os.name is windows.", "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"}, "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. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer"}, "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. Note that this field cannot be set when spec.os.name is windows.", "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"}, "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"}}, "type": "object"}, "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. Note that this field cannot be set when spec.os.name is windows.", "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 Localhost - 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": ["type"], "type": "object"}, "windowsOptions": {"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. Note that this field cannot be set when spec.os.name is linux.", "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"}, "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"}}, "type": "object"}}, "type": "object"}, "startupProbe": {"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", "properties": {"exec": {"description": "Exec specifies the action to take.", "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": "object"}, "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"}, "grpc": {"description": "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.", "properties": {"port": {"description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer"}, "service": {"description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC.", "type": "string"}}, "required": ["port"], "type": "object"}, "httpGet": {"description": "HTTPGet specifies the http request to perform.", "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": {"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"}}, "required": ["name", "value"], "type": "object"}, "type": "array"}, "path": {"description": "Path to access on the HTTP server.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}, "scheme": {"description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string"}}, "required": ["port"], "type": "object"}, "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": {"description": "TCPSocket specifies an action involving a TCP port.", "properties": {"host": {"description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string"}, "port": {"anyOf": [{"type": "integer"}, {"type": "string"}], "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.", "x-kubernetes-int-or-string": true}}, "required": ["port"], "type": "object"}, "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"}, "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": {"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"}}, "required": ["devicePath", "name"], "type": "object"}, "type": "array"}, "volumeMounts": {"description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", "items": {"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"}, "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"}, "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"}}, "required": ["mountPath", "name"], "type": "object"}, "type": "array"}, "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": ["name"], "type": "object"}, "type": "array"}, "listenLocal": {"description": "ListenLocal makes the Prometheus server listen on loopback, so that it does not bind against the Pod IP.", "type": "boolean"}, "logFormat": {"description": "Log format for Prometheus to be configured with.", "enum": ["", "logfmt", "json"], "type": "string"}, "logLevel": {"description": "Log level for Prometheus to be configured with.", "enum": ["", "debug", "info", "warn", "error"], "type": "string"}, "minReadySeconds": {"description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate.", "format": "int32", "type": "integer"}, "nodeSelector": {"additionalProperties": {"type": "string"}, "description": "Define which Nodes the Pods are scheduled on.", "type": "object"}, "overrideHonorLabels": {"description": "When true, Prometheus resolves label conflicts by renaming the labels in the scraped data to \"exported_