From 71cfcca753186304cfc39bc602d77358e7ad12ab Mon Sep 17 00:00:00 2001 From: Jesse Suen Date: Wed, 9 Oct 2019 16:21:01 -0700 Subject: [PATCH 1/3] Implement argo rollouts kubectl plugin --- Gopkg.lock | 212 +- Gopkg.toml | 19 + Makefile | 13 +- cmd/kubectl-argo-rollouts/main.go | 23 + manifests/crds/analysis-run-crd.yaml | 1 - manifests/install.yaml | 6059 ++++++++++++----- manifests/namespace-install.yaml | 6059 ++++++++++++----- pkg/apis/rollouts/v1alpha1/analysis_types.go | 2 +- .../rollouts/v1alpha1/openapi_generated.go | 2 +- pkg/kubectl-argo-rollouts/cmd/cmd.go | 37 + pkg/kubectl-argo-rollouts/cmd/cmd_test.go | 23 + pkg/kubectl-argo-rollouts/cmd/pause/pause.go | 44 + .../cmd/pause/pause_test.go | 75 + .../cmd/resume/resume.go | 43 + .../cmd/resume/resume_test.go | 78 + .../cmd/version/version.go | 43 + .../cmd/version/version_test.go | 33 + .../options/fake/fakeoptions.go | 20 + pkg/kubectl-argo-rollouts/options/options.go | 117 + .../options/options_test.go | 90 + utils/version/version.go | 65 + 21 files changed, 9728 insertions(+), 3330 deletions(-) create mode 100644 cmd/kubectl-argo-rollouts/main.go create mode 100644 pkg/kubectl-argo-rollouts/cmd/cmd.go create mode 100644 pkg/kubectl-argo-rollouts/cmd/cmd_test.go create mode 100644 pkg/kubectl-argo-rollouts/cmd/pause/pause.go create mode 100644 pkg/kubectl-argo-rollouts/cmd/pause/pause_test.go create mode 100644 pkg/kubectl-argo-rollouts/cmd/resume/resume.go create mode 100644 pkg/kubectl-argo-rollouts/cmd/resume/resume_test.go create mode 100644 pkg/kubectl-argo-rollouts/cmd/version/version.go create mode 100644 pkg/kubectl-argo-rollouts/cmd/version/version_test.go create mode 100644 pkg/kubectl-argo-rollouts/options/fake/fakeoptions.go create mode 100644 pkg/kubectl-argo-rollouts/options/options.go create mode 100644 pkg/kubectl-argo-rollouts/options/options_test.go create mode 100644 utils/version/version.go diff --git a/Gopkg.lock b/Gopkg.lock index 578f53fa37..e39c7f3059 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -9,6 +9,25 @@ revision = "74b12019e2aa53ec27882158f59192d7cd6d1998" version = "v0.33.1" +[[projects]] + branch = "master" + digest = "1:6978a38432a017763a148afbc7ce6491734b54292af7d3e969d84d2e9dd242e2" + name = "github.com/Azure/go-ansiterm" + packages = [ + ".", + "winterm", + ] + pruneopts = "" + revision = "d6e3b3328b783f23731bc4d058875b0371ff8109" + +[[projects]] + digest = "1:63e57618d792cccb87ad7cb8a0602e6205732beb3b01b0ea858fc4a5fd3ce8f1" + name = "github.com/MakeNowJust/heredoc" + packages = ["."] + pruneopts = "" + revision = "efb6ca8de9d5385c3963279701760e37637cf238" + version = "v2.0.1" + [[projects]] digest = "1:8e47871087b94913898333f37af26732faaab30cdb41571136cf7aec9921dae7" name = "github.com/PuerkitoBio/purell" @@ -87,6 +106,27 @@ pruneopts = "" revision = "aa985ba8897a426e5db31b36cd8cca83cf85cead" +[[projects]] + digest = "1:50a4629dd29d90473be834b7d6c502f310a269f06f31c069a8c6e2b4274a14b3" + name = "github.com/docker/docker" + packages = [ + "pkg/term", + "pkg/term/windows", + ] + pruneopts = "" + revision = "be7ac8be2ae072032a4005e8f232be3fc57e4127" + +[[projects]] + branch = "master" + digest = "1:d6c13a378213e3de60445e49084b8a0a9ce582776dfc77927775dbeb3ff72a35" + name = "github.com/docker/spdystream" + packages = [ + ".", + "spdy", + ] + pruneopts = "" + revision = "6480d4af844c189cf5dd913db24ddd339d3a4f85" + [[projects]] digest = "1:8a34d7a37b8f07239487752e14a5faafcbbc718fc385ad429a2c4ac6f27a207f" name = "github.com/emicklei/go-restful" @@ -106,6 +146,14 @@ revision = "afac545df32f2287a079e2dfb7ba2745a643747e" version = "v3.0.0" +[[projects]] + branch = "master" + digest = "1:549f95037fea25e00a5341ac6a169a5b3e5306be107f45260440107b779b74f9" + name = "github.com/exponent-io/jsonpath" + packages = ["."] + pruneopts = "" + revision = "d6023ce2651d8eafb5c75bb0c7167536102ec9f5" + [[projects]] digest = "1:b13707423743d41665fd23f0c36b2f37bb49c30e94adb813319c44188a51ba22" name = "github.com/ghodss/yaml" @@ -179,6 +227,14 @@ revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" version = "v1.2.0" +[[projects]] + digest = "1:1e5b1e14524ed08301977b7b8e10c719ed853cbf3f24ecb66fae783a46f207a6" + name = "github.com/google/btree" + packages = ["."] + pruneopts = "" + revision = "4030bb1f1f0c35b30ca7009e9ebd06849dd45306" + version = "v1.0.0" + [[projects]] digest = "1:9fcb267c272bc5054564b392e3ff7e65e35400fd9914afb1d169f92b95e7dbc9" name = "github.com/google/go-cmp" @@ -221,6 +277,17 @@ revision = "7c663266750e7d82587642f65e60bc4083f1f84e" version = "v0.2.0" +[[projects]] + branch = "master" + digest = "1:e1fd67b5695fb12f54f979606c5d650a5aa72ef242f8e71072bfd4f7b5a141a0" + name = "github.com/gregjones/httpcache" + packages = [ + ".", + "diskcache", + ] + pruneopts = "" + revision = "901d90724c7919163f472a9812253fb26761123d" + [[projects]] digest = "1:3313a63031ae281e5f6fd7b0bbca733dfa04d2429df86519e3b4d4c016ccb836" name = "github.com/hashicorp/golang-lru" @@ -284,6 +351,14 @@ revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c" version = "v1.0.1" +[[projects]] + digest = "1:713b341855f1480e4baca1e7c5434e1d266441340685ecbde32d59bdc065fb3f" + name = "github.com/mitchellh/go-wordwrap" + packages = ["."] + pruneopts = "" + revision = "9e67c67572bc5dd02aef930e2b0ae3c02a4b5a5c" + version = "v1.0.0" + [[projects]] digest = "1:0c0ff2a89c1bb0d01887e1dac043ad7efbf3ec77482ef058ac423d13497e16fd" name = "github.com/modern-go/concurrent" @@ -308,6 +383,22 @@ revision = "279bed98673dd5bef374d3b6e4b09e2af76183bf" version = "v1.0.0-rc1" +[[projects]] + branch = "master" + digest = "1:5f0faa008e8ff4221b55a1a5057c8b02cb2fd68da6a65c9e31c82b72cbc836d0" + name = "github.com/petar/GoLLRB" + packages = ["llrb"] + pruneopts = "" + revision = "33fb24c13b99c46c93183c291836c573ac382536" + +[[projects]] + digest = "1:4709c61d984ef9ba99b037b047546d8a576ae984fb49486e48d99658aa750cd5" + name = "github.com/peterbourgon/diskv" + packages = ["."] + pruneopts = "" + revision = "0be1b92a6df0e4f5cb0a5d15fb7f643d0ad93ce6" + version = "v3.0.0" + [[projects]] digest = "1:1d7e1867c49a6dd9856598ef7c3123604ea3daabf5b83f303ff457bcbc410b1d" name = "github.com/pkg/errors" @@ -372,6 +463,14 @@ pruneopts = "" revision = "55ae3d9d557340b5bc24cd8aa5f6fa2c2ab31352" +[[projects]] + digest = "1:2761e287c811d0948d47d0252b82281eca3801eb3c9d5f9530956643d5b9f430" + name = "github.com/russross/blackfriday" + packages = ["."] + pruneopts = "" + revision = "05f3235734ad95d0016f6a23902f06461fcf567a" + version = "v1.5.2" + [[projects]] digest = "1:9a3c631555e0351fdc4e696577bb63afd90c399d782a8462dba9d100d7021db3" name = "github.com/sirupsen/logrus" @@ -381,12 +480,12 @@ version = "v1.3.0" [[projects]] - digest = "1:a1403cc8a94b8d7956ee5e9694badef0e7b051af289caad1cf668331e3ffa4f6" + digest = "1:0c63b3c7ad6d825a898f28cb854252a3b29d37700c68a117a977263f5ec94efe" name = "github.com/spf13/cobra" packages = ["."] pruneopts = "" - revision = "ef82de70bb3f60c65fb8eebacbb2d122ef517385" - version = "v0.0.3" + revision = "f2b07da1e2c38d5f12845a4f607e2e1018cbb1f5" + version = "v0.0.5" [[projects]] digest = "1:cbaf13cdbfef0e4734ed8a7504f57fe893d471d62a35b982bf6fb3f036449a66" @@ -490,12 +589,18 @@ packages = [ "collate", "collate/build", + "encoding", + "encoding/internal", + "encoding/internal/identifier", + "encoding/unicode", "internal/colltab", "internal/gen", "internal/tag", "internal/triegen", "internal/ucd", + "internal/utf8internal", "language", + "runes", "secure/bidirule", "transform", "unicode/bidi", @@ -582,6 +687,8 @@ digest = "1:5e5cfbab57ea5444c1eb295a39fdc403f097f5ace592c829db7b3e0e3ea66903" name = "k8s.io/api" packages = [ + "admission/v1", + "admission/v1beta1", "admissionregistration/v1", "admissionregistration/v1beta1", "apps/v1", @@ -605,6 +712,7 @@ "discovery/v1alpha1", "events/v1beta1", "extensions/v1beta1", + "imagepolicy/v1alpha1", "networking/v1", "networking/v1beta1", "node/v1alpha1", @@ -644,11 +752,13 @@ "pkg/api/equality", "pkg/api/errors", "pkg/api/meta", + "pkg/api/meta/testrestmapper", "pkg/api/resource", "pkg/api/validation", "pkg/apis/meta/internalversion", "pkg/apis/meta/v1", "pkg/apis/meta/v1/unstructured", + "pkg/apis/meta/v1/unstructured/unstructuredscheme", "pkg/apis/meta/v1/validation", "pkg/apis/meta/v1beta1", "pkg/conversion", @@ -670,12 +780,15 @@ "pkg/util/diff", "pkg/util/errors", "pkg/util/framer", + "pkg/util/httpstream", + "pkg/util/httpstream/spdy", "pkg/util/intstr", "pkg/util/json", "pkg/util/mergepatch", "pkg/util/naming", "pkg/util/net", "pkg/util/rand", + "pkg/util/remotecommand", "pkg/util/runtime", "pkg/util/sets", "pkg/util/strategicpatch", @@ -688,6 +801,7 @@ "pkg/version", "pkg/watch", "third_party/forked/golang/json", + "third_party/forked/golang/netutil", "third_party/forked/golang/reflect", ] pruneopts = "" @@ -708,13 +822,37 @@ pruneopts = "" revision = "3fdfe2c6555525ae54a58d22cd7f014a25ce749d" +[[projects]] + branch = "release-1.16" + digest = "1:b46a88b317c3187b6fa7c5351eca48b35aad182eee371168677747430ff955bb" + name = "k8s.io/cli-runtime" + packages = [ + "pkg/genericclioptions", + "pkg/kustomize", + "pkg/kustomize/k8sdeps", + "pkg/kustomize/k8sdeps/configmapandsecret", + "pkg/kustomize/k8sdeps/kunstruct", + "pkg/kustomize/k8sdeps/kv", + "pkg/kustomize/k8sdeps/transformer", + "pkg/kustomize/k8sdeps/transformer/hash", + "pkg/kustomize/k8sdeps/transformer/patch", + "pkg/kustomize/k8sdeps/validator", + "pkg/printers", + "pkg/resource", + ] + pruneopts = "" + revision = "6bff60de437070d7e8644b7a930837d5de512240" + [[projects]] branch = "release-13.0" digest = "1:9e7a28fb6a57b9eb2e7730a2d152a5618a0e913415a13bca76607e799d39fd85" name = "k8s.io/client-go" packages = [ "discovery", + "discovery/cached/disk", "discovery/fake", + "dynamic", + "dynamic/fake", "informers", "informers/admissionregistration", "informers/admissionregistration/v1", @@ -893,7 +1031,17 @@ "plugin/pkg/client/auth/gcp", "plugin/pkg/client/auth/oidc", "rest", + "rest/fake", "rest/watch", + "restmapper", + "scale", + "scale/scheme", + "scale/scheme/appsint", + "scale/scheme/appsv1beta1", + "scale/scheme/appsv1beta2", + "scale/scheme/autoscalingv1", + "scale/scheme/extensionsint", + "scale/scheme/extensionsv1beta1", "testing", "third_party/forked/golang/template", "tools/auth", @@ -907,10 +1055,13 @@ "tools/record", "tools/record/util", "tools/reference", + "tools/remotecommand", "tools/watch", "transport", + "transport/spdy", "util/cert", "util/connrotation", + "util/exec", "util/flowcontrol", "util/homedir", "util/jsonpath", @@ -997,11 +1148,33 @@ "pkg/generators", "pkg/generators/rules", "pkg/util/proto", + "pkg/util/proto/testing", + "pkg/util/proto/validation", "pkg/util/sets", ] pruneopts = "" revision = "0317810137be915b9cf888946c6e115c1bfac693" +[[projects]] + branch = "release-1.16" + digest = "1:687af22932f9b53ff2e6755b2eefe160f076d522794abb980f0ddb187bcefacd" + name = "k8s.io/kubectl" + packages = [ + "pkg/cmd/testing", + "pkg/cmd/util", + "pkg/scheme", + "pkg/util/interrupt", + "pkg/util/openapi", + "pkg/util/openapi/testing", + "pkg/util/openapi/validation", + "pkg/util/templates", + "pkg/util/term", + "pkg/validation", + "pkg/version", + ] + pruneopts = "" + revision = "14647fd13a8b4cffc5a8f327b0018e037f72e4e8" + [[projects]] branch = "release-1.16" digest = "1:985440fa37318b73e722b1d50d75635e08e2ed76aac87e7362fadcad4a9d8fa3" @@ -1060,6 +1233,37 @@ pruneopts = "" revision = "69764acb6e8e900b7c05296c5d3c9c19545475f9" +[[projects]] + digest = "1:0b2daace3dcced8712072529b621360cf520f3c2ead92d755f35a0ec8dca2714" + name = "sigs.k8s.io/kustomize" + packages = [ + "pkg/commands/build", + "pkg/constants", + "pkg/expansion", + "pkg/factory", + "pkg/fs", + "pkg/git", + "pkg/gvk", + "pkg/ifc", + "pkg/ifc/transformer", + "pkg/image", + "pkg/internal/error", + "pkg/loader", + "pkg/patch", + "pkg/patch/transformer", + "pkg/resid", + "pkg/resmap", + "pkg/resource", + "pkg/target", + "pkg/transformers", + "pkg/transformers/config", + "pkg/transformers/config/defaultconfig", + "pkg/types", + ] + pruneopts = "" + revision = "a6f65144121d1955266b0cd836ce954c04122dc8" + version = "v2.0.3" + [[projects]] digest = "1:321081b4a44256715f2b68411d8eda9a17f17ebfe6f0cc61d2cc52d11c08acfa" name = "sigs.k8s.io/yaml" @@ -1111,6 +1315,7 @@ "k8s.io/apimachinery/pkg/util/wait", "k8s.io/apimachinery/pkg/watch", "k8s.io/apiserver/pkg/storage/names", + "k8s.io/cli-runtime/pkg/genericclioptions", "k8s.io/client-go/discovery", "k8s.io/client-go/discovery/fake", "k8s.io/client-go/informers", @@ -1137,6 +1342,7 @@ "k8s.io/klog", "k8s.io/kube-openapi/cmd/openapi-gen", "k8s.io/kube-openapi/pkg/common", + "k8s.io/kubectl/pkg/cmd/testing", "k8s.io/kubernetes/cmd/kubeadm/app/util", "k8s.io/kubernetes/pkg/apis/core/v1", "k8s.io/kubernetes/pkg/controller", diff --git a/Gopkg.toml b/Gopkg.toml index eeec132a75..ccc7033153 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -33,6 +33,25 @@ required = [ name = "k8s.io/apiextensions-apiserver" branch = "release-1.16" +[[constraint]] + name = "k8s.io/cli-runtime" + branch = "release-1.16" + +[[constraint]] + name = "k8s.io/kubectl" + branch = "release-1.16" + [[constraint]] name = "github.com/bouk/monkey" version = "1.0.0" + +# vendor/k8s.io/kubectl/pkg/util/term/resize.go:30:23: undefined: term.GetFdInfo +[[override]] + name = "github.com/docker/docker" + revision = "be7ac8be2ae072032a4005e8f232be3fc57e4127" + +# vendor/k8s.io/kubectl/pkg/util/templates/markdown.go:66:11: undefined: blackfriday.LIST_ITEM_BEGINNING_OF_LIST +[[override]] + name = "github.com/russross/blackfriday" + version = "v1.5.2" + diff --git a/Makefile b/Makefile index b4d3c5bf72..cc9891dbb2 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ PACKAGE=github.com/argoproj/argo-rollouts CURRENT_DIR=$(shell pwd) DIST_DIR=${CURRENT_DIR}/dist +PLUGIN_CLI_NAME?=kubectl-argo-rollouts VERSION=$(shell cat ${CURRENT_DIR}/VERSION) BUILD_DATE=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') @@ -12,10 +13,10 @@ GIT_TREE_STATE=$(shell if [ -z "`git status --porcelain`" ]; then echo "clean" ; DEV_IMAGE=false override LDFLAGS += \ - -X ${PACKAGE}.version=${VERSION} \ - -X ${PACKAGE}.buildDate=${BUILD_DATE} \ - -X ${PACKAGE}.gitCommit=${GIT_COMMIT} \ - -X ${PACKAGE}.gitTreeState=${GIT_TREE_STATE} + -X ${PACKAGE}/utils/version.version=${VERSION} \ + -X ${PACKAGE}/utils/version.buildDate=${BUILD_DATE} \ + -X ${PACKAGE}/utils/version.gitCommit=${GIT_COMMIT} \ + -X ${PACKAGE}/utils/version.gitTreeState=${GIT_TREE_STATE} # docker image publishing options DOCKER_PUSH=false @@ -54,6 +55,10 @@ codegen: mocks controller: clean-debug CGO_ENABLED=0 go build -v -i -ldflags '${LDFLAGS}' -o ${DIST_DIR}/rollouts-controller ./cmd/rollouts-controller +.PHONY: plugin +plugin: + CGO_ENABLED=0 go build -v -i -ldflags '${LDFLAGS}' -o ${DIST_DIR}/${PLUGIN_CLI_NAME} ./cmd/kubectl-argo-rollouts + .PHONY: builder-image builder-image: docker build -t $(IMAGE_PREFIX)argo-rollouts-ci-builder:$(IMAGE_TAG) --target builder . diff --git a/cmd/kubectl-argo-rollouts/main.go b/cmd/kubectl-argo-rollouts/main.go new file mode 100644 index 0000000000..98f2250785 --- /dev/null +++ b/cmd/kubectl-argo-rollouts/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "os" + + "k8s.io/cli-runtime/pkg/genericclioptions" + _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" + _ "k8s.io/client-go/plugin/pkg/client/auth/oidc" + "k8s.io/klog" + + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" +) + +func main() { + klog.InitFlags(nil) + streams := genericclioptions.IOStreams{In: os.Stdin, Out: os.Stdout, ErrOut: os.Stderr} + o := options.NewArgoRolloutsOptions(streams) + root := cmd.NewCmdArgoRollouts(o) + if err := root.Execute(); err != nil { + os.Exit(1) + } +} diff --git a/manifests/crds/analysis-run-crd.yaml b/manifests/crds/analysis-run-crd.yaml index a4d9575ed8..a305a6506d 100644 --- a/manifests/crds/analysis-run-crd.yaml +++ b/manifests/crds/analysis-run-crd.yaml @@ -2577,7 +2577,6 @@ spec: value: type: string required: - - message - status type: object type: array diff --git a/manifests/install.yaml b/manifests/install.yaml index 1fa6d82aa3..e523cf6e93 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -705,15 +705,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -755,6 +746,78 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean @@ -828,33 +891,7 @@ spec: type: string enableServiceLinks: type: boolean - hostAliases: - items: - properties: - hostnames: - items: - type: string - type: array - ip: - type: string - type: object - type: array - hostIPC: - type: boolean - hostNetwork: - type: boolean - hostPID: - type: boolean - hostname: - type: string - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: + ephemeralContainers: items: properties: args: @@ -1193,15 +1230,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -1243,11 +1271,85 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean stdinOnce: type: boolean + targetContainerName: + type: string terminationMessagePath: type: string terminationMessagePolicy: @@ -1292,553 +1394,1134 @@ spec: - name type: object type: array - nodeName: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessGates: + hostAliases: items: properties: - conditionType: + hostnames: + items: + type: string + type: array + ip: type: string - required: - - conditionType type: object type: array - restartPolicy: - type: string - runtimeClassName: - type: string - schedulerName: + hostIPC: + type: boolean + hostNetwork: + type: boolean + hostPID: + type: boolean + hostname: type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + initContainers: + items: + properties: + args: + items: type: string - user: + type: array + command: + items: type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - serviceAccountName: - type: string - shareProcessNamespace: - type: boolean - subdomain: - type: string - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: type: string - tolerationSeconds: - format: int64 - type: integer - value: + imagePullPolicy: type: string - type: object - type: array - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: + lifecycle: properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: + postStart: properties: - name: - type: string + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object type: object - volumeID: - type: string - required: - - volumeID - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: + preStop: properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object type: object - required: - - driver - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string type: object - fc: + livenessProbe: properties: - fsType: - type: string - lun: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: format: int32 type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: + httpGet: properties: - name: + host: type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: + initialDelaySeconds: format: int32 type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: + periodSeconds: format: int32 type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - name: + host: type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal + timeoutSeconds: + format: int32 + type: integer type: object name: type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + readinessProbe: properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: format: int32 type: integer - sources: - items: - properties: - serviceAccountToken: + httpGet: + properties: + host: + type: string + httpHeaders: + items: properties: - audience: + name: type: string - expirationSeconds: - format: int64 - type: integer - path: + value: type: string required: - - path + - name + - value type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - name: + host: type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - user: - type: string - required: - - image - - monitors + timeoutSeconds: + format: int32 + type: integer type: object - scaleIO: + resources: + type: object + securityContext: properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: + allowPrivilegeEscalation: type: boolean - secretRef: + capabilities: properties: - name: - type: string + add: + items: + type: string + type: array + drop: + items: + type: string + type: array type: object - sslEnabled: + privileged: type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - storageos: - properties: - fsType: + procMount: type: string - readOnly: + readOnlyRootFilesystem: type: boolean - secretRef: + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - name: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: type: string type: object - volumeName: - type: string - volumeNamespace: - type: string type: object - vsphereVolume: + startupProbe: properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - containers - type: object - type: object - ttlSecondsAfterFinished: - format: int32 - type: integer - required: - - template - type: object - required: - - spec - type: object - prometheus: - properties: - query: - type: string - server: - type: string - type: object - type: object - successCondition: - type: string - required: - - name - - provider - type: object - type: array - required: - - metrics - type: object - arguments: - items: - properties: - name: - type: string - value: - type: string + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + overhead: + additionalProperties: + type: string + type: object + preemptionPolicy: + type: string + priority: + format: int32 + type: integer + priorityClassName: + type: string + readinessGates: + items: + properties: + conditionType: + type: string + required: + - conditionType + type: object + type: array + restartPolicy: + type: string + runtimeClassName: + type: string + schedulerName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + serviceAccountName: + type: string + shareProcessNamespace: + type: boolean + subdomain: + type: string + terminationGracePeriodSeconds: + format: int64 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + 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 + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + required: + - volumeID + type: object + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + type: string + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + required: + - containers + type: object + type: object + ttlSecondsAfterFinished: + format: int32 + type: integer + required: + - template + type: object + required: + - spec + type: object + prometheus: + properties: + query: + type: string + server: + type: string + type: object + type: object + successCondition: + type: string + required: + - name + - provider + type: object + type: array + required: + - metrics + type: object + arguments: + items: + properties: + name: + type: string + value: + type: string required: - name - value @@ -1895,7 +2578,6 @@ spec: value: type: string required: - - message - status type: object type: array @@ -2035,264 +2717,789 @@ spec: preferredDuringSchedulingIgnoredDuringExecution: items: properties: - preference: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + automountServiceAccountToken: + type: boolean + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - weight: - format: int32 - type: integer - required: - - preference - - weight type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + preStop: + properties: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port type: object - type: array + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string required: - - nodeSelectorTerms + - containerPort type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - 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 - namespaces: - items: + type: array + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string required: - - podAffinityTerm - - weight + - port type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - 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 - namespaces: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: items: type: string type: array - topologyKey: + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: type: string - required: - - topologyKey type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + windowsOptions: properties: - podAffinityTerm: - properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + type: object + startupProbe: + properties: + exec: properties: - 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 - namespaces: + command: items: type: string type: array - topologyKey: + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string + port: + anyOf: + - type: string + - type: integer required: - - topologyKey + - port type: object - type: array - type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array type: object - automountServiceAccountToken: + dnsPolicy: + type: string + enableServiceLinks: type: boolean - containers: + ephemeralContainers: items: properties: args: @@ -2631,15 +3838,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -2681,11 +3879,85 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean stdinOnce: type: boolean + targetContainerName: + type: string terminationMessagePath: type: string terminationMessagePolicy: @@ -2730,30 +4002,6 @@ spec: - name type: object type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean hostAliases: items: properties: @@ -3119,15 +4367,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -3158,17 +4397,89 @@ spec: runAsUser: format: int64 type: integer - seLinuxOptions: + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - level: - type: string - role: - type: string - type: - type: string - user: + host: type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean @@ -3224,6 +4535,12 @@ spec: additionalProperties: type: string type: object + overhead: + additionalProperties: + type: string + type: object + preemptionPolicy: + type: string priority: format: int32 type: integer @@ -3285,6 +4602,15 @@ spec: - value type: object type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object type: object serviceAccount: type: string @@ -3313,6 +4639,45 @@ spec: type: string type: object type: array + topologySpreadConstraints: + items: + properties: + 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 + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array volumes: items: properties: @@ -3481,629 +4846,1154 @@ spec: type: string readOnly: type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: type: string - repository: + storagePool: type: string - revision: + system: + type: string + volumeName: type: string required: - - repository + - gateway + - secretRef + - system type: object - glusterfs: + storageos: properties: - endpoints: - type: string - path: + fsType: type: string readOnly: type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: + secretRef: + properties: + name: + type: string + type: object + volumeName: type: string - type: + volumeNamespace: type: string - required: - - path type: object - iscsi: + vsphereVolume: properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean fsType: type: string - initiatorName: + storagePolicyID: type: string - iqn: + storagePolicyName: type: string - iscsiInterface: + volumePath: type: string - lun: - format: int32 - type: integer - portals: - items: + required: + - volumePath + type: object + required: + - name + type: object + type: array + required: + - containers + type: object + type: object + ttlSecondsAfterFinished: + format: int32 + type: integer + required: + - template + type: object + required: + - spec + type: object + prometheus: + properties: + query: + type: string + server: + type: string + type: object + type: object + successCondition: + type: string + required: + - name + - provider + type: object + type: array + required: + - metrics + type: object + required: + - spec + type: object + version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true +--- +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: experiments.argoproj.io +spec: + group: argoproj.io + names: + kind: Experiment + listKind: ExperimentList + plural: experiments + singular: experiment + scope: Namespaced + validation: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + duration: + format: int32 + type: integer + progressDeadlineSeconds: + format: int32 + type: integer + templates: + items: + properties: + minReadySeconds: + format: int32 + type: integer + name: + type: string + replicas: + format: int32 + type: integer + 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: + type: object + spec: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: + operator: + type: string + values: + items: type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: properties: - defaultMode: - format: int32 - type: integer - sources: + matchExpressions: items: properties: - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator type: object type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: + matchLabels: + additionalProperties: type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string type: object - vsphereVolume: + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string required: - - name + - topologyKey type: object - type: array - required: - - containers - type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array type: object - ttlSecondsAfterFinished: - format: int32 - type: integer - required: - - template type: object - required: - - spec - type: object - prometheus: - properties: - query: - type: string - server: - type: string - type: object - type: object - successCondition: - type: string - required: - - name - - provider - type: object - type: array - required: - - metrics - type: object - required: - - spec - type: object - version: v1alpha1 - versions: - - name: v1alpha1 - served: true - storage: true ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: experiments.argoproj.io -spec: - group: argoproj.io - names: - kind: Experiment - listKind: ExperimentList - plural: experiments - singular: experiment - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - duration: - format: int32 - type: integer - progressDeadlineSeconds: - format: int32 - type: integer - templates: - items: - properties: - minReadySeconds: - format: int32 - type: integer - name: - type: string - replicas: - format: int32 - type: integer - 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: - type: object - spec: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + automountServiceAccountToken: + type: boolean + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: properties: - preference: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - weight: - format: int32 - type: integer - required: - - preference - - weight type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + preStop: + properties: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: + tcpSocket: properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: + host: type: string + port: + anyOf: + - type: string + - type: integer required: - - topologyKey + - port type: object - weight: - format: int32 - type: integer + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer required: - - podAffinityTerm - - weight + - port type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + readinessProbe: + properties: + exec: properties: - 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 - namespaces: + command: items: type: string type: array - topologyKey: + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: type: string required: - - topologyKey + - port type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - podAffinityTerm: - properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer + host: + type: string + port: + anyOf: + - type: string + - type: integer required: - - podAffinityTerm - - weight + - port type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: properties: - 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 - namespaces: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: items: - type: string + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object type: array - topologyKey: + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: type: string required: - - topologyKey + - port type: object - type: array - type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array type: object - automountServiceAccountToken: + dnsPolicy: + type: string + enableServiceLinks: type: boolean - containers: + ephemeralContainers: items: properties: args: @@ -4442,15 +6332,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -4492,11 +6373,85 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean stdinOnce: type: boolean + targetContainerName: + type: string terminationMessagePath: type: string terminationMessagePolicy: @@ -4541,30 +6496,6 @@ spec: - name type: object type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean hostAliases: items: properties: @@ -4930,15 +6861,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -4969,17 +6891,89 @@ spec: runAsUser: format: int64 type: integer - seLinuxOptions: + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: properties: - level: + host: type: string - role: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - type: + port: + anyOf: + - type: string + - type: integer + scheme: type: string - user: + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean @@ -5035,6 +7029,12 @@ spec: additionalProperties: type: string type: object + overhead: + additionalProperties: + type: string + type: object + preemptionPolicy: + type: string priority: format: int32 type: integer @@ -5096,6 +7096,15 @@ spec: - value type: object type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object type: object serviceAccount: type: string @@ -5124,6 +7133,45 @@ spec: type: string type: object type: array + topologySpreadConstraints: + items: + properties: + 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 + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array volumes: items: properties: @@ -5812,54 +7860,274 @@ spec: additionalProperties: type: string type: object - type: object - name: - type: string - replicas: - format: int32 - type: integer - specRef: + type: object + name: + type: string + replicas: + format: int32 + type: integer + specRef: + type: string + required: + - name + - replicas + - specRef + type: object + type: array + required: + - duration + - templates + type: object + pause: + properties: + duration: + format: int32 + type: integer + type: object + setWeight: + format: int32 + type: integer + type: object + type: array + type: object + type: object + template: + properties: + metadata: + type: object + spec: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + 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 + namespaces: + items: type: string - required: - - name - - replicas - - specRef - type: object - type: array - required: - - duration - - templates - type: object - pause: - properties: - duration: - format: int32 - type: integer - type: object - setWeight: - format: int32 - type: integer - type: object - type: array - type: object - type: object - template: - properties: - metadata: - type: object - spec: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: properties: preferredDuringSchedulingIgnoredDuringExecution: items: properties: - preference: + podAffinityTerm: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: properties: matchExpressions: items: @@ -5877,246 +8145,551 @@ spec: - operator type: object type: array - matchFields: + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + automountServiceAccountToken: + type: boolean + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - weight: - format: int32 - type: integer - required: - - preference - - weight type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + preStop: + properties: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: + tcpSocket: properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: + host: type: string + port: + anyOf: + - type: string + - type: integer required: - - topologyKey + - port type: object - weight: - format: int32 - type: integer + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string required: - - podAffinityTerm - - weight + - port type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - 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 - namespaces: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: items: type: string type: array - topologyKey: + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: type: string - required: - - topologyKey type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + windowsOptions: properties: - podAffinityTerm: - properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + type: object + startupProbe: + properties: + exec: properties: - 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 - namespaces: + command: items: type: string type: array - topologyKey: + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: type: string required: - - topologyKey + - port type: object - type: array - type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array type: object - automountServiceAccountToken: + dnsPolicy: + type: string + enableServiceLinks: type: boolean - containers: + ephemeralContainers: items: properties: args: @@ -6455,7 +9028,6 @@ spec: type: integer type: object resources: - properties: {} type: object securityContext: properties: @@ -6497,11 +9069,85 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean stdinOnce: type: boolean + targetContainerName: + type: string terminationMessagePath: type: string terminationMessagePolicy: @@ -6546,30 +9192,6 @@ spec: - name type: object type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean hostAliases: items: properties: @@ -6935,15 +9557,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -6985,6 +9598,78 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean @@ -7040,6 +9725,12 @@ spec: additionalProperties: type: string type: object + overhead: + additionalProperties: + type: string + type: object + preemptionPolicy: + type: string priority: format: int32 type: integer @@ -7101,6 +9792,15 @@ spec: - value type: object type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object type: object serviceAccount: type: string @@ -7129,6 +9829,45 @@ spec: type: string type: object type: array + topologySpreadConstraints: + items: + properties: + 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 + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array volumes: items: properties: diff --git a/manifests/namespace-install.yaml b/manifests/namespace-install.yaml index c6a9b6c5c8..be215374d3 100644 --- a/manifests/namespace-install.yaml +++ b/manifests/namespace-install.yaml @@ -705,15 +705,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -755,6 +746,78 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean @@ -828,33 +891,7 @@ spec: type: string enableServiceLinks: type: boolean - hostAliases: - items: - properties: - hostnames: - items: - type: string - type: array - ip: - type: string - type: object - type: array - hostIPC: - type: boolean - hostNetwork: - type: boolean - hostPID: - type: boolean - hostname: - type: string - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: + ephemeralContainers: items: properties: args: @@ -1193,15 +1230,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -1243,11 +1271,85 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean stdinOnce: type: boolean + targetContainerName: + type: string terminationMessagePath: type: string terminationMessagePolicy: @@ -1292,553 +1394,1134 @@ spec: - name type: object type: array - nodeName: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessGates: + hostAliases: items: properties: - conditionType: + hostnames: + items: + type: string + type: array + ip: type: string - required: - - conditionType type: object type: array - restartPolicy: - type: string - runtimeClassName: - type: string - schedulerName: + hostIPC: + type: boolean + hostNetwork: + type: boolean + hostPID: + type: boolean + hostname: type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + initContainers: + items: + properties: + args: + items: type: string - user: + type: array + command: + items: type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - serviceAccountName: - type: string - shareProcessNamespace: - type: boolean - subdomain: - type: string - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: type: string - tolerationSeconds: - format: int64 - type: integer - value: + imagePullPolicy: type: string - type: object - type: array - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: + lifecycle: properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: + postStart: properties: - name: - type: string + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object type: object - volumeID: - type: string - required: - - volumeID - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: + preStop: properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object type: object - required: - - driver - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string type: object - fc: + livenessProbe: properties: - fsType: - type: string - lun: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: format: int32 type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: + httpGet: properties: - name: + host: type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: + initialDelaySeconds: format: int32 type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: + periodSeconds: format: int32 type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - name: + host: type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal + timeoutSeconds: + format: int32 + type: integer type: object name: type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + readinessProbe: properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: format: int32 type: integer - sources: - items: - properties: - serviceAccountToken: + httpGet: + properties: + host: + type: string + httpHeaders: + items: properties: - audience: + name: type: string - expirationSeconds: - format: int64 - type: integer - path: + value: type: string required: - - path + - name + - value type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - name: + host: type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - user: - type: string - required: - - image - - monitors + timeoutSeconds: + format: int32 + type: integer type: object - scaleIO: + resources: + type: object + securityContext: properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: + allowPrivilegeEscalation: type: boolean - secretRef: + capabilities: properties: - name: - type: string + add: + items: + type: string + type: array + drop: + items: + type: string + type: array type: object - sslEnabled: + privileged: type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - storageos: - properties: - fsType: + procMount: type: string - readOnly: + readOnlyRootFilesystem: type: boolean - secretRef: + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - name: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: type: string type: object - volumeName: - type: string - volumeNamespace: - type: string type: object - vsphereVolume: + startupProbe: properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - containers - type: object - type: object - ttlSecondsAfterFinished: - format: int32 - type: integer - required: - - template - type: object - required: - - spec - type: object - prometheus: - properties: - query: - type: string - server: - type: string - type: object - type: object - successCondition: - type: string - required: - - name - - provider - type: object - type: array - required: - - metrics - type: object - arguments: - items: - properties: - name: - type: string - value: - type: string + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + overhead: + additionalProperties: + type: string + type: object + preemptionPolicy: + type: string + priority: + format: int32 + type: integer + priorityClassName: + type: string + readinessGates: + items: + properties: + conditionType: + type: string + required: + - conditionType + type: object + type: array + restartPolicy: + type: string + runtimeClassName: + type: string + schedulerName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + serviceAccountName: + type: string + shareProcessNamespace: + type: boolean + subdomain: + type: string + terminationGracePeriodSeconds: + format: int64 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + 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 + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + required: + - volumeID + type: object + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + type: string + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + required: + - containers + type: object + type: object + ttlSecondsAfterFinished: + format: int32 + type: integer + required: + - template + type: object + required: + - spec + type: object + prometheus: + properties: + query: + type: string + server: + type: string + type: object + type: object + successCondition: + type: string + required: + - name + - provider + type: object + type: array + required: + - metrics + type: object + arguments: + items: + properties: + name: + type: string + value: + type: string required: - name - value @@ -1895,7 +2578,6 @@ spec: value: type: string required: - - message - status type: object type: array @@ -2035,264 +2717,789 @@ spec: preferredDuringSchedulingIgnoredDuringExecution: items: properties: - preference: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + automountServiceAccountToken: + type: boolean + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - weight: - format: int32 - type: integer - required: - - preference - - weight type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + preStop: + properties: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port type: object - type: array + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string required: - - nodeSelectorTerms + - containerPort type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - 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 - namespaces: - items: + type: array + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string required: - - podAffinityTerm - - weight + - port type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - 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 - namespaces: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: items: type: string type: array - topologyKey: + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: type: string - required: - - topologyKey type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + windowsOptions: properties: - podAffinityTerm: - properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + type: object + startupProbe: + properties: + exec: properties: - 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 - namespaces: + command: items: type: string type: array - topologyKey: + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string + port: + anyOf: + - type: string + - type: integer required: - - topologyKey + - port type: object - type: array - type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array type: object - automountServiceAccountToken: + dnsPolicy: + type: string + enableServiceLinks: type: boolean - containers: + ephemeralContainers: items: properties: args: @@ -2631,15 +3838,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -2681,11 +3879,85 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean stdinOnce: type: boolean + targetContainerName: + type: string terminationMessagePath: type: string terminationMessagePolicy: @@ -2730,30 +4002,6 @@ spec: - name type: object type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean hostAliases: items: properties: @@ -3119,15 +4367,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -3158,17 +4397,89 @@ spec: runAsUser: format: int64 type: integer - seLinuxOptions: + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - level: - type: string - role: - type: string - type: - type: string - user: + host: type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean @@ -3224,6 +4535,12 @@ spec: additionalProperties: type: string type: object + overhead: + additionalProperties: + type: string + type: object + preemptionPolicy: + type: string priority: format: int32 type: integer @@ -3285,6 +4602,15 @@ spec: - value type: object type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object type: object serviceAccount: type: string @@ -3313,6 +4639,45 @@ spec: type: string type: object type: array + topologySpreadConstraints: + items: + properties: + 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 + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array volumes: items: properties: @@ -3481,629 +4846,1154 @@ spec: type: string readOnly: type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: type: string - repository: + storagePool: type: string - revision: + system: + type: string + volumeName: type: string required: - - repository + - gateway + - secretRef + - system type: object - glusterfs: + storageos: properties: - endpoints: - type: string - path: + fsType: type: string readOnly: type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: + secretRef: + properties: + name: + type: string + type: object + volumeName: type: string - type: + volumeNamespace: type: string - required: - - path type: object - iscsi: + vsphereVolume: properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean fsType: type: string - initiatorName: + storagePolicyID: type: string - iqn: + storagePolicyName: type: string - iscsiInterface: + volumePath: type: string - lun: - format: int32 - type: integer - portals: - items: + required: + - volumePath + type: object + required: + - name + type: object + type: array + required: + - containers + type: object + type: object + ttlSecondsAfterFinished: + format: int32 + type: integer + required: + - template + type: object + required: + - spec + type: object + prometheus: + properties: + query: + type: string + server: + type: string + type: object + type: object + successCondition: + type: string + required: + - name + - provider + type: object + type: array + required: + - metrics + type: object + required: + - spec + type: object + version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true +--- +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: experiments.argoproj.io +spec: + group: argoproj.io + names: + kind: Experiment + listKind: ExperimentList + plural: experiments + singular: experiment + scope: Namespaced + validation: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + duration: + format: int32 + type: integer + progressDeadlineSeconds: + format: int32 + type: integer + templates: + items: + properties: + minReadySeconds: + format: int32 + type: integer + name: + type: string + replicas: + format: int32 + type: integer + 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: + type: object + spec: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: + operator: + type: string + values: + items: type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: properties: - defaultMode: - format: int32 - type: integer - sources: + matchExpressions: items: properties: - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator type: object type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: + matchLabels: + additionalProperties: type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string type: object - vsphereVolume: + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string required: - - name + - topologyKey type: object - type: array - required: - - containers - type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array type: object - ttlSecondsAfterFinished: - format: int32 - type: integer - required: - - template type: object - required: - - spec - type: object - prometheus: - properties: - query: - type: string - server: - type: string - type: object - type: object - successCondition: - type: string - required: - - name - - provider - type: object - type: array - required: - - metrics - type: object - required: - - spec - type: object - version: v1alpha1 - versions: - - name: v1alpha1 - served: true - storage: true ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: experiments.argoproj.io -spec: - group: argoproj.io - names: - kind: Experiment - listKind: ExperimentList - plural: experiments - singular: experiment - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - duration: - format: int32 - type: integer - progressDeadlineSeconds: - format: int32 - type: integer - templates: - items: - properties: - minReadySeconds: - format: int32 - type: integer - name: - type: string - replicas: - format: int32 - type: integer - 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: - type: object - spec: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + automountServiceAccountToken: + type: boolean + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: properties: - preference: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - weight: - format: int32 - type: integer - required: - - preference - - weight type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + preStop: + properties: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: + tcpSocket: properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: + host: type: string + port: + anyOf: + - type: string + - type: integer required: - - topologyKey + - port type: object - weight: - format: int32 - type: integer + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer required: - - podAffinityTerm - - weight + - port type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + readinessProbe: + properties: + exec: properties: - 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 - namespaces: + command: items: type: string type: array - topologyKey: + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: type: string required: - - topologyKey + - port type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - podAffinityTerm: - properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer + host: + type: string + port: + anyOf: + - type: string + - type: integer required: - - podAffinityTerm - - weight + - port type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: properties: - 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 - namespaces: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: items: - type: string + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object type: array - topologyKey: + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: type: string required: - - topologyKey + - port type: object - type: array - type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array type: object - automountServiceAccountToken: + dnsPolicy: + type: string + enableServiceLinks: type: boolean - containers: + ephemeralContainers: items: properties: args: @@ -4442,15 +6332,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -4492,11 +6373,85 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean stdinOnce: type: boolean + targetContainerName: + type: string terminationMessagePath: type: string terminationMessagePolicy: @@ -4541,30 +6496,6 @@ spec: - name type: object type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean hostAliases: items: properties: @@ -4930,15 +6861,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -4969,17 +6891,89 @@ spec: runAsUser: format: int64 type: integer - seLinuxOptions: + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: properties: - level: + host: type: string - role: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - type: + port: + anyOf: + - type: string + - type: integer + scheme: type: string - user: + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean @@ -5035,6 +7029,12 @@ spec: additionalProperties: type: string type: object + overhead: + additionalProperties: + type: string + type: object + preemptionPolicy: + type: string priority: format: int32 type: integer @@ -5096,6 +7096,15 @@ spec: - value type: object type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object type: object serviceAccount: type: string @@ -5124,6 +7133,45 @@ spec: type: string type: object type: array + topologySpreadConstraints: + items: + properties: + 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 + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array volumes: items: properties: @@ -5812,54 +7860,274 @@ spec: additionalProperties: type: string type: object - type: object - name: - type: string - replicas: - format: int32 - type: integer - specRef: + type: object + name: + type: string + replicas: + format: int32 + type: integer + specRef: + type: string + required: + - name + - replicas + - specRef + type: object + type: array + required: + - duration + - templates + type: object + pause: + properties: + duration: + format: int32 + type: integer + type: object + setWeight: + format: int32 + type: integer + type: object + type: array + type: object + type: object + template: + properties: + metadata: + type: object + spec: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + 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 + namespaces: + items: type: string - required: - - name - - replicas - - specRef - type: object - type: array - required: - - duration - - templates - type: object - pause: - properties: - duration: - format: int32 - type: integer - type: object - setWeight: - format: int32 - type: integer - type: object - type: array - type: object - type: object - template: - properties: - metadata: - type: object - spec: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: properties: preferredDuringSchedulingIgnoredDuringExecution: items: properties: - preference: + podAffinityTerm: + properties: + 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 + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: properties: matchExpressions: items: @@ -5877,246 +8145,551 @@ spec: - operator type: object type: array - matchFields: + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + automountServiceAccountToken: + type: boolean + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port type: object - weight: - format: int32 - type: integer - required: - - preference - - weight type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + preStop: + properties: + exec: properties: - matchExpressions: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchFields: + type: object + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: + tcpSocket: properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: + host: type: string + port: + anyOf: + - type: string + - type: integer required: - - topologyKey + - port type: object - weight: - format: int32 - type: integer + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string required: - - podAffinityTerm - - weight + - port type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - 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 - namespaces: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: items: type: string type: array - topologyKey: + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: type: string - required: - - topologyKey type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + windowsOptions: properties: - podAffinityTerm: - properties: - 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 - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + type: object + startupProbe: + properties: + exec: properties: - 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 - namespaces: + command: items: type: string type: array - topologyKey: + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: type: string required: - - topologyKey + - port type: object - type: array - type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array type: object - automountServiceAccountToken: + dnsPolicy: + type: string + enableServiceLinks: type: boolean - containers: + ephemeralContainers: items: properties: args: @@ -6455,7 +9028,6 @@ spec: type: integer type: object resources: - properties: {} type: object securityContext: properties: @@ -6497,11 +9069,85 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean stdinOnce: type: boolean + targetContainerName: + type: string terminationMessagePath: type: string terminationMessagePolicy: @@ -6546,30 +9192,6 @@ spec: - name type: object type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean hostAliases: items: properties: @@ -6935,15 +9557,6 @@ spec: type: integer type: object resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object type: object securityContext: properties: @@ -6985,6 +9598,78 @@ spec: user: type: string type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: string + - type: integer + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: string + - type: integer + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object stdin: type: boolean @@ -7040,6 +9725,12 @@ spec: additionalProperties: type: string type: object + overhead: + additionalProperties: + type: string + type: object + preemptionPolicy: + type: string priority: format: int32 type: integer @@ -7101,6 +9792,15 @@ spec: - value type: object type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object type: object serviceAccount: type: string @@ -7129,6 +9829,45 @@ spec: type: string type: object type: array + topologySpreadConstraints: + items: + properties: + 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 + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array volumes: items: properties: diff --git a/pkg/apis/rollouts/v1alpha1/analysis_types.go b/pkg/apis/rollouts/v1alpha1/analysis_types.go index 1d4ea2ba24..d990fa03b8 100644 --- a/pkg/apis/rollouts/v1alpha1/analysis_types.go +++ b/pkg/apis/rollouts/v1alpha1/analysis_types.go @@ -207,7 +207,7 @@ type Measurement struct { // Status is the status of this single measurement Status AnalysisStatus `json:"status"` // Message contains a message describing current condition (e.g. error messages) - Message string `json:"message"` + Message string `json:"message,omitempty"` // StartedAt is the timestamp in which this measurement started to be measured StartedAt *metav1.Time `json:"startedAt,omitempty"` // FinishedAt is the timestamp in which this measurement completed and value was collected diff --git a/pkg/apis/rollouts/v1alpha1/openapi_generated.go b/pkg/apis/rollouts/v1alpha1/openapi_generated.go index 53538ab996..1f745f9da5 100644 --- a/pkg/apis/rollouts/v1alpha1/openapi_generated.go +++ b/pkg/apis/rollouts/v1alpha1/openapi_generated.go @@ -1022,7 +1022,7 @@ func schema_pkg_apis_rollouts_v1alpha1_Measurement(ref common.ReferenceCallback) }, }, }, - Required: []string{"status", "message"}, + Required: []string{"status"}, }, }, Dependencies: []string{ diff --git a/pkg/kubectl-argo-rollouts/cmd/cmd.go b/pkg/kubectl-argo-rollouts/cmd/cmd.go new file mode 100644 index 0000000000..d726a6d6ae --- /dev/null +++ b/pkg/kubectl-argo-rollouts/cmd/cmd.go @@ -0,0 +1,37 @@ +package cmd + +import ( + "github.com/spf13/cobra" + + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd/pause" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd/resume" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd/version" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" +) + +const ( + example = ` + # Pause the guestbook rollout + %[1]s pause guestbook + + # Resume the guestbook rollout + %[1]s resume guestbook +` +) + +func NewCmdArgoRollouts(o *options.ArgoRolloutsOptions) *cobra.Command { + cmd := &cobra.Command{ + Use: "kubectl-argo-rollouts COMMAND", + Short: "Manage argo rollouts", + Example: o.Example(example), + SilenceUsage: true, + PersistentPreRunE: o.PersistentPreRunE, + RunE: func(c *cobra.Command, args []string) error { + return o.UsageErr(c) + }, + } + cmd.AddCommand(pause.NewCmdPause(o)) + cmd.AddCommand(resume.NewCmdResume(o)) + cmd.AddCommand(version.NewCmdVersion(o)) + return cmd +} diff --git a/pkg/kubectl-argo-rollouts/cmd/cmd_test.go b/pkg/kubectl-argo-rollouts/cmd/cmd_test.go new file mode 100644 index 0000000000..d32894538c --- /dev/null +++ b/pkg/kubectl-argo-rollouts/cmd/cmd_test.go @@ -0,0 +1,23 @@ +package cmd + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/assert" + + options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" +) + +func TestCmdArgoRolloutsCmdUsage(t *testing.T) { + _, o := options.NewFakeArgoRolloutsOptions() + cmd := NewCmdArgoRollouts(o) + cmd.PersistentPreRunE = o.PersistentPreRunE + err := cmd.Execute() + assert.Error(t, err) + stdout := o.Out.(*bytes.Buffer).String() + stderr := o.ErrOut.(*bytes.Buffer).String() + assert.Empty(t, stdout) + assert.Contains(t, stderr, "Usage:") + assert.Contains(t, stderr, "kubectl-argo-rollouts COMMAND") +} diff --git a/pkg/kubectl-argo-rollouts/cmd/pause/pause.go b/pkg/kubectl-argo-rollouts/cmd/pause/pause.go new file mode 100644 index 0000000000..2119053547 --- /dev/null +++ b/pkg/kubectl-argo-rollouts/cmd/pause/pause.go @@ -0,0 +1,44 @@ +package pause + +import ( + "fmt" + + "github.com/spf13/cobra" + types "k8s.io/apimachinery/pkg/types" + + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" +) + +const ( + example = ` + # Pause a rollout + %[1]s pause guestbook +` +) + +// NewCmdPause returns a new instance of an `rollouts pause` command +func NewCmdPause(o *options.ArgoRolloutsOptions) *cobra.Command { + var cmd = &cobra.Command{ + Use: "pause ROLLOUT", + Short: "Pause a rollout", + Example: o.Example(example), + SilenceUsage: true, + RunE: func(c *cobra.Command, args []string) error { + if len(args) == 0 { + return o.UsageErr(c) + } + ns := o.Namespace() + rolloutIf := o.RolloutsClientset().ArgoprojV1alpha1().Rollouts(ns) + for _, name := range args { + ro, err := rolloutIf.Patch(name, types.MergePatchType, []byte(`{"spec":{"paused":true}}`)) + if err != nil { + return err + } + fmt.Fprintf(o.Out, "rollout '%s' paused\n", ro.Name) + } + return nil + }, + } + o.AddKubectlFlags(cmd) + return cmd +} diff --git a/pkg/kubectl-argo-rollouts/cmd/pause/pause_test.go b/pkg/kubectl-argo-rollouts/cmd/pause/pause_test.go new file mode 100644 index 0000000000..0d15ae7340 --- /dev/null +++ b/pkg/kubectl-argo-rollouts/cmd/pause/pause_test.go @@ -0,0 +1,75 @@ +package pause + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/assert" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + kubetesting "k8s.io/client-go/testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + fakeroclient "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" + options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" +) + +func TestPauseCmdUsage(t *testing.T) { + _, o := options.NewFakeArgoRolloutsOptions() + cmd := NewCmdPause(o) + cmd.PersistentPreRunE = o.PersistentPreRunE + cmd.SetArgs([]string{}) + err := cmd.Execute() + assert.Error(t, err) + stdout := o.Out.(*bytes.Buffer).String() + stderr := o.ErrOut.(*bytes.Buffer).String() + assert.Empty(t, stdout) + assert.Contains(t, stderr, "Usage:") + assert.Contains(t, stderr, "pause ROLLOUT") +} + +func TestPauseCmd(t *testing.T) { + ro := v1alpha1.Rollout{ + ObjectMeta: metav1.ObjectMeta{ + Name: "guestbook", + Namespace: "test", + }, + } + + _, o := options.NewFakeArgoRolloutsOptions(&ro) + fakeClient := o.RolloutsClient.(*fakeroclient.Clientset) + fakeClient.ReactionChain = nil + fakeClient.AddReactor("patch", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) { + if patchAction, ok := action.(kubetesting.PatchAction); ok { + if string(patchAction.GetPatch()) == `{"spec":{"paused":true}}` { + ro.Spec.Paused = true + } + } + return true, &ro, nil + }) + + cmd := NewCmdPause(o) + cmd.PersistentPreRunE = o.PersistentPreRunE + cmd.SetArgs([]string{"guestbook", "-n", "test"}) + err := cmd.Execute() + assert.Nil(t, err) + + assert.True(t, ro.Spec.Paused) + stdout := o.Out.(*bytes.Buffer).String() + stderr := o.ErrOut.(*bytes.Buffer).String() + assert.Equal(t, stdout, "rollout 'guestbook' paused\n") + assert.Empty(t, stderr) +} + +func TestPauseCmdError(t *testing.T) { + _, o := options.NewFakeArgoRolloutsOptions(&v1alpha1.Rollout{}) + cmd := NewCmdPause(o) + cmd.PersistentPreRunE = o.PersistentPreRunE + cmd.SetArgs([]string{"doesnotexist", "-n", "test"}) + err := cmd.Execute() + assert.Error(t, err) + stdout := o.Out.(*bytes.Buffer).String() + stderr := o.ErrOut.(*bytes.Buffer).String() + assert.Empty(t, stdout) + assert.Equal(t, "Error: rollouts.argoproj.io \"doesnotexist\" not found\n", stderr) +} diff --git a/pkg/kubectl-argo-rollouts/cmd/resume/resume.go b/pkg/kubectl-argo-rollouts/cmd/resume/resume.go new file mode 100644 index 0000000000..632c3e7eaf --- /dev/null +++ b/pkg/kubectl-argo-rollouts/cmd/resume/resume.go @@ -0,0 +1,43 @@ +package resume + +import ( + "fmt" + + "github.com/spf13/cobra" + types "k8s.io/apimachinery/pkg/types" + + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" +) + +const ( + example = ` + # Resume a rollout + %[1]s resume guestbook +` +) + +// NewCmdResume returns a new instance of an `rollouts resume` command +func NewCmdResume(o *options.ArgoRolloutsOptions) *cobra.Command { + var cmd = &cobra.Command{ + Use: "resume ROLLOUT", + Short: "Resume a rollout", + Example: o.Example(example), + SilenceUsage: true, + RunE: func(c *cobra.Command, args []string) error { + if len(args) == 0 { + return o.UsageErr(c) + } + rolloutIf := o.RolloutsClientset().ArgoprojV1alpha1().Rollouts(o.Namespace()) + for _, name := range args { + ro, err := rolloutIf.Patch(name, types.MergePatchType, []byte(`{"spec":{"paused":false}}`)) + if err != nil { + return err + } + fmt.Fprintf(o.Out, "rollout '%s' resumed\n", ro.Name) + } + return nil + }, + } + o.AddKubectlFlags(cmd) + return cmd +} diff --git a/pkg/kubectl-argo-rollouts/cmd/resume/resume_test.go b/pkg/kubectl-argo-rollouts/cmd/resume/resume_test.go new file mode 100644 index 0000000000..34d6faa319 --- /dev/null +++ b/pkg/kubectl-argo-rollouts/cmd/resume/resume_test.go @@ -0,0 +1,78 @@ +package resume + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/assert" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + kubetesting "k8s.io/client-go/testing" + + "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" + fakeroclient "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" + options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" +) + +func TestResumeCmdUsage(t *testing.T) { + _, o := options.NewFakeArgoRolloutsOptions() + cmd := NewCmdResume(o) + cmd.PersistentPreRunE = o.PersistentPreRunE + cmd.SetArgs([]string{}) + err := cmd.Execute() + assert.Error(t, err) + stdout := o.Out.(*bytes.Buffer).String() + stderr := o.ErrOut.(*bytes.Buffer).String() + assert.Empty(t, stdout) + assert.Contains(t, stderr, "Usage:") + assert.Contains(t, stderr, "resume ROLLOUT") +} + +func TestResumeCmdSuccess(t *testing.T) { + ro := v1alpha1.Rollout{ + ObjectMeta: metav1.ObjectMeta{ + Name: "guestbook", + Namespace: "test", + }, + Spec: v1alpha1.RolloutSpec{ + Paused: true, + }, + } + + _, o := options.NewFakeArgoRolloutsOptions(&ro) + fakeClient := o.RolloutsClient.(*fakeroclient.Clientset) + fakeClient.ReactionChain = nil + fakeClient.AddReactor("patch", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) { + if patchAction, ok := action.(kubetesting.PatchAction); ok { + if string(patchAction.GetPatch()) == `{"spec":{"paused":false}}` { + ro.Spec.Paused = false + } + } + return true, &ro, nil + }) + + cmd := NewCmdResume(o) + cmd.PersistentPreRunE = o.PersistentPreRunE + cmd.SetArgs([]string{"guestbook", "-n", "test"}) + err := cmd.Execute() + assert.Nil(t, err) + + assert.False(t, ro.Spec.Paused) + stdout := o.Out.(*bytes.Buffer).String() + stderr := o.ErrOut.(*bytes.Buffer).String() + assert.Equal(t, stdout, "rollout 'guestbook' resumed\n") + assert.Empty(t, stderr) +} + +func TestResumeCmdError(t *testing.T) { + _, o := options.NewFakeArgoRolloutsOptions(&v1alpha1.Rollout{}) + cmd := NewCmdResume(o) + cmd.PersistentPreRunE = o.PersistentPreRunE + cmd.SetArgs([]string{"doesnotexist", "-n", "test"}) + err := cmd.Execute() + assert.Error(t, err) + stdout := o.Out.(*bytes.Buffer).String() + stderr := o.ErrOut.(*bytes.Buffer).String() + assert.Empty(t, stdout) + assert.Equal(t, "Error: rollouts.argoproj.io \"doesnotexist\" not found\n", stderr) +} diff --git a/pkg/kubectl-argo-rollouts/cmd/version/version.go b/pkg/kubectl-argo-rollouts/cmd/version/version.go new file mode 100644 index 0000000000..07954c96e4 --- /dev/null +++ b/pkg/kubectl-argo-rollouts/cmd/version/version.go @@ -0,0 +1,43 @@ +package version + +import ( + "fmt" + "io" + + "github.com/spf13/cobra" + + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" + versionutils "github.com/argoproj/argo-rollouts/utils/version" +) + +// NewCmdVersion returns a new instance of an `rollouts version` command +func NewCmdVersion(o *options.ArgoRolloutsOptions) *cobra.Command { + var ( + short bool + ) + var cmd = &cobra.Command{ + Use: "version", + Short: "Print version", + SilenceUsage: true, + RunE: func(c *cobra.Command, args []string) error { + PrintVersion(o.Out, short) + return nil + }, + } + cmd.Flags().BoolVar(&short, "short", false, "print just the version number") + return cmd +} + +// PrintVersion prints the version to the output stream +func PrintVersion(out io.Writer, short bool) { + version := versionutils.GetVersion() + fmt.Fprintf(out, "%s: %s\n", "kubectl-argo-rollouts", version) + if !short { + fmt.Fprintf(out, " BuildDate: %s\n", version.BuildDate) + fmt.Fprintf(out, " GitCommit: %s\n", version.GitCommit) + fmt.Fprintf(out, " GitTreeState: %s\n", version.GitTreeState) + fmt.Fprintf(out, " GoVersion: %s\n", version.GoVersion) + fmt.Fprintf(out, " Compiler: %s\n", version.Compiler) + fmt.Fprintf(out, " Platform: %s\n", version.Platform) + } +} diff --git a/pkg/kubectl-argo-rollouts/cmd/version/version_test.go b/pkg/kubectl-argo-rollouts/cmd/version/version_test.go new file mode 100644 index 0000000000..c29598e06a --- /dev/null +++ b/pkg/kubectl-argo-rollouts/cmd/version/version_test.go @@ -0,0 +1,33 @@ +package version + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/assert" + + options "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" +) + +func TestVersionCmd(t *testing.T) { + _, o := options.NewFakeArgoRolloutsOptions() + cmd := NewCmdVersion(o) + cmd.PersistentPreRunE = o.PersistentPreRunE + cmd.SetArgs([]string{"version"}) + err := cmd.Execute() + assert.NoError(t, err) + stdout := o.Out.(*bytes.Buffer).String() + assert.Contains(t, stdout, "kubectl-argo-rollouts: v99.99.99+unknown\n") + assert.Contains(t, stdout, "BuildDate: 1970-01-01T00:00:00Z\n") +} + +func TestVersionCmdShort(t *testing.T) { + _, o := options.NewFakeArgoRolloutsOptions() + cmd := NewCmdVersion(o) + cmd.PersistentPreRunE = o.PersistentPreRunE + cmd.SetArgs([]string{"version", "--short"}) + err := cmd.Execute() + assert.NoError(t, err) + stdout := o.Out.(*bytes.Buffer).String() + assert.Equal(t, "kubectl-argo-rollouts: v99.99.99+unknown\n", stdout) +} diff --git a/pkg/kubectl-argo-rollouts/options/fake/fakeoptions.go b/pkg/kubectl-argo-rollouts/options/fake/fakeoptions.go new file mode 100644 index 0000000000..94c9d993bb --- /dev/null +++ b/pkg/kubectl-argo-rollouts/options/fake/fakeoptions.go @@ -0,0 +1,20 @@ +package options + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/cli-runtime/pkg/genericclioptions" + cmdtesting "k8s.io/kubectl/pkg/cmd/testing" + + fakeroclient "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" +) + +// NewFakeArgoRolloutsOptions returns a options.ArgoRolloutsOptions suitable for testing +func NewFakeArgoRolloutsOptions(obj ...runtime.Object) (*cmdtesting.TestFactory, *options.ArgoRolloutsOptions) { + iostreams, _, _, _ := genericclioptions.NewTestIOStreams() + tf := cmdtesting.NewTestFactory() + o := options.NewArgoRolloutsOptions(iostreams) + o.RESTClientGetter = tf + o.RolloutsClient = fakeroclient.NewSimpleClientset(obj...) + return tf, o +} diff --git a/pkg/kubectl-argo-rollouts/options/options.go b/pkg/kubectl-argo-rollouts/options/options.go new file mode 100644 index 0000000000..5b68cbb3ff --- /dev/null +++ b/pkg/kubectl-argo-rollouts/options/options.go @@ -0,0 +1,117 @@ +package options + +import ( + "errors" + "flag" + "fmt" + "strconv" + "strings" + + log "github.com/sirupsen/logrus" + "github.com/spf13/cobra" + "k8s.io/cli-runtime/pkg/genericclioptions" + "k8s.io/klog" + + roclientset "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned" +) + +const ( + cliName = "kubectl argo rollouts" +) + +// ArgoRolloutsOptions are a set of common CLI flags and convenience functions made available to +// all commands of the kubectl-argo-rollouts plugin +type ArgoRolloutsOptions struct { + CLIName string + RESTClientGetter genericclioptions.RESTClientGetter + ConfigFlags *genericclioptions.ConfigFlags + KlogLevel int + LogLevel string + RolloutsClient roclientset.Interface + + Log *log.Logger + genericclioptions.IOStreams +} + +// NewArgoRolloutsOptions provides an instance of ArgoRolloutsOptions with default values +func NewArgoRolloutsOptions(streams genericclioptions.IOStreams) *ArgoRolloutsOptions { + logCtx := log.New() + logCtx.SetOutput(streams.ErrOut) + klog.SetOutput(streams.ErrOut) + configFlags := genericclioptions.NewConfigFlags(true) + + return &ArgoRolloutsOptions{ + CLIName: cliName, + RESTClientGetter: configFlags, + ConfigFlags: configFlags, + IOStreams: streams, + Log: logCtx, + LogLevel: log.InfoLevel.String(), + } +} + +// Example returns the example string with the CLI command replaced in the example +func (o *ArgoRolloutsOptions) Example(example string) string { + return strings.Trim(fmt.Sprintf(example, cliName), "\n") +} + +// UsageErr is a convenience function to output usage and return an error +func (o *ArgoRolloutsOptions) UsageErr(c *cobra.Command) error { + c.Usage() + c.SilenceErrors = true + return errors.New(c.UsageString()) +} + +// PersistentPreRunE contains common logic which will be executed for all commands +func (o *ArgoRolloutsOptions) PersistentPreRunE(c *cobra.Command, args []string) error { + // NOTE: we set the output of the cobra command to stderr because the only thing that should + // emit to this are returned errors from command.RunE + c.SetOut(o.ErrOut) + level, err := log.ParseLevel(o.LogLevel) + if err != nil { + return err + } + o.Log.SetLevel(level) + if flag.Lookup("v") != nil { + // the '-v' flag is set by klog.Init(), which we only call in main.go + err := flag.Set("v", strconv.Itoa(o.KlogLevel)) + if err != nil { + return err + } + } + return nil +} + +// AddKubectlFlags adds kubectl related flags to the command +func (o *ArgoRolloutsOptions) AddKubectlFlags(cmd *cobra.Command) { + flags := cmd.Flags() + o.ConfigFlags.AddFlags(flags) + flags.IntVarP(&o.KlogLevel, "kloglevel", "v", 0, "Log level for kubernetes client library") + flags.StringVar(&o.LogLevel, "loglevel", log.InfoLevel.String(), "Log level for kubectl argo rollouts") +} + +// RolloutsClientset returns a Rollout client interface based on client flags +func (o *ArgoRolloutsOptions) RolloutsClientset() roclientset.Interface { + if o.RolloutsClient != nil { + return o.RolloutsClient + } + config, err := o.RESTClientGetter.ToRESTConfig() + if err != nil { + panic(err) + } + rolloutsClient, err := roclientset.NewForConfig(config) + if err != nil { + panic(err) + } + o.RolloutsClient = rolloutsClient + return o.RolloutsClient +} + +// Namespace returns the namespace based on client flags or kube context +func (o *ArgoRolloutsOptions) Namespace() string { + namespace, _, err := o.RESTClientGetter.ToRawKubeConfigLoader().Namespace() + if err != nil { + panic(err) + } + return namespace +} diff --git a/pkg/kubectl-argo-rollouts/options/options_test.go b/pkg/kubectl-argo-rollouts/options/options_test.go new file mode 100644 index 0000000000..a078090ad0 --- /dev/null +++ b/pkg/kubectl-argo-rollouts/options/options_test.go @@ -0,0 +1,90 @@ +package options_test + +import ( + "bytes" + "testing" + + "github.com/spf13/cobra" + "github.com/stretchr/testify/assert" + "k8s.io/cli-runtime/pkg/genericclioptions" + cmdtesting "k8s.io/kubectl/pkg/cmd/testing" + + "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options" + fakeoptions "github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options/fake" +) + +func TestExample(t *testing.T) { + _, o := fakeoptions.NewFakeArgoRolloutsOptions() + example := ` + # do something + %[1]s foo +` + assert.Equal(t, " # do something\n kubectl argo rollouts foo", o.Example(example)) +} + +func TestUsageErr(t *testing.T) { + _, o := fakeoptions.NewFakeArgoRolloutsOptions() + + var cmd = &cobra.Command{ + Use: "foo SOMETHING", + SilenceUsage: true, + PersistentPreRunE: o.PersistentPreRunE, + RunE: func(c *cobra.Command, args []string) error { + return o.UsageErr(c) + }, + } + err := cmd.Execute() + assert.Error(t, err) + stderr := o.ErrOut.(*bytes.Buffer).String() + stdout := o.Out.(*bytes.Buffer).String() + assert.Equal(t, "Usage:\n foo SOMETHING [flags]\n\nFlags:\n -h, --help help for foo\n", stderr) + assert.Empty(t, stdout) +} + +func TestAddKubectlFlags(t *testing.T) { + _, o := fakeoptions.NewFakeArgoRolloutsOptions() + + var cmd = &cobra.Command{ + Use: "foo SOMETHING", + SilenceUsage: true, + PersistentPreRunE: o.PersistentPreRunE, + RunE: func(c *cobra.Command, args []string) error { + o.Log.Debug("hello world") + return nil + }, + } + o.AddKubectlFlags(cmd) + + cmd.SetArgs([]string{"-v", "9", "--loglevel", "debug"}) + err := cmd.Execute() + assert.NoError(t, err) + + stderr := o.ErrOut.(*bytes.Buffer).String() + stdout := o.Out.(*bytes.Buffer).String() + assert.Contains(t, stderr, "hello world") + assert.Empty(t, stdout) +} + +func TestRolloutsClientset(t *testing.T) { + iostreams, _, _, _ := genericclioptions.NewTestIOStreams() + tf := cmdtesting.NewTestFactory().WithNamespace("foo") + o := options.NewArgoRolloutsOptions(iostreams) + o.RESTClientGetter = tf + o.RESTClientGetter.ToRawKubeConfigLoader().Namespace() + //o.ConfigFlags = tf + + var cmd = &cobra.Command{ + Use: "foo SOMETHING", + SilenceUsage: true, + PersistentPreRunE: o.PersistentPreRunE, + RunE: func(c *cobra.Command, args []string) error { + assert.Equal(t, "foo", o.Namespace()) + _ = o.RolloutsClientset() + return nil + }, + } + o.AddKubectlFlags(cmd) + + err := cmd.Execute() + assert.NoError(t, err) +} diff --git a/utils/version/version.go b/utils/version/version.go new file mode 100644 index 0000000000..f36936328c --- /dev/null +++ b/utils/version/version.go @@ -0,0 +1,65 @@ +package version + +import ( + "fmt" + "runtime" +) + +// Version information set by link flags during build. We fall back to these sane +// default values when we build outside the Makefile context (e.g. go run, go build, or go test). +var ( + version = "99.99.99" // value from VERSION file + buildDate = "1970-01-01T00:00:00Z" // output from `date -u +'%Y-%m-%dT%H:%M:%SZ'` + gitCommit = "" // output from `git rev-parse HEAD` + gitTag = "" // output from `git describe --exact-match --tags HEAD` (if clean tree state) + gitTreeState = "" // determined from `git status --porcelain`. either 'clean' or 'dirty' +) + +// Version contains Argo version information +type Version struct { + Version string + BuildDate string + GitCommit string + GitTag string + GitTreeState string + GoVersion string + Compiler string + Platform string +} + +func (v Version) String() string { + return v.Version +} + +// GetVersion returns the version information +func GetVersion() Version { + var versionStr string + + if gitCommit != "" && gitTag != "" && gitTreeState == "clean" { + // if we have a clean tree state and the current commit is tagged, + // this is an official release. + versionStr = gitTag + } else { + // otherwise formulate a version string based on as much metadata + // information we have available. + versionStr = "v" + version + if len(gitCommit) >= 7 { + versionStr += "+" + gitCommit[0:7] + if gitTreeState != "clean" { + versionStr += ".dirty" + } + } else { + versionStr += "+unknown" + } + } + return Version{ + Version: versionStr, + BuildDate: buildDate, + GitCommit: gitCommit, + GitTag: gitTag, + GitTreeState: gitTreeState, + GoVersion: runtime.Version(), + Compiler: runtime.Compiler, + Platform: fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), + } +} From 69b294098a97227232ff0690af029f7edb912788 Mon Sep 17 00:00:00 2001 From: Jesse Suen Date: Fri, 11 Oct 2019 02:46:36 -0700 Subject: [PATCH 2/3] Add test cleanup calls --- pkg/kubectl-argo-rollouts/cmd/cmd_test.go | 3 ++- pkg/kubectl-argo-rollouts/cmd/pause/pause_test.go | 9 ++++++--- pkg/kubectl-argo-rollouts/cmd/resume/resume_test.go | 9 ++++++--- pkg/kubectl-argo-rollouts/cmd/version/version_test.go | 10 ++++++---- pkg/kubectl-argo-rollouts/options/options_test.go | 10 +++++++--- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/pkg/kubectl-argo-rollouts/cmd/cmd_test.go b/pkg/kubectl-argo-rollouts/cmd/cmd_test.go index d32894538c..454149ced8 100644 --- a/pkg/kubectl-argo-rollouts/cmd/cmd_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/cmd_test.go @@ -10,7 +10,8 @@ import ( ) func TestCmdArgoRolloutsCmdUsage(t *testing.T) { - _, o := options.NewFakeArgoRolloutsOptions() + tf, o := options.NewFakeArgoRolloutsOptions() + defer tf.Cleanup() cmd := NewCmdArgoRollouts(o) cmd.PersistentPreRunE = o.PersistentPreRunE err := cmd.Execute() diff --git a/pkg/kubectl-argo-rollouts/cmd/pause/pause_test.go b/pkg/kubectl-argo-rollouts/cmd/pause/pause_test.go index 0d15ae7340..d86e46beb6 100644 --- a/pkg/kubectl-argo-rollouts/cmd/pause/pause_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/pause/pause_test.go @@ -15,7 +15,8 @@ import ( ) func TestPauseCmdUsage(t *testing.T) { - _, o := options.NewFakeArgoRolloutsOptions() + tf, o := options.NewFakeArgoRolloutsOptions() + defer tf.Cleanup() cmd := NewCmdPause(o) cmd.PersistentPreRunE = o.PersistentPreRunE cmd.SetArgs([]string{}) @@ -36,7 +37,8 @@ func TestPauseCmd(t *testing.T) { }, } - _, o := options.NewFakeArgoRolloutsOptions(&ro) + tf, o := options.NewFakeArgoRolloutsOptions(&ro) + defer tf.Cleanup() fakeClient := o.RolloutsClient.(*fakeroclient.Clientset) fakeClient.ReactionChain = nil fakeClient.AddReactor("patch", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) { @@ -62,7 +64,8 @@ func TestPauseCmd(t *testing.T) { } func TestPauseCmdError(t *testing.T) { - _, o := options.NewFakeArgoRolloutsOptions(&v1alpha1.Rollout{}) + tf, o := options.NewFakeArgoRolloutsOptions(&v1alpha1.Rollout{}) + defer tf.Cleanup() cmd := NewCmdPause(o) cmd.PersistentPreRunE = o.PersistentPreRunE cmd.SetArgs([]string{"doesnotexist", "-n", "test"}) diff --git a/pkg/kubectl-argo-rollouts/cmd/resume/resume_test.go b/pkg/kubectl-argo-rollouts/cmd/resume/resume_test.go index 34d6faa319..d670a745e3 100644 --- a/pkg/kubectl-argo-rollouts/cmd/resume/resume_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/resume/resume_test.go @@ -15,7 +15,8 @@ import ( ) func TestResumeCmdUsage(t *testing.T) { - _, o := options.NewFakeArgoRolloutsOptions() + tf, o := options.NewFakeArgoRolloutsOptions() + defer tf.Cleanup() cmd := NewCmdResume(o) cmd.PersistentPreRunE = o.PersistentPreRunE cmd.SetArgs([]string{}) @@ -39,7 +40,8 @@ func TestResumeCmdSuccess(t *testing.T) { }, } - _, o := options.NewFakeArgoRolloutsOptions(&ro) + tf, o := options.NewFakeArgoRolloutsOptions(&ro) + defer tf.Cleanup() fakeClient := o.RolloutsClient.(*fakeroclient.Clientset) fakeClient.ReactionChain = nil fakeClient.AddReactor("patch", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) { @@ -65,7 +67,8 @@ func TestResumeCmdSuccess(t *testing.T) { } func TestResumeCmdError(t *testing.T) { - _, o := options.NewFakeArgoRolloutsOptions(&v1alpha1.Rollout{}) + tf, o := options.NewFakeArgoRolloutsOptions(&v1alpha1.Rollout{}) + defer tf.Cleanup() cmd := NewCmdResume(o) cmd.PersistentPreRunE = o.PersistentPreRunE cmd.SetArgs([]string{"doesnotexist", "-n", "test"}) diff --git a/pkg/kubectl-argo-rollouts/cmd/version/version_test.go b/pkg/kubectl-argo-rollouts/cmd/version/version_test.go index c29598e06a..9a84f9e311 100644 --- a/pkg/kubectl-argo-rollouts/cmd/version/version_test.go +++ b/pkg/kubectl-argo-rollouts/cmd/version/version_test.go @@ -10,10 +10,11 @@ import ( ) func TestVersionCmd(t *testing.T) { - _, o := options.NewFakeArgoRolloutsOptions() + tf, o := options.NewFakeArgoRolloutsOptions() + defer tf.Cleanup() cmd := NewCmdVersion(o) cmd.PersistentPreRunE = o.PersistentPreRunE - cmd.SetArgs([]string{"version"}) + cmd.SetArgs([]string{}) err := cmd.Execute() assert.NoError(t, err) stdout := o.Out.(*bytes.Buffer).String() @@ -22,10 +23,11 @@ func TestVersionCmd(t *testing.T) { } func TestVersionCmdShort(t *testing.T) { - _, o := options.NewFakeArgoRolloutsOptions() + tf, o := options.NewFakeArgoRolloutsOptions() + defer tf.Cleanup() cmd := NewCmdVersion(o) cmd.PersistentPreRunE = o.PersistentPreRunE - cmd.SetArgs([]string{"version", "--short"}) + cmd.SetArgs([]string{"--short"}) err := cmd.Execute() assert.NoError(t, err) stdout := o.Out.(*bytes.Buffer).String() diff --git a/pkg/kubectl-argo-rollouts/options/options_test.go b/pkg/kubectl-argo-rollouts/options/options_test.go index a078090ad0..829709ca24 100644 --- a/pkg/kubectl-argo-rollouts/options/options_test.go +++ b/pkg/kubectl-argo-rollouts/options/options_test.go @@ -14,7 +14,8 @@ import ( ) func TestExample(t *testing.T) { - _, o := fakeoptions.NewFakeArgoRolloutsOptions() + tf, o := fakeoptions.NewFakeArgoRolloutsOptions() + defer tf.Cleanup() example := ` # do something %[1]s foo @@ -23,7 +24,8 @@ func TestExample(t *testing.T) { } func TestUsageErr(t *testing.T) { - _, o := fakeoptions.NewFakeArgoRolloutsOptions() + tf, o := fakeoptions.NewFakeArgoRolloutsOptions() + defer tf.Cleanup() var cmd = &cobra.Command{ Use: "foo SOMETHING", @@ -42,7 +44,8 @@ func TestUsageErr(t *testing.T) { } func TestAddKubectlFlags(t *testing.T) { - _, o := fakeoptions.NewFakeArgoRolloutsOptions() + tf, o := fakeoptions.NewFakeArgoRolloutsOptions() + defer tf.Cleanup() var cmd = &cobra.Command{ Use: "foo SOMETHING", @@ -68,6 +71,7 @@ func TestAddKubectlFlags(t *testing.T) { func TestRolloutsClientset(t *testing.T) { iostreams, _, _, _ := genericclioptions.NewTestIOStreams() tf := cmdtesting.NewTestFactory().WithNamespace("foo") + defer tf.Cleanup() o := options.NewArgoRolloutsOptions(iostreams) o.RESTClientGetter = tf o.RESTClientGetter.ToRawKubeConfigLoader().Namespace() From 18d3e370799cc704f7a55814c64e3f8811637ff9 Mon Sep 17 00:00:00 2001 From: Jesse Suen Date: Fri, 11 Oct 2019 11:37:30 -0700 Subject: [PATCH 3/3] Switch to large resource classes for circle ci --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1d95a4e47d..b5d387aa3e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,6 +5,7 @@ jobs: docker: # CircleCI Go images available at: https://hub.docker.com/r/circleci/golang/ - image: circleci/golang:1.13.1 + resource_class: large environment: TEST_RESULTS: /tmp/test-results steps: